Протокол IPX

Модератор: push0ret

Ответить
Аватара пользователя
push0ret
Набирающий обороты
Сообщения: 27
Зарегистрирован: Вс дек 29, 2024 2:48 pm
Благодарил (а): 16 раз
Поблагодарили: 26 раз

Протокол IPX

Сообщение push0ret »

Hello, world!

Не так давно я установил сервер и клиент Novell Netware 4.11. В составе этой системы есть драйверы разных протоколов, которые позволяют отправлять и получать данные по сети по правилам, соответствующим используемому протоколу. В данной теме расскажу про протокол IPX, а в дальнейшем опишу функции драйвера IPX, которые будут интересны программисту.

Протокол IPX относится к сетевому уровню модели OSI, использует тип связи между рабочими станциями на уровне датаграмм (передача пакетов данных между рабочими станциями производится без подтверждения). Что значит "без подтверждения"? А это значит, что не гарантируется доставка пакета данных от передающей станции к принимающей, также передающая сторона так и не узнает, получила пакет данных принимающая сторона или нет.

ФОРМАТ ПАКЕТА IPX

Формат передаваемых пакетов данных представлен на рисунке:
ipx_format.PNG
ipx_format.PNG (15.6 КБ) 64 просмотра
Все поля, кроме последнего поля "Data", представляют собой заголовок пакета. Для примера можно привести почтовый конверт, заголовок пакета выполняет ту же роль, там указаны адрес отправителя, адрес получателя и некоторые служебные данные, давайте расскажу о каждом поле этой структуры подробнее.

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

Поле Length определяет общую длину пакета вместе с заголовком, длина заголовка фиксированная и составляет 30 байт. Размер передаваемых данных может быть от 0 до 546 байт, следовательно то, что длина пакета может составлять от 30 до 576 байт. Если длина поля Data равна 0, то пакет состоит из одного заголовка. Да, пакеты, состоящие из одного заголовка тоже нужны! Если вы будете использовать драйвер протокола IPX из системы Novell Netware, то вам не придётся считать длину пакета, драйвер вычислит длину пакета, исходя из длины поля Data.

Поле TransportControl содержит информацию о пройденных мостах, каждый раз при передаче пакета, когда он проходит через мост, значение счётчика увеличивается на единицу, перед передачей пакета драйвер IPX записывает в это поле значение 0.

Поле PacketType определяет тип передаваемого пакета. Программа, которая передает пакеты по протоколу IPX, должна записать в поле PacketType число 4. Если вы будете использовать протокол SPX, то в это поле необходимо записать число 5.

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

Поле DestNode определяет адрес рабочей станции, куда будет передан пакет. Необходимо записать все 6 байт этого поля, даже если число номера рабочей станции имеет значение меньше, старшие разряды необходимо записать нулями. Запись в это поле числа FFFFFFh означает, что пакет должен быть отправлен на все рабочие станции в этой сети.

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

Поля SourceNetwork, SourceNode, SourceSocket содержат номер сети, из которой происходит посылка пакета, адрес рабочей станции - отправителя и идентификатор программы, которая отправляет пакет.

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

Спасибо за внимание!
С уважением, push0ret!
Ответить

Вернуться в «Системное программирование»