Приложение 8. ТРЕБОВАНИЯ К ПАРАМЕТРАМ ПРОТОКОЛОВ IP, UDP, TCP

Приложение N 8
к Правилам применения
оборудования коммутации сетей
подвижной радиотелефонной
связи. Часть VII. Правила
применения оборудования
коммутации стандарта LTE

ТРЕБОВАНИЯ К ПАРАМЕТРАМ ПРОТОКОЛОВ IP, UDP, TCP

1. Требования к параметрам протокола IP.

1.1. Формат заголовка пакета IP версии 4 (далее - IPv4) и перечень поддерживаемых полей приведен в таблице N 1.

1.1.1. Минимальная длина заголовка пакета составляет 20 байт, а максимальная длина - 60 байт при максимальной длине пакета в 65 535 байт.

1.1.2. Поле "Версия" содержит номер версии протокола IP.

1.1.3. Поле "Длина заголовка" содержит значение длины заголовка пакета в словах.

1.1.4. Поле "Тип обслуживания" содержит код набора параметров качества обслуживания:

1) приоритетность;

2) задержка;

3) пропускная способность;

4) надежность.

Таблица N 1. Формат заголовка пакета IPv4

N поля
Название
Длина поля (бит)
1
2
3
1
Версия
4
2
Длина заголовка
4
3
Тип обслуживания
8
4
Длина пакета IP
16
5
Идентификатор пакета IP
16
6
Флаги
3
7
Смещение фрагмента
13
8
Счетчик допустимого времени пребывания пакета в сети
8
9
Тип протокола следующего уровня
8
10
Контрольная последовательность заголовка
16
11
Адрес источника пакета
32
12
Адрес получателя пакета
32
13
Режим обработки пакета
переменная длина
14
Поле дополнения до границы заголовка
переменная длина

1.1.5. Кодирование поля "Тип обслуживания" приведено в таблице N 2.

Таблица N 2. Кодирование поля "Тип обслуживания"

Разряд
Параметр
0 - 2
Приоритетность
3
Значение "0" - нормальная задержка,
значение "1" - малая задержка
4
Значение "0" - нормальная пропускная способность,
значение "1" - низкая пропускная способность
5
Значение "0" - нормальная надежность,
значение "1" - высокая надежность
6 - 7
Зарезервировано

Значения разрядов 0 - 2 игнорируется, если оборудование не поддерживает управление приоритетом при передаче пакетов.

1.1.6. Поле "Длина пакета IP" содержит значение длины пакета IP в байтах, включая заголовок и данные. Возможность обрабатывать пакеты длиной менее 576 байт является обязательным требованием. В отдельных случаях допускается длина пакета до 65 535 байт.

1.1.7. Поле "Идентификатор пакета IP" используется процедурой фрагментации при сборке или разборке пакета для определения последовательности передаваемых фрагментов.

1.1.8. Поле "Флаги" используется процедурой фрагментации для управления последовательностью сборки фрагментов пакета. Кодирование разрядов поля "Флаги" приведено в таблице N 3.

Таблица N 3. Кодирование разрядов поля "Флаги"

Разряд 0
Разряд 1
Разряд 2
Зарезервировано, устанавливается в "0"
"0"
"1"
"0"
"1"
Пакет можно фрагментировать
Пакет нельзя фрагментировать
Последний фрагмент
Еще фрагменты

1.1.9. Поле "Смещение фрагмента" используется для указания смещения данного фрагмента относительно первого фрагмента в блоках фрагментации (8 байт). Для первого фрагмента смещение устанавливается в "0".

1.1.10. Поле "Счетчик допустимого времени пребывания пакета в сети" содержит текущее значение счетчика максимально допустимого времени пребывания пакета в сети в секундах. Если в поле находится значение "0", то пакет удаляется.

1.1.11. Поле "Тип протокола следующего уровня" содержит стандартизированный код протокола следующего уровня.

1.1.12. Поле "Контрольная последовательность заголовка" (далее - КПЗ) содержит контрольную последовательность заголовка. При любом изменении содержания заголовка КПЗ пересчитывается.

