Шрифт:
Инкапсуляция IP
При работе в локальной сети на базе технологии CSMA/CD возможны два варианта инкапсуляции датаграмм IP в кадры уровней LLC и MAC.
Первый заключается в использовании кадров Ethernet 2.0. В этом случае поле данных (1500 октетов) полностью принадлежит IP-датаграмме, a SAP адресуется полем "тип пакета", которое содержит значение параметра
Таблица 6.11. Значение Ethertype для некоторых протоколов
0x0000–0x05DC | Поле Length IEEE 802.3 |
0x0800 | Internet IP (IPv4) |
0x0806 | ARP |
0x6003 | DEC DECNET Phase IV Route |
0x8137 | Novell IPX |
Второй вариант предполагает использование формата IEEE 802.3. В этом случае IP-датаграмма инкапсулируется в кадр LLC, а адресация SAP осуществляется в заголовке SNAP с помощью идентификатора Ethertype. При этом поля
При передаче данных TCP/IP в сетях Token Ring используется формат кадра IEEE 802.5, инкапсулирующий кадр LLC с заголовком SNAP, как описано выше.
Внутренняя архитектура
Как уже говорилось, драйвер, реализующий поставщика услуг уровня канала данных, состоит из двух частей: аппаратно-зависимой и аппаратно-независимой. Соответственно драйвер хранит отдельные структуры данных, необходимые для работы этих частей. Архитектура драйвера приведена на рис. 6.40.
Рис. 6.40. Архитектура драйвера DLPI
Для каждого обслуживаемого драйвером сетевого адаптера создается отдельная структура данных
В частности, эта структура содержит следующие поля:
major | Старший номер устройства, связанного с данным сетевым адаптером |
io_start | Адрес начала области ввода/вывода |
io_end | Адрес конца области ввода/вывода |
mem_start | Адрес начала базовой памяти |
mem_end | Адрес конца базовой памяти |
irq_level | Уровень прерывания |
шах_saps | Максимальное число точек доступа (SAP) |
flags | Флаги состояния адаптера |
mib | Список статистических данных |
Поле
BOARD_PRESENT | Устанавливается драйвером после успешной инициализации адаптера |
BOARD_DISABLED | Устанавливается драйвером при неудачной инициализации адаптера. Этот флаг также может быть установлен, если драйвер определит нарушения в функционировании адаптера |
TX_BUSY | Указывает на отсутствие ресурсов, например отсутствие необходимых буферов для передачи кадра |
TX_QUEUED | Указывает на наличие кадров, ожидающих передачи |
Для каждого подключенного пользователя услуг, или, другими словами, для каждой активной SAP драйвер создает структуру данных
state | Состояние SAP. Возможные состояния определены интерфейсом DLPI. Исходное состояние точки доступа DL_UNBOUND |
sap_addr | Уникальный адрес (идентификатор) SAP |
flags | Флаги, определяющие дополнительные характеристики SAP |
read_q | Указатель на очередь чтения потока, связанного с SAP |
write_q | Указатель на очередь записи потока, связанного с SAP |
mac_type | Тип используемого протокола доступа и формат используемого кадра. Возможные значения включают: |
DL_CMACD | IEEE 802.3 |
DL_ETHER | Ethernet 2.0 |
DL_TPB | IEEE 802.4 |
DL_TPR | IEEE 802.5 |
DL_HDLC | ISO HDLC |
DL_FDDI | FDDI |
service_mode | Режим передачи данных. В локальных сетях обычно используется режим без установления связи без подтверждения DL_CLDLS |
provider_style | Тип поставщика услуг: DL_STYLE1 или DL_STYLE2 |
bd | Указатель на структуру DL_bdconfig_t , связанную с сетевым адаптером |
next_sap | Указатель на следующую точку доступа в списке активных SAP |
max_spdu | Максимальный размер данных, которые могут быть переданы в кадре |
min_spdu | Минимальный размер данных, которые могут быть переданы в кадре |
Дополнительные характеристики SAP хранятся в поле
RAWCSMACD | Указывает, что через SAP передаются только кадры формата IEEE 802.3 |
SNAPCSMACD | Указывает, что через SAP передаются кадры формата LLC SNAP |
PROMISCUOUS | Указывает, что SAP работает в режиме отсутствия фильтрации кадров (promiscuous mode), при котором SAP получает копии всех кадров независимо от адреса точки доступа, которой они предназначаются. Данный режим применяется, например, при создании приложений мониторинга уровня канала данных |
PRIVILEGED | Указывает, что управление точкой доступа требует привилегий суперпользователя |