Скачиваний:
59
Добавлен:
01.05.2014
Размер:
318.98 Кб
Скачать

Пример структуры заголовка

пакета IPX

Для формирования заголовка пакета можно воспользоваться, например, следующей структурой:

struct _IPXHeader { unsigned char Checksum[2]; unsigned char Length[2];

unsigned char TransportControl; unsigned char PacketType; unsigned char DestNetwork[4]; unsigned char DestNode[6]; unsigned char DestSocket[2]; unsigned char SourceNetwork[4]; unsigned char SourceNode[6]; unsigned char SourceSocket[2];} IPXHeader;

Работа с драйвером IPX/SPX

Первое, что должна сделать программа, желающая работать в сети с протоколом IPX/SPX - проверить, установлен ли драйвер соответствующего протокола. Затем необходимо получить адрес вызова этого драйвера - точку входа API (Application Programm Interface - интерфейс для приложений).

В дальнейшем программа вызывает драйвер при помощи команды межсегментного вызова процедуры по адресу точки входа API драйвера IPX/SPX.

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

Процедура приема/передачи

пакетов данных средствами IPX

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

Например, в операционной системе MS- DOS для адаптеров, совместимых с адаптером Novell NE2000 в составе Novell NetWare поставляется драйвер ne2000.com, реализованный в виде резидентной программы.

Прикладные программы не работают напрямую с драйвером сетевого адаптера. Запросы на прием и передачу пакетов они направляют драйверу IPX (программа ipx.exe или ipxodi.exe), который, обращается к драйверу сетевого адаптера.

Если на рабочей станции используется операционная система MS-DOS, функции, необходимые для реализации протокола IPX, реализуются резидентными программами ipx.com или ipxodi.com, входящими в состав сетевой оболочки рабочей станции сети NetWare.

Для приема или передачи пакета прикладная программа должна подготовить пакет данных, сформировав его заголовок, и построить так называемый блок управления событием ECB (Event Control Block). В блоке ECB задается адресная информация для передачи пакета, адрес самого передаваемого пакета в оперативной памяти и некоторая другая информация.

Подготовив блок ECB, прикладная программа передает его адрес соответствующей функции IPX для выполнения операции приема или передачи пакета.

Функции IPX, принимающие или передающие пакет, не выполняют ожидания завершения операции, а сразу возвращают управление вызвавшей их программе. Прием или передача выполняются сетевым адаптером автономно и асинхронно по отношению к программе, вызвавшей функцию IPX для передачи данных. После того, как операция передачи данных завершилась, в соответствующем поле блока ECB устанавливается признак. Программа может периодически проверять ECB для обнаружения признака завершения операции.

Есть и другая возможность. В блоке ECB можно указать адрес процедуры, которая будет вызвана при завершении выполнения операции передачи данных. Такой способ предпочтительнее, так как прикладная программа не будет тратить время на периодическую проверку блока ECB.