1.1.13. В поле "Адрес источника пакета" указывается IP-адрес источника пакета.

1.1.14. В поле "Адрес получателя пакета" указывается IP-адрес получателя пакета.

1.1.15. Поддерживаются два способа кодирования поля "Режим обработки пакета":

1) поле длиной 1 байт,

2) комбинация трех подполей: тип режима (1 байт), счетчик длины поля режима (1 байт), данные режима (переменная длина).

Подполе типа режима включает: флаг (1 бит), класс режима (2 бита), номер режима (5 бит).

При установке флага в значение "1" оборудование копирует данное поле при фрагментации во все фрагменты, в значение "0" - не копирует.

1.1.16. Для выравнивания границы заголовка по длине, кратной 32 битам, используется "Поле дополнения до границы заголовка". Свободные позиции заполняются нулевыми битами.

1.2. Формат заголовка пакета IP версии 6 (далее - IPv6) и перечень поддерживаемых полей приведен в таблице N 4. Минимальная длина заголовка пакета составляет 40 байт, длина пакета составляет до 1280 байт или выше (до 1500 байт) без фрагментации.

Таблица N 4. Формат заголовка пакета IPv6

Поля заголовка
N поля
Название
Длина поля (бит)
1
Версия
4
2
Класс трафика
8
3
Метка потока
20
4
Длина полезной нагрузки
16
5
Следующий заголовок
8
6
Лимит переходов
8
7
Адрес отправителя
128
8
Адрес получателя
128

1.2.1. Поле "Версия" содержит номер версии протокола IP.

1.2.2. Поле "Класс трафика" эквивалентно по назначению полю "Тип обслуживания" протокола IPv4 и используется для назначения и различия разных классов или приоритетов передачи пакетов.

1.2.3. Поле "Метка потока" используется для выделения последовательностей пакетов, для которых запрашивается специальная обработка пакетов IP, например, предоставление качества обслуживания, отличающегося от принятого, или обслуживание в реальном времени. Оборудование, не поддерживающее функции поля "Метка потока", устанавливает значение данного поля в "0" при отправке пакета, передает дальше данное поле без изменений при пересылке пакета и игнорирует данное поле при получении пакета.

1.2.4. Поле "Длина полезной нагрузки" содержит значение длины полезной нагрузки пакета IPv6 в байтах.

1.2.5. Поле "Следующий заголовок" определяет тип заголовка, следующего непосредственно за основным, и использует те же значения разрядов, что и поле "Тип протокола следующего уровня" протокола IPv4.

1.2.6. В протоколе IPv6 информация уровня Интернет сети передачи данных кодируется в отдельных дополнительных заголовках, которые размещаются между заголовком IPv6 и заголовком следующего уровня в пакете.

1.2.7. Каждый дополнительный заголовок является целым числом и имеет длину, кратную 8 байтам.

1.2.8. В рамках протокола IPv6 определены следующие шесть дополнительных заголовков:

"Специальные параметры обработки пакетов";

"Маршрутизация";

"Фрагментация";

"Дополнительные параметры для пункта назначения";

"Аутентификация";

"Информация для обеспечения конфиденциальности данных путем шифрования".

1.2.9. Значение поля "Лимит переходов" основного заголовка IPv6 уменьшается на единицу в каждом пункте, который участвует в пересылке пакета. Пакет удаляется, если значение этого поля уменьшается до нуля.

1.2.10. В поле "Адрес отправителя" основного заголовка IPv6 указывается IP-адрес отправителя пакета.

2. Протокол UDP.

2.1. Номер протокола UDP в стеке протоколов IP - 17.

2.2. Формат заголовка пакета протокола UDP приведен в таблице N 5.

Таблица N 5. Формат заголовка пакета протокола UDP

N
Поле
Число октетов
1
Source Port
2
2
Destination Port
2
3
Length
2
4
Checksum
2

Далее следуют октеты пользовательских данных.

