Выбрать главу

В качестве завершения данного пункта рассмотрим соответствие уровней стека протокола TCP/IP семиуровневой модели OSI (см. табл. 1.5).

Соответствие уровней стека TCP/IP модели OSI Таблица 1.5

Уровень модели OSI Протокол Уровень стека TCP/IP
7, 6 WWW (HTTP), FTP, TFTP, SMTP, POP, telnet, WAIS, SNMP 1
5, 4 TCP, UDP 2
3 IP, ICMP, RIP, OSPF, ARP 3
2, 1 Ethernet, PPP, SLIP 4

В следующем пункте рассмотрено такое важное понятие протокола TCP/IP как порт. В том же пункте будут рассмотрены структуры пакетов IP и TCP, поскольку рассмотрение этого материала без введения определения порта не имеет смысла.

1.7.6. Порты и демоны

Дальнейшее изложение материала построено, исходя из того, что вы уже знаете, что такое сервер и какие службы вам придется настраивать. В пункте Как устроена книга (п. 1.5) было подробно описано, в каких главах описана настройка той или иной службы. Здесь же давайте рассмотрим некоторые базовые понятия, каковыми являются понятие «демон» и «порт».

Как уже было отмечено, в заголовке каждого пакета указывается IP-адрес отправителя и IP-адрес получателя, а также номер порта. С IP-адресом отправителя и получателя все понятно, осталось сказать, что же такое порт. Дело в том, что сразу несколько приложений на одном компьютере могут осуществлять обмен данными через сеть. При этом, если в качестве адресата указывать только IP-адрес получателя, то приложения, выполняемые на нем, не смогут разобраться кому из них предназначены присланные данные. Чтобы решить эту проблему используется механизм портов. Номер порта — это просто номер программы, которая будет обрабатывать переданные данные. Каждой сетевой программе, которая работает по протоколу TCP/IP, сопоставлен свой номер порта. Например, 80 — это порт WWW-сервера (обычно это Apache), a 53 — это порт системы доменных имен.

Термин демон происходит от английского слова demon (или daemon) и означает программу, которая выполняется в фоновом режиме и дополняет операционную систему каким-нибудь сервисом. Как правило, пользователь не замечает работу демона: он даже и не подозревает, что данная программа запущена. Программа-демон чем-то напоминает резидентные программы в операционной системе DOS. Как видите, нет ничего общего с ужасными существами потустороннего мира. Обычно демон ожидает определенного события, после которого он активизируется и выполняет свою работу. Сетевые демоны ожидают получения пакета с определенным номером порта и, получив его, обрабатывают содержащиеся в нем данные. В книге мы еще неоднократно поговорим об этих «существах», поэтому сейчас не будем подробно останавливаться на них.

1.7.7. Структура пакетов IP и TCP

Вот теперь можно смело перейти к рассмотрению структуры пакетов IP и TCP. Протокол IP не ориентирован на соединение, поэтому не обеспечивает надежную доставку данных. Поля, описание которых приведено в табл. 1.6, представляют собой IP-заголовки и добавляются к пакету при его получении с транспортного уровня.

Структура заголовка IP-пакета Таблица 1.6

Поле Описание
Source IP-address (IP-адрес отправителя) Отправитель пакета
Destination IP-address (IP-адрес получателя) Получатель пакета
Protocol (Протокол) TCP или UDP
Checksum (Контрольная сумма) Значение для проверки целостности пакета
TTL (Time to Live, время жизни пакета) Определяет, сколько секунд дейтаграмма может находиться в сети. Предотвращает бесконечное блуждание пакетов в сети. Значение TTL автоматически уменьшается на одну или более секунд при проходе через каждый маршрутизатор сети
Version Версия протокола IP — 4 или 6. Шестая версия протокола IP рассматривается в гл. 8 (4 бита)
Header Length (Длина заголовка) Минимальный размер заголовка — 20 байт (4 бита)
Type of Service (Тип обслуживания) Обозначение требуемого для этого пакета качества обслуживания при доставке через маршрутизаторы IP-сети. Здесь определяются приоритет, задержки, пропускная способность. (8 бит)
Total Length (Общая длина) Длина дейтаграммы IP-протокола (16 бит)
Identification (Идентификация) Идентификатор пакета. Если пакет фрагментирован (разбит на части), то все фрагменты имеют одинаковый идентификатор (16 бит)
Fragmentation Flags (Фрагментационные флаги) 3 бита для флагов фрагментации и 2 бита для текущего использования
Fragmentation Offset (Смещение фрагмента) Указывает на положение фрагментов относительно начала поля данных IP-пакета. Если фрагментации нет, смещение равно 0x0 (13 бит)
Options and Padding (Опции и заполнение) Опции

Протокол TCP, в отличие от протокола IP, ориентирован на установление соединения и обеспечивает надежную доставку данных. Структура TCP-пакета описана в табл. 1.7.

Структура TCP-пакета Таблица 1.7

Поле Описание
Source port (Порт отправителя) Порт TCP узла-отправителя
Destination Port (Порт получателя) Порт TCP узла-получателя
Sequence Number (Порядковый номер) Номер последовательности пакетов
Acknowledgement Number (Номер подтверждения) Порядковый номер байта, который локальный узел рассчитывает получить следующим
Data Length (Длина данных) Длина TCP– пакета
Reserved (Зарезервировано) Зарезервировано для будущего использования
Flags (Флаги) Описание содержимого сегмента
Window (Окно) Показывает доступное место в окне протокола TCP
Checksum (Контрольная сумма) Значение для проверки целостности пакета
Urgent Pointer (Указатель срочности) При отправке срочных данных (поле Flags) в этом поле задается граница области срочных данных