Что такое AF_INET и зачем мне это нужно?

Итак, я начинаю программировать сокеты, и я вижу это AF_INET. Тем не менее, я никогда не видел, чтобы что-то еще использовалось на его месте. Мои преподаватели не так полезны и просто говорят: "Вам просто нужно". Итак, мои вопросы:

  • Какова цель AF_INET?
  • Используется ли что-нибудь еще вместо этого?
    • Если нет, то почему? Возможные изменения в будущем?
    • Если да, то что и почему?

Ответ 1

AF_INET - это семейство адресов, которое используется для обозначения типа адресов, с которыми может взаимодействовать ваш сокет (в данном случае, адресов интернет-протокола v4). Когда вы создаете сокет, вы должны указать его семейство адресов, а затем вы можете использовать только адреса этого типа с помощью сокета. Например, ядро ​​Linux поддерживает 29 других семейств адресов, таких как UNIX (AF_UNIX) и IPX (AF_IPX), а также связь с IRDA и Bluetooth (AF_IRDA и AF_BLUETOOTH, но сомнительно, что вы 'использовать их на таком низком уровне).

По большей части, придерживаться AF_INET для программирования сокетов по сети является наиболее безопасным вариантом. Существует также AF_INET6 для адресов интернет-протокола v6.

Надеюсь, что это поможет,

Ответ 2

Основная цель AF_INET состояла в том, чтобы разрешить другие возможные сетевые протоколы или семейства адресов (AF для семейства адресов; PF_INET - для семейства интернет-протоколов (IPv4)). Например, по-прежнему существует несколько сетей Netware SPX/IPX; существовали другие сетевые системы, такие как DECNet, StarLAN и SNA, не говоря уже о некорректном ISO OSI (Open Systems Interconnection), и они не обязательно использовали теперь повселокальный IP-адрес для идентификации однорангового узла в сетевых соединениях.

Вездесущей альтернативой AF_INET (которая в ретроспективе должна была быть названа AF_INET4) является AF_INET6 для семейства адресов IPv6. IPv4 использует 32-разрядные адреса; IPv6 использует 128-разрядные адреса.

Вы можете увидеть некоторые другие значения, но они необычны. Здесь можно предусмотреть альтернативы и будущие направления. Интерфейс сокетов на самом деле очень общий - это одна из причин, по которой он процветал там, где загромождали другие сетевые интерфейсы.

Жизнь (в основном) стала проще - будьте благодарны.

Ответ 3

Вам нужны такие аргументы, как AF_UNIX или AF_INET, чтобы указать тип адресации сокетов, который вы будете использовать для реализации связи сокета IPC. AF обозначает семейство адресов.

Как и в стандарте BSD Socket (принятом в модуле сокета Python), адреса представлены следующим образом:

  • Для семейства адресов AF_UNIX/AF_LOCAL используется одна строка. Эта опция используется для IPC на локальных машинах, где не требуется IP-адрес.

  • Пара (host, port) используется для семейства адресов AF_INET, где host - это строка, представляющая либо имя хоста в нотации домена Интернета, как "daring.cwi.nl", или адрес IPv4, такой как "100.50". 200.5 ', а порт - целое число. Используется для связи между процессами через Интернет.

AF_UNIX, AF_INET6, AF_NETLINK, AF_TIPC, AF_CAN, AF_BLUETOOTH, AF_PACKET, AF_RDS - это другая опция, которая может использоваться вместо AF_INET.

Этот поток о различиях между AF_INET и PF_INET также может быть полезен.

Ответ 4

Socket характеризуются своим доменным, типом и транспортным протоколом. Общие домены:

  • AF_UNIX: формат адреса - это путь к UNIX

  • AF_INET: формат адреса - номер хоста и порта

(на самом деле существует много других опций, которые могут использоваться здесь для специализированных целей). Обычно мы используем AF_INET для программирования сокетов

Ссылка: http://www.cs.uic.edu/~troy/fall99/eecs471/sockets.html