2.3. Поле "Source Port (порт отправителя)" является необязательным и (когда используется) показывает номер порта передающего процесса. При наличии данного поля отклики адресуются на тот же порт. Если номер порта не задан, значение поля равно "0".

2.4. Поле "Destination Port" имеет значение в контексте адресации отдельного соединения.

2.5. Поле "Length" указывает размер (в октетах) пользовательской дейтаграммы с учетом заголовка и данных. Минимальное значение поля длины составляет "8" (длина заголовка в октетах).

2.6. Поле "Checksum" содержит контрольную сумму, вычисляемую как поразрядное дополнение до единицы суммы поразрядных дополнений до единицы всех 16-битовых слов псевдозаголовка из заголовка IP, заголовка UDP и данных, дополненных при необходимости справа нулями для выравнивания по 2-октетной границе. Псевдозаголовок, предшествующий заголовку UDP, содержит адреса отправителя и получателя, а также размер пакета UDP. Эта информация позволяет предотвратить ошибочную маршрутизацию дейтаграмм. Если рассчитанное значение контрольной суммы равно "0", все биты поля заполняются единицами (эквивалент "0" в арифметике с дополнением до "1"). Передача нулевого значения контрольной суммы означает, что на передающей стороне контрольная сумма не была рассчитана (используется для отладки или для протоколов вышележащих уровней, которые не используют контрольную сумму).

3. Протокол TCP.

3.1. Номер протокола TCP в стеке протоколов IP - 6.

3.2. Формат заголовка пакета протокола TCP приведен в таблице N 6.

Таблица N 6. Формат заголовка пакета протокола TCP

N
Поле
Число бит
1
2
3
1
Source Port
16
2
Destination Port
16
3
Sequence Number
32
4
Acknowledgment Number
32
5
Data Offset
4
6
Reserved
6
7
Control Bits
6
8
Window
16
9
Checksum
16
10
Urgent Pointer
16
11
Options
12
Padding

Далее следуют октеты пользовательских данных.

3.3. "Source Port" - номер порта отправителя.

3.4. "Destination Port" - номер порта назначения.

3.5. "Sequence Number" - порядковый номер. Порядковый номер первого октета данных в сегменте при отсутствии флага SYN. Если в сегменте присутствует бит SYN, поле номера содержит значение начального порядкового номера (ISN), а первый октет данных имеет номер ISN + 1.

3.6. "Acknowledgment Number" - номер подтверждения. Если бит ACK установлен, это поле содержит значение следующего порядкового номера, который отправитель сегмента ожидает получить. После организации соединения это значение передается всегда.

3.7. "Data Offset" - смещение данных. Число 32-битовых слов в заголовке TCP. Это значение указывает начало данных в сегменте. Заголовок TCP (даже при наличии опций) имеет длину, кратную 32 битам.

3.8. "Reserved" - резервное поле. Зарезервировано для использования в будущем и имеет нулевое значение.

3.9. "Control Bits" - биты управления:

URG - указывает на значимость поля Urgent Pointer;

ACK - указывает на значимость поля Acknowledgment Number;

PSH - функция Push;

RST - сброс (Reset) соединения;

SYN - синхронизация порядковых номеров;

FIN - у отправителя больше нет данных.

3.10. "Window" - окно. Число октетов данных, начиная с указанного в поле подтверждения, которые отправитель данного сегмента ожидает принять.

3.11. "Checksum" - контрольная сумма. Контрольная сумма представляет собой число единиц в заголовке и данных, просуммированное по модулю "16" с добавлением "1". Если сегмент содержит в заголовке и данных нечетное число октетов, справа добавляется октет нулей для выравнивания по 16-битовой границе. Биты заполнения не передаются как часть сегмента и используются только для расчета контрольной суммы. При расчете контрольной суммы значение поля "Checksum" принимается нулевым. Контрольная сумма учитывает также 96-битовый псевдозаголовок, предшествующий заголовку TCP. Этот псевдозаголовок содержит адреса отправителя и получателя, тип протокола и длину опций TCP. Перечисленные поля помогают защитить TCP против сегментов с ошибочной маршрутизацией. Эта информация транспортируется протоколом IP и передается через интерфейс TCP-сетевой уровень в качестве аргументов или результатов вызовов из TCP на уровень IP. Поле "Длина опций TCP" содержит размер заголовка TCP и поля данных в октетах (это не явно передаваемое, а расчетное значение), 12-октетный псевдозаголовок при расчете длины не учитывается.

