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

¨  Классу A соответствуют все сетевые адреса, расположенные в диапазоне: от 000.xxx до 127.xxx,

¨  Классу B соответствуют адреса, расположенные в диапазоне: от 128.xxx до 191.xxx,

¨  Классу С — от 192.xxx до 223.xxx,

¨  Классу D — от 224.xxx до 254.xxx.

¨  Класс D делит свой диапазон на 2 группы: multicast addresses и experimental networks. Адреса от 224.xxx до 239.xxx принадлежат группе multicast-адресов, адреса от 240.xxx до 255.xxx—группе эксперментальных сетей.

Всем устройствам одной подсети соответствуют адреса с некоторой общей частью. Ее принято выделять с помощью маски. Допустим, что всем устройствам какой-то одной подсети соответствует маска 255.255.0.0. Здесь верхние 2 байта (255.255) определяют общий адрес подсети. Теперь рассмотрим два сетевых адреса: 130.100.1.6 и 130.100.10.5. Четыре байта каждого из них записаны с помощью 4-х десятичных кодов.

Вопрос. Принадлежат-ли эти адреса одной подсети с маской 255.255.0.0? Ответ. Если наложить на эти адреса маску: 255.255.0.0, то есть найти логическое произведение адреса и маски, применив к ним побитовую операцию &, то мы получим одно и то же число 130.100.0.0. Этот факт означает, что исходные адреса соответствуют одной и той же подсети класса B.

Но для того, чтобы ответить на вопрос, принадлежат-ли они одной и той же (но более мелкой) подсети, надо расширить маску и применить ее к обоим адресам. Например, если задать подсеть маской 255.255.255.0, то ответ будет отрицательным, но если маска, определяющая подсеть, равна 255.255.192.0, то устройства попадают в нее (попадают в одну и ту же часть сети—subnet). Адрес 192.168.x.255 при произвольном х зарезервирован и считается адресом всех подсетей (subnet broadcast address)

Комбинация IP-адреса и номера порта определяет IP endpoint. TCP-сессия уникальным образом определяется комбинацей локального IP endpoint и удаленного IP endpoint. Одно сетевое приложение может управлять несколькими соединениями с одним и тем же local IP endpoint, но разными remote IP endpoint.

Флаги фрагментации

Полный пакет может иметь произвольную длину в пределах от 8 байт (64 бит) до 64 килобайт. Но физически один Ethernet-пакет не может быть более 1500 байт. Поэтому длинные IP-пакеты разбивают на фрагменты. По прибытии части одного и того же пакета собираются вместе и блок информации восстанавливается в исходном виде. Технология фрагментации использует три поля IP-пакета (см. выше таблицу IP Layer):

¨  Identification (идентификатор пакета). Все фрагменты одного пакета должны иметь один и тот же идентификатор. Код на стороне получателя использует идентификатор пакета для его восстановления.

¨  Flags (разбит-ли пакет на части).

¨  Fragment offset (расположение фрагмента в пакете).

Поле Flags (3 бита) интерпретируется, как 3 отдельных флага:

¨  Зарезервированный бит (всегда равен нулю).

¨  Единица в этом бите (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,