Инициализация объекта сокета - PullRequest
3 голосов
/ 25 октября 2019

При настройке объектов сокета я использую:

socket.socket()

Что, более подробно написано (и то, что по умолчанию) это:

socket.socket(socket.AF_INET, socket.SOCK_STREAM)

Несколько вопросов по этому:

socket.AF_INET позволяет мне пропустить, чтобы передать хост / порт, то есть адрес ipv4. Почему принято называть его AF_INET (а не, например, socket.IPV4. Что это означает?

Что такое SOCK_STREAM? Означает ли это, что он просто примет * 1015? * запрос или что-то еще? Кроме того, какая разница между использованием SOCK_STREAM и SOCK_RAW?

Ответы [ 2 ]

0 голосов
/ 25 октября 2019

Все имена «заимствованы» из [man7]: SOCKET (2) (man socket).

Что означают различные сокращения:

  • AF_ - семейство адресов
  • _INET - Интернет ( IPv4 - существует в то время). Полный spec : [IETF.Tools]: ИНТЕРНЕТ-ПРОТОКОЛ
  • SOCK_ - Розетка
  • _DGRAM - датаграмма без установления соединения (обычно UDP протокол)
  • _STREAM - поток байтов соединения (обычно TCP протокол)
  • _RAW - Сырой («необработанный») сетевой протокол (или необработанные сокеты: [man7]: RAW (7) )
0 голосов
/ 25 октября 2019

Имя AF_INET было скопировано из Unix, оно сокращенно от "InterNET". Аббревиатура была создана за много лет до того, как был разработан IPv6, был только один Интернет-протокол, поэтому идея назвать его IPV4 не пришла в голову дизайнеру.

AF означает «Семейство адресов». ", что означает, что протокол использует интернет-адреса. Также есть PF, что означает «Семейство протоколов». В то время, когда это было разработано, была идея, что может быть несколько протоколов, которые используют одну и ту же форму адресации, поэтому они разделили эти понятия, но на практике они оказались однозначными, поэтому различие исчезло. (все константы AF_xxx имеют те же значения, что и соответствующие константы PF_xxx).

SOCK_STREAM означает, что сокет передает поток байтов. Альтернатива - SOCK_DGRAM, которая передает сообщения в виде отдельных единиц, называемых «датаграммами».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...