3.12. "Urgent Pointer" - указатель срочности. Это поле содержит указатель на срочные данные - позитивное смещение начала таких данных от порядкового номера данного сегмента. Это поле используется только для сегментов с установленным флагом URG.

3.13. "Options" - опции.

Опции размещаются в конце заголовка TCP и могут занимать целое число октетов. Все опции учитываются при расчете контрольной суммы. Опции начинаются на любой границе октета. Существует два варианта форматирования опций:

1) однооктетное поле признака опций;

2) однооктетное поле признака опций, поле размера опций (1 октет) и собственно опции.

Поле размера опций учитывает и 2 октета полей признака опций и самого поля длины, а также размер опций, как таковых. Поле опций может быть короче, чем указывает поле смещения данных. Неиспользуемые биты поля опций заполняются нулями. В протоколе TCP используются следующие опции:

End of Option List (0) - этот код говорит о завершении списка опций. Конец списка опций может не совпадать с концом заголовка TCP, заданным полем Data Offset. Код используется как индикатор завершения всех опций, а не какой-то конкретной, и использование его требуется лишь в тех случаях, когда конец опций не совпадает с концом заголовка TCP.

No-Operation (1) - этот код используется между опциями (например, для их выравнивания по границе слова).

Maximum Segment Size (2) - максимальный размер сегмента. Эта опция имеет длину 16 битов. Если эта опция присутствует, она задает максимальный размер принимаемого сегмента для той стороны TCP, которая передает данный сегмент. Это поле передается только с начальным запросом организации соединения (сегмент с флагом SYN). Если эта опция не задана, допускается использование сегментов любого размера.

3.14. "Padding" - заполнение. Поле имеет переменную длину. Заполнение заголовка TCP используется для выравнивания размера заголовка по 32-битовой границе. Для заполнения неиспользуемых битов служит "0".

3.15. Состояния соединения - LISTEN, SYN-SENT, SYN-RECEIVED, ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, LAST-ACK, TIME-WAIT и фиктивное состояние CLOSED.

LISTEN - ожидание запроса на соединение от любого удаленного TCP и порта.

SYN-SENT - ожидание соответствующего запроса на соединение после передачи своего запроса.

SYN-RECEIVED - ожидание подтверждения соединения после передачи и приема запросов на организацию соединения.

ESTABLISHED - соединение действует и принятые данные могут быть доставлены пользователю. Это нормальное состояние для процесса обмена данными через соединение.

FIN-WAIT-1 - ожидание запроса на разрыв соединения от удаленного TCP или подтверждения для ранее переданного запроса на разрыв соединения.

FIN-WAIT-2 - ожидание запроса на разрыв соединения от удаленного TCP.

CLOSE-WAIT - ожидание запроса на разрыв соединения от локального пользователя.

CLOSING - ожидание подтверждения от удаленного TCP для запроса на разрыв соединения.

LAST-ACK - ожидание подтверждения для запроса на разрыв соединения, переданного удаленному TCP (это подтверждение включается в запрос на разрыв соединения от удаленной стороны).

TIME-WAIT - ожидание пока пройдет достаточно времени, чтобы быть уверенным в приеме удаленным TCP подтверждения для его запроса на разрыв соединения.

CLOSED - соединения уже нет (разорвано).

Соединение TCP переходит от одного состояния к другому в ответ на события, к числу которых относятся пользовательские вызовы, входящие сегменты и тайм-ауты.

3.16. Пользовательские команды протокола TCP приведены в таблице N 7.

Таблица N 7. Пользовательские команды протокола TCP

N
Команда
1
OPEN
2
SEND
3
RECEIVE
4
CLOSE
5
STATUS
6
ABORT