В качестве завершения данного пункта рассмотрим соответствие уровней стека протокола 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) в этом поле задается граница области срочных данных |