Протоколы Internet


             

Любой пакетный драйвер имеет блок


Любой пакетный драйвер имеет блок исходных данных (MS-DOS), напр.:





















































































EADDR_LEN



equ 6





; длина физического адреса



init_block



struc







init_mode



dw



0





init_addr



db



eaddr_len dup(?)



; ethernet-адрес



init_filter



db



8 dup(0)



; Логический адресный фильтр (multicast filter).



init_receive



dw



?,?



; Указатель входного кольцевого буфера



init_transmit



dw



?,?



; Указатель выходного кольцевого буфера.



init_block



ends







Структура переменных init_mode (смещение = 0) имеет вид



Рис. 7.2.2. Структура переменных init_mode





















































Drx



запрет приема;



Dtx



запрет передачи;



Loop



цикл;



Dtcr



запрет передачи crc;



Coll



столкновение;



Drty



запрет повторов;



Intl



внутренний цикл;



Prom



режим приема всех пакетов (promiscuous mode).



Кольцевой входной буфер имеет следующую структуру:

















































rcv_msg_dscp



struc



rd_addr



dw ?



; Младшая часть адреса входного буфера



rd_stat



dw ?



; Статусная часть + старшая часть адреса



rd_bcnt



dw ?



; Размер буфера в байтах



rd_mcnt



dw ?



; Длина сообщения в байтах



rcv_msg_dscp



ends



Структура переменных rd_stat имеет вид



Рис. 7.2.3. Структура переменных rd_stat





















































Enp



конец пакета;



Stp



начало пакета;



Buff



ошибка в буфере;



CRC



CRC-ошибка;



Oflo



переполнение буфера;



Fram



ошибка при записи в буфер;



Err



наличие ошибки;



Own



0 = полное заполнение.



Выходной буфер имеет сходную структуру.

Я не буду описывать здесь то, как следует писать системные драйверы (Исчерпывающую информацию по написанию таких драйверов читатель может найти в книге "Написание драйверов для MS-DOS" Р.Лея и "Уэйт Груп", Москва "Мир", 1995), тем более что существует достаточное их количество в депозитариях общего доступа (Например, анонимное FTP по адресам ftp.funet.fi, ftp.switch.ch или oak.oakland.edu, депозитарий SimTel ). Приведенное выше описание регистров интерфейса не является единственно возможным (см. также руководство по сетевому контроллеру 8390 и файл NE2.ASM из ссылки ftp.funet.fi. Структура драйверов варьируется для разных операционных систем. Для системных программистов полезно иметь возможность настраивать драйвер или непосредственно интерфейс на определенный режим, например, на прием всех пакетов, проходящих по кабельному сегменту. Последнее может представлять интерес в диагностических целях, так как вслед за пакетным драйвером загружается Etherdrv, Winsock или winpkt и т.д., блокирующие режим приема всех пакетов (mode=6). Ниже приведен пример описания основных параметров драйвера:













































BLUEBOOK



equ



1





IEEE8023



equ



11





ADDR_LEN



equ



6



; размер Ethernet-адреса



MAX_M_CAST



equ



8



; максимальное число мультикаст-адресов.

<

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