Операционная система UNIX
Шрифт:
Номера портов занимают 16 бит и стандартизированы в соответствии с их назначением. Полный список стандартных номеров портов приведен в RFC 1700 "Assigned Numbers". Часть из них в качестве примера приведена в табл. 6.4.
Таблица 6.4. Некоторые стандартные номера портов
Номер порта | Название | Назначение (протокол уровня приложений) |
---|---|---|
7 | echo | Echo |
20 | ftp-data | Передача данных по протоколу FTP |
21 | ftp | Управляющие команды протокола FTP |
23 | telnet | Удаленный
|
25 | smtp | Электронная почта (Simple Mail Transfer Protocol) |
53 | domain | Сервер доменных имен (Domain Name Server) |
67 | bootps | Сервер загрузки Bootstrap Protocol |
68 | bootpc | Клиент загрузки Bootstrap Protocol |
69 | tftp | Передача файлов (Trivial File Transfer Protocol) |
70 | gopher | Информационная система Gopher |
80 | www-http | World Wide Web (HyperText Transfer Protocol) |
110 | pop3 | Электронная почта (POP версии 3) |
119 | nntp | Телеконференции (Network News Transfer Protocol) |
123 | ntp | Синхронизация системных часов (Network Time Protocol) |
161 | snmp | Менеджмент/статистика (Simple Network Management Protocol) |
179 | bgp | Маршрутизационная информация (Border Gateway Protocol) |
User Datagram Protocol (UDP)
UDP является протоколом транспортного уровня и, как следует из названия, обеспечивает логический коммуникационный канал между источником и получателем данных без предварительного установления связи. Другими словами, сообщения, обрабатываемые протоколом не имеют друг к другу никакого отношения с точки зрения UDP. Для передачи датаграмм использует протокол IP и так же, как и последний, не обеспечивает надежности передачи. Поэтому приложения, использующие этот транспортный протокол, должны при необходимости самостоятельно обеспечить надежность доставки, например, путем обмена подтверждениями и повторной передачей недоставленных сообщений.
Однако благодаря минимальной функциональности протокола UDP, передача данных с его использованием вносит гораздо меньшие накладные расходы по сравнению, скажем, с парным ему транспортным протоколом TCP. Размер заголовка UDP, показанного на рис. 6.9, составляет всего 8 октетов.
Рис. 6.9. Заголовок UDP
Первые два поля, каждое из которых занимает по 2 октета, адресуют соответственно порты источника и получателя. Указание порта источника является необязательным и это поле может быть заполнено нулями. Поле
Рис. 6.10. Псевдозаголовок UDP
В качестве примеров протоколов уровня приложений, которые используют в качестве транспортного протокол UDP, можно привести:
Протокол
Протокол синхронизации времени Network Time Protocol, порт 123.
Протокол удаленной загрузки BOOTP, порты 67 и 68 для клиента и сервера соответственно.
Протокол удаленного копирования Trivial FTP (TFTP), порт 69.
Удаленный вызов процедур RPC, порт 111.
Для всех перечисленных протоколов и соответствующих им приложений предполагается, что в случае недоставки сообщения необходимые действия предпримет протокол верхнего уровня (приложение). Как правило, приложения, использующие протокол UDP в качестве транспорта, обмениваются данными, имеющими статистический повторяющийся характер, когда потеря одного сообщения не влияет на работу приложения в целом. Приложения, требующие гарантированной надежной доставки данных, используют более сложный протокол транспортного уровня, в значительной степени дополняющего функциональность протокола IP, — протокол TCP.
Transmission Control Protocol (TCP)
TCP является протоколом транспортного уровня, поддерживающим надежную передачу потока данных с предварительным установлением связи между источником информации и ее получателем. На базе протокола TCP реализованы такие протоколы уровня приложений, как Telnet, FTP или HTTP.
Протокол TCP характеризуется следующими возможностями, делающими его привлекательным для приложений:
Перед фактической передачей данных необходимо установление связи, т.е. запрос на начало сеанса передачи данных источником и подтверждение получателем. После обмена данными сеанс передачи должен быть явно завершен.
Доставка информации является надежной, не допускающей дублирования или нарушения очередности получения данных.
Возможность управления потоком данных для избежания переполнения и затора.
Доставка экстренных данных.
Эти возможности протокола позволяют протоколам верхнего уровня и, соответственно, приложениям, их реализующим, не заботиться о надежности, последовательности доставки и т.д. Таким образом, протоколы приложений, использующие TCP, могут быть значительно упрощены. С другой стороны, это ведет к сложности самого транспортного протокола и, как следствие, к значительным накладным расходам при передаче данных.
TCP-канал представляет собой двунаправленный поток данных между соответствующими объектами обмена — источником и получателем. Данные могут передаваться в виде пакетов различной длины, называемых сегментами. Каждый TCP-сегмент предваряется заголовком, за которым следуют данные, инкапсулирующие протоколы уровня приложения. Вид заголовка TCP-сегмента представлен на рис. 6.11.
Рис. 6.11. Формат TCP-сегмента
Положение каждого сегмента в потоке фиксируется порядковым номером (
И порядковый номер, и номер подтверждения занимают по 32 бита в заголовке TCP-сегмента, таким образом, их максимальное значение составляет (2^3^2 - 1), за которым следует 0. При установлении связи стороны договариваются о начальных значениях порядковых номеров (Initial Sequence Number, ISN) в каждом из направлений. Впоследствии первый октет переданных данных будет иметь номер (ISN+1).
Управление потоком данных осуществляется с помощью метода скользящего окна (sliding window). Каждый TCP-заголовок содержит также поле
Заголовок TCP-сегмента занимает как минимум 20 октетов. Помимо рассмотренных нами порядковых номеров и анонсируемого окна, он содержит ряд других важных полей. Заголовок начинается с двух номеров портов, адресующих логические процессы на обоих концах виртуального канала. Далее следуют порядковый номер и номер подтверждения.
Поле смещения (
Значение этого поля измеряется в 32-битных словах. Таким образом, при минимальном размере заголовка поле