Transport Driver Interface
Transport Driver Interface (TDI) — общий интерфейс для драйверов (таких как Windows 2000 redirector и server) для общения с различными сетевыми транспортными протоколами. Это позволяет сервисам оставаться независимыми от транспортных протоколов.
В отличие от NDIS, нет драйвера для TDI, который является спецификацией для передачи сообщений между двумя уровнями в сетевой архитектуре.
Microsoft разработали TDI чтобы обеспечить большую гибкость и функциональность, чем это обеспечивали существующие интерфейсы (такие как Winsock и NetBIOS). Весь транспорт в Windows 2000 имеет прямой интерфейс к TDI. Это позволяет TDI обеспечивать последовательный интерфейс транспортных протоколов.
Спецификация TDI описывает набор функций и механизмов вызова, с помощью которых транспортные драйверы и TDI клиенты общаются.
Transport Driver Interface (TDI) — разработан SUN, IBM и Microsoft, TDI программный интерфейс между протоколами и приложениями других уровней в Windows NT network model.
Программная модель TDI
- Программная модель TDI очень похожа на модель Winsocket. TDI-клиенты реализуют следующие шаги для установления соединения с удаленным сервером:
- TDI-клиент формирует пакет TDI IRP типа address open для размещения адреса. TDI-транспорт возвращает файловый объект, известный как объект-адрес, представляющий адрес. Этот шаг эквивалентен использованию функции bind в Winsocket.
- TDI-клиент размещает и формирует пакет TDI IRP типа connection open, и TDI-транспорт возвращает файловый объект, известный как объект-соединение, представляющий соединение. Этот шаг эквивалентен использованию функции socket в Winsocket.
- TDI-клиент ассоциирует объект-соединение с объектом-адресом с помощью пакета TDI IRP типа associate address.
- TDI-клиент, принимающий удалённое соединение, выпускает TDI IRP пакет типа listen, определяющий число соединений, поддерживаемых для объекта-соединения, и затем выпускает пакет TDI IRP типа accept, который завершается, когда удалённая система установит соединение. Эта операция эквивалентна использованию функций listen и accept в Winsocket.
- TDI-клиент, который хочет установить соединение с удалённым сервером, выпускает TDI IRP пакет типа connect, определяя объект-соединение, который TDI-транспорт завершает, когда установится соединение. Выпуск TDI IRP пакета типа connect эквивалентно использованию функции connect в Winsocket.
Главные черты TDI
- Асинхронные операции: Большинство операций в TDI (режим ядра) — это асинхронные операции; это значит, что они используют обратный вызов процедур, который обеспечивают TDI клиенты, для определения любых событий, когда-либо происходивших в сети.
- Гибкая схема адресации: Одна из черт и достоинств использования TDI это то, что TDI предлагает гибкую схему адресации. TDI имеет специальный и расширяемый механизм, который может быть использован в целях поддержки, использования и идентификации различных форматов адресации.
- Уведомление о событии: Это специальная черта TDI, с помощью которой определяется используемая схема, и транспорты могут предупреждать клиентов о любом интересующем событии в сети.
- 32-битная адресация: Другая черта интерфейса транспортных драйверов — это то, что и транспорты, и клиенты — оба 32 разрядные.
- Внутренняя буферизация: Эта черта позволяет TDI транспортировать в буфер полученное от клиентов и посылать во внутренний буфер. Эта внутренняя буферизация позволяет TDI клиентам запрашивать и устанавливать размер внутреннего буфера, получая уведомления о доступном пространстве буфера и просматривать данные из буфера даже перед тем, как получить их.
- Уведомление о событии (Plug & Play): Интерфейс транспортного драйвера определяет конкретную схему, с помощью которой транспорты (in case of Windows 2000 & later versions) могут уведомлять TDI клиента о различных событиях PnP, таких как удаление или добавление соединений и другое.
Ссылки
- http://technet.microsoft.com/en-us/library/cc939977.aspx#mainSection
- http://encyclopedia2.thefreedictionary.com/Transport+Driver+Interface
- http://www.komodia.com/