Linux. Алексей Стахнов
TCP/IP представлена в табл. 3.5.
Протоколы межсетевого уровня (интернет)
Протоколы межсетевого уровня (интернет) являются базовыми протоколами в семействе протоколов TCP/IP. Это протоколы TCP/IP, ARP/RARP и ICMP.
Протокол IP
Первоначальный стандарт IP разработан в конце 1970-х годов и не был рассчитан на огромное количество хостов, которое сейчас находится в Интернете. Поэтому в настоящее время утвержден новый стандарт IP (в литературе часто старый стандарт встречается как IPv4, а новый – как IPv6). Однако массового применения он пока не нашел из-за огромного количества программных и аппаратных средств, не способных работать с IPv6, поэтому мы здесь будем рассматривать, в основном, протокол IPv4.
Пакет IP состоит из заголовка и поля данных. Заголовок пакета имеет следующие поля:
• поле Номер версии (VERS) указывает версию протокола IP. Сейчас повсеместно используется версия 4 и готовится переход на версию 6;
• поле Длина заголовка (HLEN) пакета IP. Занимает 4 бита и указывает значение длины заголовка, измеренное в 32-битовых словах. Обычно заголовок имеет длину в 20 байт (пять 32-битовых слов), но при увеличении объема служебной информации эта длина может быть увеличена за счет использования дополнительных байтов в поле Резерв (IP OPTIONS);
• поле Тип сервиса (SERVICE TYPE) занимает 1 байт и задает приоритетность пакета и вид критерия выбора маршрута. Первые три бита этого поля образуют подполе приоритета пакета (PRECEDENCE). Приоритет может иметь значения от 0 (нормальный пакет) до 7 (пакет управляющей информации). Поле Тип сервиса содержит также три бита, определяющие критерий выбора маршрута. Установленный бит D (delay) говорит о том, что маршрут должен выбираться для минимизации задержки доставки данного пакета, бит Т – для максимизации пропускной способности, а бит R – для максимизации надежности доставки;
• поле Общая длина (TOTAL LENGTH) занимает 2 байта и указывает общую длину пакета с учетом заголовка и поля данных;
• поле Идентификатор пакета (IDENTIFICATION) занимает 2 байта и используется для распознавания пакетов, образовавшихся путем фрагментации исходного пакета. Все фрагменты должны иметь одинаковое значение этого поля;
• поле Флаги (FLAGS) занимает 3 бита, оно указывает на возможность фрагментации пакета (установленный бит Do not Fragment, DF – запрещает маршрутизатору фрагментировать данный пакет), а также на то, является ли данный пакет промежуточным или последним фрагментом исходного пакета (установленный бит More Fragments, MF – говорит о том, что пакет переносит промежуточный фрагмент);
• поле Смещение фрагмента (FRAGMENT OFFSET) занимает 13 битов, оно используется для указания в байтах смещения поля данных этого пакета от начала общего поля данных исходного пакета, подвергнутого фрагментации. Используется при сборке/разборке фрагментов пакетов при передачах их между сетями с различными величинами максимальной длины пакета;
• поле Время жизни (TIME ТО LIVE) занимает 1 байт и указывает предельный срок, в течение которого пакет может перемещаться по сети. Время жизни данного пакета измеряется в секундах и задается источником передачи