Протоколы, порты и сокеты
67
Приведенная распечатка представляет содержимое файла /etc/protocols ра-
бочей станции под управлением Solaris 8. Данный перечень номеров никоим
образом не претендует на полноту. Если заглянуть в раздел Protocol Num-
bers веб-сайта организации IANA, можно обнаружить гораздо больше номе-
ров протоколов. Однако система может включать лишь те номера протоко-
лов, которые используются в работе. Даже приведенный пример содержит
больше номеров, чем на практике потребуется данной конкретной рабочей
станции; так, вторая половина таблицы может использоваться только в сис-
темах, работающих по протоколу IPv6. Разумеется, если ваша система не
работает с IPv6 или какими-либо вообще протоколами из перечисленных,
поводов для опасений нет - лишние записи не причинят вреда.
Каков же смысл этой таблицы? Когда поступает дейтаграмма, адрес получа-
теля которой совпадает с локальным IP-адресом, уровень IP обязан передать
дейтаграмму одному из транспортных протоколов, расположенных уровнем
выше. Решение о том, какому протоколу передать дейтаграмму, IP прини-
мает на основе номера протокола, содержащегося в дейтаграмме. Из табли-
цы можно видеть, что если номер протокола для дейтаграммы равен 6, про-
токол Internet доставляет дейтаграмму протоколу TCP; если номер протоко-
ла равен 17, IP доставляет дейтаграмму протоколу UDP. TCP и UDP - это те
две службы транспортного уровня, которые нас интересуют, но все протоко-
лы, перечисленные в первой половине таблицы, напрямую используют
службу доставки дейтаграмм протокола IP. Некоторые из таких протоколов -
ICMP, EGP и GGP - упоминались ранее. О других речь не шла, но, по правде
говоря, второстепенные протоколы не имеют значения для настройки и со-
провождения сети TCP/IP.
Номера портов
Итак, протокол IP передал поступившие данные транспортному протоколу.
Транспортный протокол, в свою очередь, передает данные соответствующе-
му прикладному процессу. Прикладные процессы (известные также в ка-
честве сетевых служб) определяются 16-битными номерами портов. Номер
порта источника (определяет процесс, отправивший данные) и номер порта
получателя (определяет процесс, которому данные предназначены) содер-
жатся в первом слове заголовка каждого сегмента TCP и пакета UDP.
Номера портов до 1024 зарезервированы под широко известные службы (та-
кие как FTP и Telnet) и назначаются организацией IANA. Широко извест-
ные номера портов считаются «привилегированными» и не должны ассоци-
ироваться с пользовательскими процессами. Порты с номерами с 1024 по
49151- «зарегистрированные». IANA по мере возможности ведет реестр
служб, использующих порты указанного интервала, но данный список не
имеет руководящей силы. Номера портов с 49152 по 65 535 считаются «част-
ными». Частные номера портов могут использоваться в любых целях.
Номера портов не уникальны для всего диапазона протоколов транспортно-
го уровня, хотя уникальны для каждого протокола в отдельности. Иными
словами, протоколы TCP и UDP могут использовать - и используют - одина-