Помогите, пожалуйста, в решении вопроса: мне нужно знать, какие именно API используют сетевые сервисы в Windows для работы конкретного протокола? Т.е. как в Windows реализован, скажем, протокол TCP или IP, с помощью каких функций/библиотек? Какие API мне использовать, чтобы отправить пакет по какому-либо протоколу? Гугл ничего конктерного не дал, только общую информацию, однако важна конкретика: протокол — функция. Где можно найти такую инфу?
Здравствуйте, Den_spbstu, Вы писали:
D_>Спасибо заранее.
Не совсем понятно что Вы хотите, но возможно натолкну Вашу мыслю в правильное русло.
Winsock — подсистема, предоставляющая API для выполнения сетевых задач. Грубо её можно разделить на две части:
1. Клиентское API. Софт имени им и пользуется для подключения, чтения, записи, слушания и пр. Это функции типа socket, send, recv, closesocket, shutdown, много WSA* функций.
2. Провайдерное API. Им пользуется собственно сторона, которая реализует протоколы(в терминах Winsock Service и Namesapce Provider-ы). В MSDN это API можно найти по ключу Winsock SPI. Так вот, эти провайдеры с одной стороны с помощью Winsock SPI взаимодействуют с Winsock. С другой стороны, задачу отправки/приема пакетов и другие реакции они делает как считают нужным — никто это не специфицирует. Например, тот-же стек TCP/IP построен на обращении к драйверу ядра TCP/IP(который в свою очередь прибиндин к Ethernet-у и/или оптике на сетевых карточках, или к PPP на модемах, и пр. NDIS инфраструктуре). Аналогично IPX/SPX. Bluetooth и IrDA пользуются другими драйверами для доступа к канальному уровню. Теоретически, можно реализовать и зарегистрировать в системе сколько угодно сокетных протоколов, которые будут представляться Winsock-у по всем правилам, а реализация будет делать всё что угодно(да хоть пищать в динамик или мигать лампочками на клавиатуре).