Сетевое программирование в .NET. Расшифровка IP-адреса (IP address specification). Обеспечение надежности доставки пакетов, страница 4

¨  Единица в этом бите (Don’t Fragment flag) указывает, что пакет не фрагментирован.

¨  Этот бит (More Fragment flag) указывает, что пакет фрагментирован и следует ждать продолжения.

Поле Fragment offset указывает местоположение фрагмента в исходном (original) пакете.

Поле класса обслуживания (Type of Service)

Это поле IP-пакета (размером 1 байт) идентифицирует требуемое качество обслуживания QoS (Quality of Service). Оно используется для маркировки отдельных пакетов в общем потоке и сообщает, что данный пакет имеет определенный приоритет по сравнению с другими. Раньше это поле почти не использовалось, но теперь, особенно в технологии асинхронной передачи (ATM—Asynchronous transfer mode), оно приобретает большое значение. Приоритет отдается пакетам, несущим видео- или аудио-информацию. Нулевое значение соответствует приоритету normal, то есть обычным (routine) данным, другие значения управляют приоритетом таким образом:

¨  3 бита определяют приоритет, как показано в таблице ниже,

¨  1 бит задает тип задержки (delay): normal, или low,

¨  1 бит задает пропускную способность (throughput): normal, или high,

¨  1 бит задает уровень надежности (reliability): normal, или high,

¨  2 бита зарезервированы для будущего использования.

Bits

Priority

000

Routine

001

Priority

010

Immediate

011

Flash

100

Flash Override

101

CRITIC/ECP

110

Internetwork Control

111

Network Control

Поле Protocol

Однобайтовое поле Protocol задает протокол следующего слоя IP-пакета. Стандарт IANA определяет 135 значений этого поля, но на практике используется лишь небольшое подмножество, показанное в следующей таблице.

Value (Decimal)

Description

1

Internet Control Message (ICMP)

2

Internet Group Message (IGP)

6

Transmission Control (TCP)

8

Exterior Gateway (EGP)

9

Interior Gateway (Cisco IGP)

17

User Datagram (UDP)

88

Cisco EIGRP

Мы рассмотрим лишь два из них: TCP (protocol 6) и UDP (protocol 17).

Слой TCP-заголовка

Протокол TCP (Transmission Control Protocol) добавляет в пакет информацию о соединении между двумя устройствами сети (end-to-end connection). Это позволяет программам создавать соединение. TCP гарантирует, что данные будут либо надежно доставлены получателю, либо отправитель получит сообщение об ошибке в сети, которая помешала это сделать. Каждое TCP-соединение (или сессия) влечет некоторое количество вспомогательных (лишних) пакетов, которые помогают установить соединение. После этого данные передаются без необходимости (со стороны приложения) постоянно проверять потерю или нарушение порядка данных.

TCP-заголовок содержит множество полей, каждое из которых ассоциировано с конкретной функцией TCP-сессии. Все функции полезно разделить на такие категории:

¨  Отслеживание множества (возможных?) соединений между source and destination ports,

¨  Отслеживание порядка следования, а также запросов на повторение передачи потерянных пакетов (sequence and acknowledgement numbers),

¨  Открытие и закрытие потоков (connection streams) между узлами сети (TCP flags).

В настоящее время используются две версии TCP/IP Ipv4 и Ipv6. Версия 4 базируется на 4-байтной (32-разрядной) схеме адресации. Именно эта версия TCP/IP по умолчанию используется в операционной системе Windows всех версий. Версия 6 базируется на 16-байтной (128-разрядной) схеме адресации.

Неразумная политика в начале процесса раздачи и продажи адресов (многие компании скупали целые диапазоны адресов) привела к тому, что из 4 миллиардов адресов, предоставляемых версией 4, почти все выданы. Версия 6 протокола допускает невообразимое количество адресов 2^128 ≈ 10^38. Оно позволяет выделить каждому человеку на планете более 10^28 адресов. Однако переход на новый стандарт сопряжен с некоторыми трудностями и проходит не так быстро, как хотелось бы.