Я читаю книгу о сетевом программировании на Go. Одна из глав посвящена файлу / etc / services. При исследовании этого файла я заметил, что некоторые популярные записи, такие как HTTP и SSH, которые используют TCP на транспортном уровне, имеют вторую запись для UDP. Например, в Ubuntu 14.04:
ubuntu@vm1:~$ grep ssh /etc/services
ssh 22/tcp # SSH Remote Login Protocol
ssh 22/udp
ubuntu@vm1:~$ grep http /etc/services
http 80/tcp www # WorldWideWeb HTTP
http 80/udp # HyperText Transfer Protocol
Кто-нибудь знает, почему у них есть две записи? Я не верю, что SSH или HTTP когда-либо используют UDP (подтверждается этим вопросом для SSH).
linux
networking
services
protocols
sixty4bit
источник
источник
22/udp
был удален в Debian в 2016 году. IANA по-прежнему перечисляет 22 / udp и перечисляет как udp, так и tcp для большинства протоколов, которые обычно реализуются только на одном из них. Может быть, это означает, что 22 зарезервировано для ssh на тот случай, если кто-нибудь захочет реализовать ssh через udp когда-нибудь?Ответы:
В основном, это потому , что была традиция от пути назад , когда номера портов начали быть назначены через примерно до 2011. См, например, §7.1 «Past принципов» в RFC 6335 :
Конечно, возможно, когда-нибудь они будут выделены, поскольку порты 1023 и ниже являются «системными портами», которые обрабатываются особым образом в большинстве операционных систем, и большая часть этого диапазона назначена в настоящее время.
И, кстати, HTTP / 3 работает по UDP. Хотя он может использовать любой порт UDP, а не только 80/443. Так что на самом деле они все еще не используются.
Что касается Debian, у него
/etc/services
уже было 22 / udp в 1.0 (buzz 1996) .Однако он был удален в этом коммите в 2016 году, впервые выпущен в версии 5.4
netbase
пакета.На момент написания статьи последняя стабильная версия Debian (buster) имеет 5.6 . И последний пакет Ubuntu LTS (18.04, bionic) netbase основан на Debian Netbase 5.4, и вы можете увидеть, что в его списке изменений также упоминается удаление udp / 22 .
источник