Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2012.01.08;
Скачать: [xml.tar.bz2];

Вниз

Какой процесс слушает сокет?   Найти похожие ветки 

 
BreakPoint ©   (2009-08-03 16:12) [0]

Есть IP адресс и порт. Надо определить какой процесс слушает этот порт. Фактически это надо для мониторинга трафика, надо узнать какой пакет идет к какому приложению (как в  HttpAnalyzer). Есть идея через GetExtendedTcpTable, но это както некрасиво, может в АПИ есть функции которые позволяют эту задачу напрямую решить?


 
Сергей М. ©   (2009-08-03 17:06) [1]


> в АПИ есть функции которые позволяют эту задачу напрямую
> решить?


GetExtendedTcpTable - это тоже API-функция.
Какую еще "прямую" функцию ты хотел увидеть ? Чем эта крива и некрасива ?


 
BreakPoint ©   (2009-08-03 17:28) [2]

Тем, что для каждого пакета выдергивать всю таблицу искать в ней IP не есть рационально.


 
Сергей М. ©   (2009-08-04 10:35) [3]


> для каждого пакета


Про какие пекты идет речь ?


> выдергивать всю таблицу


Не надо ничего "выдергивать"

см. AllocateAndGetTcp/UdpExTableFromStack


 
BreakPoint ©   (2009-08-04 11:33) [4]

> см. AllocateAndGetTcp/UdpExTableFromStack

Курим МСДН:
The GetTcpTable or GetExtendedTcpTable functions should be used to retrieve the TCP connection table instead of using the AllocateAndGetTcpExTableFromStack function.

> Не надо ничего "выдергивать"

The AllocateAndGetTcpExTableFromStack function retrieves the TCP connection table... - что это как не выдергивание всей таблицы?


 
Сергей М. ©   (2009-08-04 12:40) [5]


> BreakPoint ©   (04.08.09 11:33) [4]

http://www.xakep.ru/magazine/xa/098/122/1.asp

А ты о каких пакетах ведешь речь ?


 
BreakPoint ©   (2009-08-04 13:17) [6]

о сырых
статейка устарела, курите МСДН


 
Сергей М. ©   (2009-08-04 13:35) [7]


> о сырых


Т.е. ты нюхаешь сет.интерфейсы на предмет прохождения через них IP-дейтаграмм, относящихся к TCP/UDP-сервисам, и для каждой из них желаешь получать инф-цию о локальном процессе, пославшем/принявшем эту дейтаграмму, при этом не желая всякий раз запрашивать снапшоты TCP/UDP-таблиц, так ? Я правильно понял ?


 
BreakPoint ©   (2009-08-04 13:50) [8]

да


 
Сергей М. ©   (2009-08-04 14:02) [9]

Ну и зачем при этом всякий раз запрашивать снапшот ?

Любой приличное ПО, реализующее подобную функциональность, как правило включает в себя т.е. connection tracking.

Суть этого механизма, касаемая твоей задачи, такова: запрос снапшота требуется лишь для пакетов со статусом соединения new, related и invalid, для пакетов же со статусом соединения established информация о процессе уже доступна, поскольку ранее этот процесс передавал или принимал пакет со статусом соединения new, т.е. ты уже запрашивал ранее снапшот и ничего нового ты в очередном снапшоте не увидишь вполоть до завершения соединения.

Кури коннекшн-трекинг технологию)


 
BreakPoint ©   (2009-08-04 14:57) [10]

Буду весьма признателен, если вы укажете по какому смещению в сыром пакете находится указанная вами информация. С особым нетерпением жду информации об UDP ))


 
Сергей М. ©   (2009-08-04 15:19) [11]


> по какому смещению


Ни по какому.

В традиционных CTS принято считать, что UDP-соединение установлено (т.е. ему присваивается статус established) если обнаружена пара следующих друг за другом пакетов :

SRC                    DST
адрес1:порт1 -> адрес2:порт2
адрес2:порт2 -> адрес1:порт1


 
Rouse_ ©   (2009-08-04 15:27) [12]

Вот тут я года три назад чего-то ваял, можешь посмотреть принцип: http://rouse.front.ru/trafficinspector.zip


 
Сергей М. ©   (2009-08-04 15:37) [13]


> Rouse_ ©   (04.08.09 15:27) [12]


Ты предлагаешь ему то что ему как раз не нужно - при получении каждого пакета всякий раз запрашивать снапшот)


 
Rouse_ ©   (2009-08-04 15:54) [14]

Ну тут принцип сам, код сам видишь не причесанный ни разу, собран из нескольких разных демок буквально на коленке :)


 
BreakPoint ©   (2009-08-04 16:02) [15]


> Ни по какому.

)) Это и так ясно.

> если обнаружена пара следующих друг за другом пакетов :

а кто гарантирует, что эти пакеты придут друг за другом? следовательно нужны дополнительные правила, в итоге этих правил окажется столько, что GetExtendedTcpTable медом покажется.


 
Сергей М. ©   (2009-08-04 16:03) [16]


> Ну тут принцип сам


Да принцип-то этот и автору понятен)
Он ДРГОЕ хочет: не лазить всякий раз за снапшотом, но при этом иметь оперативную инф-цию о локальном процессе-владельце порта, фигурирующего в качве источника или приемника в IP-дейтаграмме, которую он унюхал ро-сокетом)


 
Сергей М. ©   (2009-08-04 16:07) [17]


> кто гарантирует, что эти пакеты придут друг за другом?


А где это видано, чтобы в каком-либо диалоге ответ следовал раньше вопроса ?)


> нужны дополнительные правила, в итоге этих правил окажется
> столько, что GetExtendedTcpTable медом покажется


Приличные файрволы с CTS-функциональностью их как раз и реализуют) .. И ничего - работают и каши не просят)



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2012.01.08;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.003 c
11-1240488347
Dy1
2009-04-23 16:05
2012.01.08
RichEdit, модификация текста


15-1312890604
БарЛог
2011-08-09 15:50
2012.01.08
Задача: стальной шар радиусом R падает в воду


2-1317359287
Natalie
2011-09-30 09:08
2012.01.08
Как отобразить в Memo тест длинною 4000 символов?


15-1316162516
И. Павел
2011-09-16 12:41
2012.01.08
Переезд в Санкт-Петербург


2-1317290569
я
2011-09-29 14:02
2012.01.08
ClientDataSet как записать произвольный массив в базу данных (cds





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский