- •10 Пара. Сети и сетевые ос. Уровни osi
- •Сетевая операционная система
- •Основное назначение
- •Сетевые сервисы
- •Сокеты, соединения
- •Номера портов
- •Локальная копия списка
- •Состояние сетевых служб операционной системы
- •-Проверка доступности сетевых служб
- •Сети и сетевые структуры
- •Использование сетей и сетевых структур имеет следующую мотивацию:
- •Сетевые и распределенные операционные системы
- •Функциональные компоненты сетевой ос
- •Сетевые службы и сетевые сервисы
- •Встроенные сетевые службы и сетевые оболочки
- •Одноранговые и серверные сетевые операционные системы
- •Ос в одноранговых сетях
- •Ос в сетях с выделенными серверами
- •Гибридная сеть
- •Соответствие сетевой архитектуры Windows nt модели osi
- •Физический уровень
- •Канальный уровень
- •Сетевой уровень
- •Транспортный уровень
- •Сеансовый уровень
- •Уровень представления
- •Прикладной уровень
- •Интернет-модель сетевого стека
- •Упаковка запросов в osi
- •Сетевая архитектура Windows nt / 2000
- •Классификация драйверов
- •Обработка данных
- •Tcp/ip и сетевая архитектура Windows 2000
- •Выделенные и специализированные серверы
- •Сетевая карта и её драйвер
Классификация драйверов
Сетевые драйверы в Windows NT 4.0 имеют следующую классификацию:
Драйверы минипорта (NIC Miniport). Они напрямую (точнее, через HAL – Hardware Abstraction Layer) взаимодействуют с сетевым адаптером на самом низком уровне, предоставляя некий абстрактный, общий для всех сетевых адаптеров, интерфейс к своему сетевому адаптеру другим драйверам и самой операционной системе. В отличие от высокоуровневых драйверов, драйверы минипорта имеют две дополнительных функции, называемые ISR (Interrupt Service Routine – обработчик прерывания) и DPC (Deferred Procedure Call – процедура отложенных вызовов). ISR является высокоприоритетной процедурой, вызываемой при получении прерывания от устройства (например, при получении очередного кадра из сети). В данной процедуре необходимо выполнить ряд самых необходимых действий, чтобы не задерживать надолго выполнение других процессов, в частности, надо запретить устройству генерировать данное прерывание. DPC имеет более низкий приоритет при планировании потоков и вызывается непосредственно после ISR, если это необходимо. В DPC обычно производится обмен данными с устройством (например, программирование контроллера DMA для переписывания вновь пришедшего кадра в оперативную память машины из буферной памяти устройства). Такой драйвер обычно входит в поставку самой сетевой карты.
Драйверы протоколов (NDIS Protocol Drivers). Они могут вызывать NIC драйверы для отправки пакетов в сеть и получать от них извещения о приходе данных из сети. Обычно такие драйверы реализуют какой-либо сетевой протокол и предоставляют возможность вызова своих функций приложениям Win32 или драйверам (через интерфейс TDI).
Промежуточные драйверы (NDIS Intermediate Drivers). Для драйверов протокола они предоставляют интерфейс драйвера минипорта, для драйверов минипорта – интерфейс драйвера протокола, по сути являясь некоторой прослойкой между драйверами минипорта и протоколов.
Информация, необходимая для корректного связывания (binding) сетевых драйверов, хранится в системном реестре.
Обработка данных
Все сетевые драйверы Windows NT при загрузке регистрируют заранее определённый набор функций, которые являются точками входа в драйвер и будут затем при определённых условиях вызваны службой NDIS. Например, драйверы протоколов таким образом получают извещения о приходе пакетов из сети, а драйверы минипорта – о том, что пакет надо отправить в сеть. В наборе таких функций обратного вызова могут быть и некоторые специфичные функции. Например, минипорт может зарегистрировать специальную функцию, которую служба NDIS будет вызывать каждые 2 секунды с целью проверки, не «завис» ли драйвер сетевой карты. Такой обработчик, должен проверить состояние драйвера и платы, и, если он завис или обнаружена устранимая ошибка в работе платы, вернуть некоторое значение. Служба NDIS немедленно после этого вызовет функцию сброса сетевой карты, которую также должен зарегистрировать драйвер минипорта.
Вся обработка данных в сетевых драйверах ведется асинхронно, ее можно условно разделить на три этапа. Рассмотрим ее на примере посылки пакета драйвером протокола драйверу сетевой карты.
Драйвер протокола вызывает функцию посылки кадра. Служба NDIS маршрутизирует этот вызов специальному обработчику в драйвере сетевой карты.
Драйвер сетевой карты, запомнив место в памяти, где находится кадр, сразу же возвращает управление драйверу протокола и производит обрабтку кадра (например, переписывает его в буферную память платы и производит его посылку в сеть).
После обработки кадра (которая может занять значительное время, в зависимости от типа сетевого интерфейса), драйвер сетевой карты вызывает специальную функцию, сигнализирующую драйверу протокола о том, что обработка кадра закончена. Драйвер протокола, получив это уведомление, может занять освободившуюся память под новый кадр.
Такая обработка данных значительно повышает скорость работы сетевых компонентов, позволяя ликвидировать пустые циклы занятого ожидания в алгоритмах работы сетевого ПО.
Увидеть взаимосвязь сетевых компонентов в Windows NT можно нажатием правой кнопки мыши на значке «Сетевое окружение», последующим выбором в контекстном меню пункта «Свойства» и выбором закладки «Привязки». Можно заметить некоторое соответствие данной архитектуры семиуровневой сетевой модели OSI. Причем драйверы соответствуют более нижним уровням – транспортному, сетевому и канальному. Именно на этих уровнях удобнее и надежнее всего перехватывать пакеты для шифрования, сжатия, фрагментации, дефрагментации и других манипуляций с данными.