Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / WinPcap / 7 сообщений из 7, страница 1 из 1
22.06.2009, 11:01:08
    #36053234
Yopt!
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WinPcap
Вопрос вот в чем: в рантайм отправляет запрос на серевер SQL, засекаем время. Приходит ответ - опять засекаем время. Получаем временной интервал. Его нужно разбить на 3 части:
1) Время запроса - прохождение серии пакетов от клиента до сервера.
2) Время обработки запроса сервером
3) Время ответа - время прохождения пакетов от сервера до клиента.
Скажу сразу - это может обрабатывающим запрос приложением может быть не только SQL сервер. Это может быть любое приложение, о котором мы знаем только ip-адрес машины и порт.
Для анализа времени использую WinPcap, точнее ее оболочку SharpPcap.
Открываю два устройства - на клиенте и на сервере. На обоих отслеживаю приходящие\исходящие пакеты. На оба устройства ставлю одинаковый фильтр: src host <local host> and dst host <remote host> and dst port <port on remote host>) or (src host <remote host> and src port <port on remote host> and dst host <local host>
В качестве обработчиков события прихода пакетов выставляем простые процедуры, в которых реализован подсчет кол-ва вызовов. Для локального и удаленного устройства отдельно.

И вот проблемы:
1. Счетчики показывают сильно разнящиеся числа. скажем, входящих/исходящих пакетов на локальном устройстве в 3-4 раза меньше, чем на удаленном, что при таком фильтре вызывает недоумение.
2. В результате экспериментов выяснилось, что события отправления с одного устройства и прихода пакета на другое устройство генерируются в странном порядке - тут иногда (но не всегда!) получается так, что событие получения пакета генерируется раньше чем событие отправки пакета. Возможно ли, что потеря пакетов и эта неразбериха с генерацией событий происходит из-за переполнения буфера сохранения пакетов? Хотя пометки времени в заголовке пакетов проставляются драйвером перехвата корректно.

Кто-нибудь сталкивался с описаным? Есть ли какие-либо другие средства с для решения этой задачи?
...
Рейтинг: 0 / 0
22.06.2009, 16:33:36
    #36054184
Yopt!
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WinPcap
и еще вопрос, ответ на который очень бы мне помог. вот есть у нас точка отправления А и точка назначения В. пакет уходит из точки А, где мы его запоминаем, и приходит на точку В. как определить, что это тот же пакет? я пробовал сравнивать по начальному и конечному МАС-адресам + побайтово блок данных (рад, если кого-то это улыбнет:)), но вышло не очень.
...
Рейтинг: 0 / 0
22.06.2009, 16:35:41
    #36054191
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WinPcap
Yopt!и еще вопрос, ответ на который очень бы мне помог. вот есть у нас точка отправления А и точка назначения В. пакет уходит из точки А, где мы его запоминаем, и приходит на точку В. как определить, что это тот же пакет? я пробовал сравнивать по начальному и конечному МАС-адресам + побайтово блок данных (рад, если кого-то это улыбнет:)), но вышло не очень.Если речь идет о TCP-протоколе, то там есть номер последовательности. Взгляните в RFC по TCP.
...
Рейтинг: 0 / 0
22.06.2009, 17:17:14
    #36054300
Yopt!
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WinPcap
да, на счет TCP я в курсе, но тут произвольный пакет. возможно ли просто сравнить побайтово все содержимое отправленного пакета с содержимым полученного пакета? ведь пакет в результате транспортировки не изменяется? или, еще лучше, перед отправлением как-нибудь получить хеш пакета и сравнить с хешем полученного пакета. это выглядит разумным решением проблемы или тут все гораздо глубже?
...
Рейтинг: 0 / 0
22.06.2009, 17:40:47
    #36054359
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WinPcap
В общем случае не обязательно доходят ровно те пакеты, которые были посланы. Например, по причине фрагментации. Также могут быть изменены адреса/порты получения/назначения, TTL. В некоторых случаях пакеты могут быть переработаны совсем, например, прозрачным прокси-сервером.
...
Рейтинг: 0 / 0
22.06.2009, 18:31:43
    #36054442
Yopt!
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WinPcap
скажем, прокси-сервера не будет, и пакеты идут напрямую от точки А к точке В. в таком случае они будут идентичны в начальной и конечной точке? (этот вопрос интересует в контексте WinPcap, если возможно)
...
Рейтинг: 0 / 0
22.06.2009, 18:39:13
    #36054461
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WinPcap
Yopt!скажем, прокси-сервера не будет, и пакеты идут напрямую от точки А к точке В. в таком случае они будут идентичны в начальной и конечной точке? (этот вопрос интересует в контексте WinPcap, если возможно)Это можно гарантировать только если вы полностью контролируете весь маршрут прохождения пакетов. Иначе см. мой предыдущий пост.

Кстати TTL меняется при каждом прохождении пакета через маршрутизатор.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / WinPcap / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]