Сетевое программирование в .NET, страница 2

Value

Protocol

0800

IP

0806

ARP

0BAD

Banyan VINES

8005

HP Probe

8035

Reverse ARP

809B

AppleTalk

80D5

IBM SNA

8137

Novell

8138

Novell

814C

Raw SNMP

86DD

IPv6

876B

TCP/IP compression

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

Следующий слой в иерархии протоколов IP-пакета имеет достаточно сложный формат и определяет множество параметров пакета данных. Он имеет переменную длину, но формат 20-ти байт определен, как показано ниже.

Field

Bits

Description

Version

4

Версия формата заголовка (IP header). Мы рассматриваем версию 4

Header Length

4

Размер заголовка IP-пакета (octets)

Type of Service

8

Запрашиваемый пакетом класс обслуживания (Quality of Service—QoS)

Total Length

16

Длина всего IP-пакета (octets)

Identification

16

Идентификатор пакета (ID value)

Flags

3

Флаг, указывающий разбит-ли пакет на части (fragmented)

Fragment offset

13

Расположение фрагмента в пакете

Time to Live (TTL)

8

Максимальное время жизни пакета в сети

Protocol

8

Тип протокола следующего уровня

Header Checksum

16

Контрольная сумма IP-заголовка

Source Address

32

Адрес отправителя

Destination Address

32

Адрес получателя

Options

variable

Поля по выбору (Optional fields). Они определяют другие параметры пакета

Рассмотрим некоторые, наиболее важные поля IP-слоя. Хотя рассмотренные Ethernet-адреса уже позволяют уникально идентифицировать устройства в локальной (LAN) сети, они не годятся для идентификации удаленных устройств. Например, информация в Ethernet-адресе не позволяет определить часть сети, которой он принадлежит. Схема адресации, применяемая в протоколе IP, использует части 32-битного адреса (см. в таблице Адрес отправителя и Адрес получателя) для уточнения параметров адреса. IP-адрес разбит на три части:

¨  Верхние биты идентифицируют схему,

¨  Адрес подсети (сети в рамках общей сети).

¨  Адрес устройства в рамках подсети.

Цепочка верхних битов обрывается нулем и может иметь длину от 1 до 4 бит. Она определяет схему (формат остальных бит 32-битового адреса). Вторая часть адреса уникально идентифицирует подсеть (subnet). Она используется маршрутизаторами (routers) для определения оптимального маршрута. Третья часть уникальным образом идентифицирует узел (устройство) в рамках выбранной части сети (подсети). IP-адрес представлен так, чтобы по его виду можно было определить к какому из 4-х классов он принадлежит.

Расшифровка IP-адреса (IP address specification)

Рассмотрим, как интерпретируются поля адреса (32-битовый адрес отправителя и 32-битовый адрес получателя в предыдущей таблице). Как было упомянуто, сеть представляет собой объединение более мелких сетей (subnets). Все подсети имеют разные коды, но всем устройствам одной подсети соответствует одна и та же часть сетевого адреса. Все 32-битовые IP-адреса принято разделять на 4 класса, которым соответствует свой собственный формат.

High Bits

Network Address

Host Address

Type

0

7 bits

24 bits

Class A

10

14 bits

16 bits

Class B

110

21 bits

8 bits

Class C

1110

0 bits

28 bits

Class D

Местоположение 0 в старших 4 битах определяет класс IP-адреса. Рассмотрим старший байт. Двоичному коду 10000000—соответствует десятичное число 128, коду 11000000—192, а коду 11100000—224. При задании IP-адресов пользуются этими десятичными представлениями реальных двоичных числовых кодов. С учетом этого: