Приложение 1. ТРЕБОВАНИЯ К РЕАЛИЗАЦИИ ПРОТОКОЛОВ ПЕРЕДАЧИ ПАКЕТОВ IP
1. Обмен данными осуществляется пакетами, имеющими структуру и формат согласно таблице N 1 для протокола IPv4 или таблице N 7 для протокола IPv6.
Таблица N 1
┌───────────────────────────────────────┬──────────────────────────────────────┐ │ Наименование поля │ Длина поля, бит │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Версия │ 4 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Длина заголовка │ 4 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Тип сервиса │ 8 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Полная длина │ 16 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Идентификатор │ 16 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Флаги │ 3 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Смещение фрагмента │ 13 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Время жизни │ 8 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Тип протокола следующего уровня │ 8 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Контрольная сумма заголовка │ 16 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │IP-адрес источника │ 32 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │IP-адрес назначения │ 32 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │IP-опции │ переменная длина │ │(режим обработки пакета) │ │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Заполнение │ переменная длина │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Данные │ Полная длина пакета с данными не │ │ │ превышает 65535 октетов │ ├───────────────────────────────────────┴──────────────────────────────────────┤ │ Примечание: Минимальная длина заголовка пакета 20 байт, максимальная длина│ │заголовка пакета 60 байт. │ └──────────────────────────────────────────────────────────────────────────────┘
1.1. Поле "Версия" содержит номер версии протокола IP.
1.2. Поле "Длина заголовка" содержит значение длины заголовка пакета в словах (одно слово - 32 бита).
1.3. Поле "Тип сервиса" содержит подполя, указанные в таблице N 2.
Таблица N 2
┌───────────────────────────────────────┬──────────────────────────────────────┐ │ Наименование подполя │ Длина, бит │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Приоритетность (Precedence) │ 3 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Задержка (Delay) │ 1 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Пропускная способность (Throughput) │ 1 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Достоверность (Relibility) │ 1 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Резервные биты (Reserved) │ 2 │ └───────────────────────────────────────┴──────────────────────────────────────┘
Кодирование поля "Тип сервиса" выполняется в соответствии с правилами, приведенными в таблице N 3.
Таблица N 3
┌───────────┬──────────────────────────────────────────────────────────────────┐ │ Разряд │ Параметр │ ├───────────┼──────────────────────────────────────────────────────────────────┤ │ 0 │Зарезервировано │ ├───────────┼──────────────────────────────────────────────────────────────────┤ │ 1 │Значение "0" - пакет можно фрагментировать, значение "1" - пакет │ │ │нельзя фрагментировать │ ├───────────┼──────────────────────────────────────────────────────────────────┤ │ 2 │Значение "0" - последний фрагмент, значение "1" - еще фрагменты │ └───────────┴──────────────────────────────────────────────────────────────────┘
Значение разрядов 0 - 2 игнорируется, если не поддерживается управление приоритетом передачи пакетов.
1.4. Поле "Длина пакета IP" содержит значение длины пакета в байтах, включая заголовок и данные.
1.5. Поле "Идентификатора пакета" используется процедурой фрагментации при сборке (разборке) пакета для определения последовательности передаваемых фрагментов.
1.6. Поле "Флаги" используется процедурой фрагментации для управления последовательностью сборки фрагментов пакета. Поле "Флаги" содержит подполя, указанные в таблице N 2.
Кодирование поля "Флаги" выполняется в соответствии со следующими правилами, приведенными в таблице N 4.
Таблица N 4
┌─────────────────────────────────────────────┬────────────────────────────────┐ │ Наименование подполя │ Длина, бит │ ├─────────────────────────────────────────────┼────────────────────────────────┤ │Резервный бит (Reserved) │ 1 │ ├─────────────────────────────────────────────┼────────────────────────────────┤ │Возможность фрагментирования (DF) │ 1 │ ├─────────────────────────────────────────────┼────────────────────────────────┤ │Указатель последнего фрагмента (MF) │ 1 │ └─────────────────────────────────────────────┴────────────────────────────────┘
1.7. Поле "Смещение фрагмента" используется для указания смещения данного фрагмента относительно первого фрагмента в блоках фрагментации (8 байт). Для первого фрагмента смещение устанавливается в "0".
1.8. Поле "Время жизни" содержит текущее значение счетчика максимально допустимого времени пребывания пакета в сети в секундах. При значении поля, равном "0", пакет удаляется.
1.9. Поле "Протокол" содержит стандартизированный код протокола следующего уровня.
1.10. Поле "Контрольная сумма заголовка" (далее - КСЗ) содержит контрольную сумму заголовка. При любом изменении содержания КСЗ пересчитывается.
1.11. В поле "Адрес источника пакета" указывается IP-адрес источника пакета.
1.12. В поле "Адрес получателя пакета" указывается IP-адрес получателя пакета.
1.13. При наличии поля "Режим обработки пакета" поддерживается два способа кодирования:
1) поле длиной 1 байт;
2) комбинация трех подполей: тип режима (1 байт), счетчик длины поля режима (1 байт), данные режима (переменная длина).
Подполе типа режима включает в себя:
1) флаг (1 бит);
2) класс режима (2 бита);
3) номер режима (5 бит).
При установке бита флага в значение "1" копируется данное поле при фрагментации во все фрагменты, в значение "0" - не копируется.
Установка битов класса режима соответствует следующим значениям:
1) "0" - управление;
2) "1" - зарезервировано;
3) "2" - отладка и измерение;
4) "3" - зарезервировано.
В "Режиме обработки пакета" предусмотрена поддержка классов режимов, приведенных в таблице N 5.
Таблица N 5
┌───────────────┬──────────────────────────────────────────────────────────────┐ │Класс/N режима │ Описание класса │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ 0/0 │Конец списка режимов. Длина поля режима 1 байт, поле счетчика │ │ │длины поля режима отсутствует │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ 0/1 │Нет действий. Длина поля режима 1 байт, поле счетчика длины │ │ │поля режима отсутствует │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ 0/2 │Безопасность. Длина поля режима 11 байт │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ 0/3 │Свободная маршрутизация от источника. Длина поля режима │ │ │переменная │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ 0/9 │Строгая маршрутизация от источника. Длина поля режима │ │ │переменная │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ 0/7 │Записанный маршрут. Длина поля режима переменная │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ 0/8 │Идентификатор потока. Длина поля режима 4 байта │ ├───────────────┼──────────────────────────────────────────────────────────────┤ │ 2/4 │Отметка времени Internet. Длина поля режима переменная │ └───────────────┴──────────────────────────────────────────────────────────────┘
1.14. При наличии поля "Дополнения до границы заголовка" для выравнивания границы заголовка по длине, кратной 32 бит, свободные позиции заполнены нулевыми битами.
2. В протоколе IP реализованы две обязательные основные процедуры - адресация и фрагментация. Данные для этих процедур содержатся в заголовке пакета.
2.1. Процедура IP-адресации поддерживается для сетей трех классов с форматами, приведенными в таблице N 6.
Таблица N 6
┌───────────────────┬───────────────────────────────────────┬──────────────────┐ │ Старшие разряды │ Формат │ Класс сети │ │ ├───────────────────┬───────────────────┤ │ │ │ адрес сети │ адрес узла │ │ ├───────────────────┼───────────────────┼───────────────────┼──────────────────┤ │ 0 │ 7 бит │ 24 бита │ A │ ├───────────────────┼───────────────────┼───────────────────┼──────────────────┤ │ 10 │ 14 бит │ 16 бит │ B │ ├───────────────────┼───────────────────┼───────────────────┼──────────────────┤ │ 110 │ 21 бит │ 8 бит │ C │ ├───────────────────┼───────────────────┴───────────────────┴──────────────────┤ │ 111 │ Для режима расширенной адресации │ └───────────────────┴──────────────────────────────────────────────────────────┘
Не допускается нулевое значение в поле адреса сети для межсетевой маршрутизации.
2.2. Процедура фрагментации:
1) в случае если пакет IP подлежит передаче без фрагментации, поле данных пакета разделяется на фрагменты с выравниванием по длине блоков фрагментации (8 байт). Заголовок пакета процедуре фрагментации не подвергается;
2) фрагментация пакетов длиной 68 байт и менее не допускается;
3) следующие поля заголовка пакета могут подвергаться обработке при фрагментации:
а) поле режимов;
б) поле флагов;
в) смещение фрагмента;
г) длина заголовка;
д) длина пакета;
е) контрольная последовательность заголовка;
4) в случае, когда в заголовке пакета выставлен флаг, запрещающий его фрагментацию, пакет исключается из процесса передачи. Установка данного флага предусматривается, когда ресурсы на приеме не позволяют поддерживать процедуру обратной сборки пакета;
5) контрольная последовательность предусматривается только для поля заголовка пакета.
3. Структура и формат пакета для протокола IPv6 приведены в таблице N 7.
Таблица N 7
┌───────────────────────────────────────┬──────────────────────────────────────┐ │ Поле │ Длина (бит) │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Версия │ 4 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Приоритет │ 4 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Метка потока │ 24 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Размер поля данных │ 16 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Следующий заголовок │ 8 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Предельное число шагов │ 8 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Адрес отправителя │ 128 │ ├───────────────────────────────────────┼──────────────────────────────────────┤ │Адрес получателя │ 128 │ └───────────────────────────────────────┴──────────────────────────────────────┘
3.1. Типы адресов:
Используются три типа адресов:
1) unicast - адрес одиночного получателя (пакет доставляется только по указанному адресу);
2) anycast - адрес набора получателей (пакет доставляется одному из интерфейсов с указанным адресом);
3) multicast - адрес группы получателей (пакет доставляется всем интерфейсам с указанным адресом).
Отличительной особенностью адреса последнего типа является значение "FF" первого байта адреса.
3.2. Все пакеты, принадлежащие одному потоку, посылаются одним отправителем, имеют один и тот же адрес места назначения, приоритет и метку потока.
3.3. Коды от "0" до "7" используются для задания приоритета трафика, для которого отправитель осуществляет контроль перегрузки.
3.4. Значения с "8" до "15" обозначают трафик, для которого не производится снижение потока в ответ на сигнал перегрузки.
3.5. Заголовки расширения размещаются между заголовком IP и заголовком верхнего уровня пакета.