Какие возможные функциональные схемы выхода в инет существуют?

Тема в разделе "WASM.NETWORKS", создана пользователем neutronion, 13 май 2010.

  1. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    Привет, форумчане!
    Интересуют способы выхода в инет. Мне только известна связька
    socket -> connect ->send ->recv.
    Возможно ли установить связь с внешним миром другим набором функций,
    который не включает в себе вышеописанные?
    И если есть, то какие возможные варианты существуют?
    Или кроме как сокетных, более никак нельзя соединится с другим компом
    в инете?
     
  2. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.553
    Адрес:
    Russia
    Можно связаться через TDI, NDIS левелы, если вас неустраивает winsocket.
    Можно использовать urlmon интерфейс, или WinInet, это так сказать более высокие уровни чем winsocket, но они все равно к нему обращаются.
    Какова конечная задача у вас? Обход чего либо?
    Кстати какая OS? В UNIX можно использовать пакетные сокеты. А так же BPF интерфейс.
     
  3. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    TDI, NDIS я так понимаю это 0 кольцо. Ось винда.
    Интересует можно ли в 3 кольце обойти использование
    socket->conect(bind) в механизме взаимодействия 2-х
    компьютеров находящихся в интернет? Т.е. не ли каких
    либо других функций с помощью, которых можно соединить 2 компьютера в сети? Иначе говоря, может
    ли какое-нибудь приложение передать некоторую информацию другому компьютеру в сети, минуя механизм
    сокетов, в 3-кольце.
     
  4. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    LSP, AFD.
     
  5. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    LSP - это не то
    Эта технология не минует сокетные функции. AFD - не
    нашел в сети. Что это? afd.sys? Но это драйвер, а интересует только 3-кольцо пока.
     
  6. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    т.е. можно со 100% уверенностью сказать, что соединяя
    2 компа по сети, нельзя избежать вызовов socket ых
    функций? За исключением конечно, когда подменяется
    эта библиотека или дублируется в другой библиотеке,
    похожий функционал?
     
  7. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    LSP, AFD.
     
  8. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    коротко, лаконично, но не понятно.
    что есть LSP и AFD?
     
  9. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    От... От с этого и надо было начинать. Вечером отпишу.
     
  10. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    Ок. спасибо. Буду ждать.
     
  11. RET

    RET Well-Known Member

    Публикаций:
    17
    Регистрация:
    5 янв 2008
    Сообщения:
    789
    Адрес:
    Jabber: darksys@sj.ms
    с AFD можно напрямую из r3 работать через шлюз NtDeviceIoControlFile, как это и делают сокеты если посмотреть их под отладчиком.
     
  12. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Я вообще сообщение в блог сейчас пишу об этом, но всё никак закончить не получается, хотя осталось совсем немного. Итак, пару слов по теме. Последовательность вызовов будет примерно такая в современных Windows на примере Windows XP:

    В режиме пользователя сверху вниз: Приложение - Sockets - SPI - AFD.
    В режиме ядра сверху вниз: AFD - TDI - NDIS - NIC - Сеть.

    Ты спрашивал про сокеты, так вот получается, что кроме высокоуровневых сокетных вызовов возможностей остаётся только две - LSP и AFD. По поводу LSP вкратце это выглядит так. Встроившись в цепочку и получив адреса нижних SPI-обработчиков, можно реализовать "свои" сокеты, но уровнем пониже, чем Sockets API. Про сам интерфейс читать здесь, и ещё вот этот документ настоятельно рекомендую для ознакомления. Идём далее. Самый нижний в стеке SPI-провайдер (обычно это AFD и есть для основных протоколов) обращается к некой DLL, которая является переходником на уровень ядра. Её имя msafd.dll, но реально это заглушка, а сами SPI-обработчики реализованы в mswsock.dll. Каждый из этих обработчиков с помощью NtDeviceIoControlFile() связывается со своим ядерным "сервером", реализованым в afd.sys. Далее afd.sys действует по сути как обычный TDI-клиент. Что здесь интересно, что если раскопать IOCTL-интерфейс, которым пользуется AFD, то с помощью него можно напедалить опять же свои "сокеты". Возможно, в каких-то троянах это и реализовано уже, не знаю. Интерфейсы эти все можно найти в исходниках Windows NT 4.0, возможно, сейчас что-то и поменялось уже, но вряд ли сильно.

    Такие дела.
     
  13. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Ссылкой ошибся, описание SPI-интерфейса здесь.
     
  14. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    супер! Огромное спасибо за ликбез. Будем изучать.