Формат пакета IPX

Максимальный размер IPX-дейтограммы составляет 576 байт, из них 30 байт занимает заголовок. Предполагается, что сеть, через которую транспортируются эти дейтограммы, способна пересылать пакеты соответствующей длины. IPX-пакеты могут рассылаться широковещательно, для этого поле типа должно принять значение 0x14, адрес сети назначения должен соответствовать локальной сети, адрес узла назначения при этом принимает значение 0xFFFFFF.

IPX-пакеты, передаваемые по сети Ethernet, могут иметь несколько разных форматов. Старейший из них носит в Novell название "802.3" (информацию об интеграции сетей Novell и Интернет можно найти в документах: RFC-1234, -1420, -1553, -1634, -1792) и используется по умолчанию в версиях вплоть до 3.11. В последующих версиях форматом по умолчанию является "802.2". Применим также и формат, называемый Ethernet II, который наиболее близок идеологии TCP/IP. Сеть в Netware - это логический канал, который используется совместно рядом узлов так, что они могут взаимодействовать друг с другом непосредственно. Так процессы, реализуемые на одном сервере, считаются подключенными к внутренней IPX-сети. Все пользователи сети типа Ethernet II образуют логическую сеть IPX. Все пользователи одной сети типа 802.3 рассматриваются как узлы различных сетей IPX. Сопоставление форматов пакетов для различных сетевых стандартов представлено в таблице:

Таблица2.Сопоставление форматов пакетов для различных сетевых стандартов.

Ethernet ||

IEEE802.3

IPX

Адрес назначения

Адрес назначения

Адрес назначения

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

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

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

Тип

Длина

Длина

Данные верхнего уровня

Заголовок 802.2

Данные IPX

Данные802.2

CRC

CRC

CRC

Поля заголовка IPX пакета показаны в следующей таблице

Таблица3. Поля заголовка IPX пакета

Длина в байтах

Поле заголовка

2

Checksum-контрольная сумма

2

Length-общая длина пакета

1

TransportControl-счетчик пройденных мостов

1

PacketType тип пакета

4

DestNetwork-адрес сети получателя

6

DestNode-адрес станции получателя

2

DestSocet-сокет программы- получателя

4

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

6

SourceNode-адрес узла отправителя

2

SourceSocet-сокет программы-отправителя

0-546

DATA-данные

Особенностью формата пакета является то, что все поля заголовка содержат значения в перевернутом формате, т. е. по младшему адресу записывается старший байт данных, а не младший, как это принято в процессорах фирмы Intel. Поэтому перед записью значений в многобайтовые поля заголовка необходимо выполнить соответствующее преобразование. Представление данных в заголовке пакета соответствует, например, формату целых числел в компьютере IBM-370 (серия ЕС ЭВМ).

Рассмотрим подробнее назначение отдельных полей пакета.

Поле Checksum предназначено для хранения контрольной суммы передаваемых пакетов. Проверка данных по контрольной сумме выполняется драйвером сетевого адаптера.

Поле Length определяет общий размер пакета вместе с заголовком. Длина заголовка фиксирована и составляет 30 байт. Размер передаваемых в поле Data данных может составлять от 0 до 546 байт, следовательно, в поле Length в зависимости от размера поля Data могут находиться значения от 30 до 576 байт. В действительности максимальная длина IPX-пакета равна 1518 байт, но при прохождении пакетов через маршрутизаторы, когда не используется протокол LIP(large internet packet) -протокол межсетевой пересылки больших пакетов,максимальная длина может быть равной лишь 576 байт (что и принято по умолчанию). Согласно регламентациям Novell длина пакета может принимать только четные значения. Если длина поля Data равна нулю, пакет состоит из одного заголовка. Как это ни странно, такие пакеты тоже нужны! При формировании собственных пакетов программный модуль, отвечающий за реализацию протокола IPX, вычисляет длину пакета на основании длины поля Data.

Поле TransportControl служит как бы счетчиком мостов, которые проходит пакет на своем пути от передающей станции к принимающей.Это поле устанавливается IPX-драйвером равным нулю перед посылкой пакета. Каждый маршрутизатор увеличивает значение этого поля на 1. Если пакет прошел через 15 маршрутизаторов, очередной - удалит пакет из сети (в некотором смысле это аналог поля время жизни - TTL в протоколах TCP/IP). Поле TransportControl можно использовать для оптимизации маршрутов в локальной сети. Если станция общается только с серверами соседней субсети, ее следует переключить туда и снизить тем самым нагрузку маршрутизатора. Контроль за содержимым этого поля выполняется протоколом IPX.

Поле PacketType определяет тип передаваемого пакета. Программа, которая передает пакеты средствами IPX, должна установить в поле PacketType значение 4. Протокол SPX, реализованный на базе IPX, использует в этом поле значение 5, NCP(Netware core protocol) -17.

Таблица4. Коды типа IPX-пакета

Тип пакета

Значение

0

Обычный IPX-пакет

1

Пакет с маршрутной информацией (RIP – routing information protocol)

2

Отклик

3

Ошибка

4

Информационный пакетный обмен (pep – packet exchange protocol)

5

Последовательный пакетный обмен (SPX – sequence packet exchange)

17

Протоколы ядра NetWare (NCP)

20

Именной пакет netbios (широковещательный)

Поле DestNetwork определяет номер сети, в которую передается пакет. При формировании собственного пакета вам необходимо заполнить это четырехбайтовое поле. Номер сети задается сетевым администратором при установке Novell NetWare на сервер.

Поле DestNode определяет адрес рабочей станции, которой предназначен пакет.Шесть байт этого поля-физический адрес, задается изготовителем сетевого интерфейса.

Поле DestSocket-2 байта дескриптора соединителя- предназначены для адресации программы, программы, принимающей пакеты, заполняется приложением.

Соединители (socket) служат для управления обработкой пакетов. Широковещательный пакет будет получен ЭВМ, если она имеет открытый соединитель для процесса, которому он адресован. По этой причине должны приниматься специальные меры, чтобы предотвратить возможность посылки двумя программами пакетов различного типа на один и тот же соединитель. Ряд номеров соединителей зарезервировано IPX-протоколом для определенных целей:

2 - соединитель протокольных откликов; 3 - обработчик ошибок.

Некоторые номера заняты под нужды Netware.

Таблица 5.соответствие некоторых сокетов службам NetWare

0x451

Протокол ядра NetWare (NCP – netware core protocol);

0x452

Протокол NetWare для оповещения об услугах (SAP – service advertising protocol);

0x453

Маршрутный протокол NetWare (RIP - routing information protocol);

0x455

Пакет протокола netbios;

0x456

Диагностический протокол NetWare;

0x457

Пакет сериализации (serialization).

Дескрипторы соединителей для рабочих станций задаются динамически и их коды лежат в диапазоне 0x4000 - 0x8000.

Поля SourceNetwork, SourceNode и SourceSocket содержат соответственно номер сети, из которой посылается пакет, адрес передающей станции и сокет программы, передающей пакет.

Пакеты, адресованные серверу в NetWare 3.x или 4.x содержат в поле адреса узла получателя код 0x00 00 00 00 00 01 (аналогичный код будет записан в поле адрес отправителя, если им является сервер). Адрес же узла получателя на уровне Ethernet или Token Ring будет равен физическому сетевому адресу интерфейса или локального маршрутизатора, если сервер размещен в другой субсети.

Поле Data в пакете IPX содержит передаваемые данные.Длина этого поля может быть от 0 до 546 байт.

Hosted by uCoz

[Предыдущая] [На стартовую] [Следующая]