
- •Реферат на тему
- •1. Протокол ipx
- •1.1 Формат пакета ipx
- •1.2 Робота з драйвером ipx / spx
- •1.2.1 Точка входу api драйвера ipx / spx
- •1.2.2 Використання api драйвера ipx
- •1.3 Основні функції api драйвера ipx
- •1.3.1 Функції для роботи з сокетами
- •1.3.2 Функції для роботи з мережевими адресами
- •1.3.3 Прийом і передача пакетів
- •1.4 Визначення топології мережі
- •1.5 Налаштування параметрів ipx
1.3 Основні функції api драйвера ipx
API драйвера протоколу IPX складається з приблизно дюжини функцій, призначених для виконання операцій з сокетами, мережевими адресами, для прийому і передачі пакетів і деяких інших операцій. Коротко розглянемо склад і призначення основних функцій IPX.
1.3.1 Функції для роботи з сокетами
IPXOpenSocket-відкрити сокет
На вході: BX = 00h.
Тип сокету:
AL = 00h - короткоживучий;
FFh - долгоживущий.
DX = Запитуваний номер сокета або 0000h, якщо потрібно отримати динамічний номер сокета.
Примітка. Байти номери сокета знаходяться в перевернутому вигляді.
Код завершення:
На виході: AL = 00h - сокет відкритий;
FFh - цей сокет вже був відкритий раніше;
FEh - переповнилася таблиця сокетів.
DX = Присвоєний номер сокета.
Перед початком передачі пакетів програма повинна отримати свій ідентифікатор - сокет. Функція IPXOpenSocket якраз і призначена для отримання сокета.
Сокети є обмеженим ресурсом, тому програми повинні дбати про звільнення сокетів. Коли відкриваєте (запитуєте у IPX) сокет, потрібно вказати тип сокета - короткоживучий або довгоживучий.
Короткоживучі сокети звільняються (закриваються) автоматично після завершення програми. Довгоживучі сокети можна закрити тільки за допомогою спеціально призначеної для цього функції IPXCloseSocket. Такі сокети найбільше підходять для використання резидентними програмами або драйверами. Більше того, для резидентних програм, що працюють з IPX, необхідно використовувати довгоживучі сокети, тому що в противному випадку при завершенні програми (і при залишенні її резидентної в пам'яті) всі відкриті програмою сокети будуть автоматично закриті. У цьому випадку після активізації резидентна програма залишиться без сокетів.
За замовчуванням при завантаженні оболонки робочої станції доступно максимально 20 сокетів. При відповідній настройці мережевий оболонки можна збільшити це значення до 150.
IPXCloseSocket - закрити сокет
На вході: BX = 01h.
DX = Номер закривається сокета.
На виході: Регістри не використовуються.
Функція закриває заданий в регістрі DX сокет, короткоживучий або довгоживучий.
1.3.2 Функції для роботи з мережевими адресами
IPXGetLocalTaget-отримати безпосередній адресу
На вході:
BX = 02h.
ES: SI = Покажчик на буфер довжиною 12 байт, що містить повний мережевий адресу станції, на яку буде посланий пакет.
ES: DI = Покажчик на буфер довжиною 6 байт, в який буде записаний безпосередній адресу, тобто адресу тієї станції, якій буде передано пакет. Це може бути адреса моста.
Код завершення:
00h - безпосередній адреса був успішно обчислений;
На виході
AL = FAh - безпосередній адресу обчислити неможливо, так як до зазначеної станції немає жодного шляху доступу по мережі.
CX = Час пересилання пакету до станції призначення (тільки якщо AL дорівнює нулю) в тиках системного таймера. Тікі таймера слідують з періодом приблизно 1/18 секунди.
IPXGetInternetworkAddress - отримати власну адресу
На вході:
BX = 09h.
ES: DI = Покажчик на буфер довжиною 10 байт; в нього буде записана адреса станції, на якій працює дана програма. Адреса складається з номера мережі Network та адреси станції в мережі Node.
На виході: Регістри не використовуються.
За допомогою цієї функції програма може дізнатися мережеву адресу станції, на якій вона сама працює.
Отриманий адресу програма може потім використовувати на свій розсуд (наприклад, повідомити його іншій станції).