Операционная система NetWare



Набор протоколов IPX/SPX - часть 4


В этом случае поле заполняется протоколом IPX. Следует отметить, что этот адрес станции выбирается из заголовка кадра (поле "адрес отправителя") и, как правило, используется прикладной программой для передачи ответа.

Поле FragmentCnt устанавливается прикладной программой и содержит количество фрагментов, на которое надо разбить принятый пакет или из которых надо собрать передаваемый пакет. Т. е. в программе можно указать отдельные буферы для приёма/передачи заголовка и данных пакета. В этом случае значение поля FragmentCnt должно быть равно 2.

Таблица 2.3. Примитивы API-интерфейсов для работы по протоколу IPX

ПримитивОписание

IPXOpenSocketОткрыть гнездо.
Вход - тип гнезда, номер открываемого гнезда.

IPXCloseSocketЗакрыть гнездо.
Вход - номер закрываемого гнезда

IPXGetLocalTargetПрименяется для вычисления значения непосредственного адреса.
Вход - адрес 12-байтового поля с полным адресом конечной станции-назначения (номер сети - 4 байта, адрес станции - 6 байтов, номер гнезда - 2 байта).
Выход - значение адреса той станции сегмента (например, маршрутизатора или файлового сервера), которой непосредственно передаётся пакет (значение поля ImmAddress блока ECB).

IPXGetInternetworkAddressС помощью этого примитива программа может узнать сетевой адрес станции, на которой она работает.
Выход - 10-байтовый адрес станции (номер сети - 4 байта, адрес станции - 6 байтов).

IPXListenForPacket
(для программы на рабочей станции)
IPXReceive
(для NLM-модуля)
Используется для приёма пакета из сети.
Вход - адрес блока ECB.

IPXSendPacket
(для программы на рабочей станции)
IPXSend
(для NLM-модуля)
Используется для передачи пакета в сеть.
Вход - адрес блока ECB.

IPXRelinquishControl
(для программы на рабочей станции)
ThreadSwitch
(для NLM-модуля)
Используется, чтобы освободить процессор для выделения процессорного времени протоколу IPX. Применяется в том случае, если поле InUse блока ECB (рисунок 2.15) в цикле опрашивается прикладной программой.

Сразу за полем FragmentCnt располагаются дескрипторы фрагментов, каждый из которых состоит из адреса фрагмента (поле Address) и размера фрагмента (поле Size).




Содержание  Назад  Вперед