|
|
|
WinPcap
|
|||
|---|---|---|---|
|
#18+
Вопрос вот в чем: в рантайм отправляет запрос на серевер 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. В результате экспериментов выяснилось, что события отправления с одного устройства и прихода пакета на другое устройство генерируются в странном порядке - тут иногда (но не всегда!) получается так, что событие получения пакета генерируется раньше чем событие отправки пакета. Возможно ли, что потеря пакетов и эта неразбериха с генерацией событий происходит из-за переполнения буфера сохранения пакетов? Хотя пометки времени в заголовке пакетов проставляются драйвером перехвата корректно. Кто-нибудь сталкивался с описаным? Есть ли какие-либо другие средства с для решения этой задачи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2009, 11:01:08 |
|
||
|
WinPcap
|
|||
|---|---|---|---|
|
#18+
и еще вопрос, ответ на который очень бы мне помог. вот есть у нас точка отправления А и точка назначения В. пакет уходит из точки А, где мы его запоминаем, и приходит на точку В. как определить, что это тот же пакет? я пробовал сравнивать по начальному и конечному МАС-адресам + побайтово блок данных (рад, если кого-то это улыбнет:)), но вышло не очень. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2009, 16:33:36 |
|
||
|
WinPcap
|
|||
|---|---|---|---|
|
#18+
Yopt!и еще вопрос, ответ на который очень бы мне помог. вот есть у нас точка отправления А и точка назначения В. пакет уходит из точки А, где мы его запоминаем, и приходит на точку В. как определить, что это тот же пакет? я пробовал сравнивать по начальному и конечному МАС-адресам + побайтово блок данных (рад, если кого-то это улыбнет:)), но вышло не очень.Если речь идет о TCP-протоколе, то там есть номер последовательности. Взгляните в RFC по TCP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2009, 16:35:41 |
|
||
|
WinPcap
|
|||
|---|---|---|---|
|
#18+
да, на счет TCP я в курсе, но тут произвольный пакет. возможно ли просто сравнить побайтово все содержимое отправленного пакета с содержимым полученного пакета? ведь пакет в результате транспортировки не изменяется? или, еще лучше, перед отправлением как-нибудь получить хеш пакета и сравнить с хешем полученного пакета. это выглядит разумным решением проблемы или тут все гораздо глубже? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2009, 17:17:14 |
|
||
|
WinPcap
|
|||
|---|---|---|---|
|
#18+
В общем случае не обязательно доходят ровно те пакеты, которые были посланы. Например, по причине фрагментации. Также могут быть изменены адреса/порты получения/назначения, TTL. В некоторых случаях пакеты могут быть переработаны совсем, например, прозрачным прокси-сервером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2009, 17:40:47 |
|
||
|
WinPcap
|
|||
|---|---|---|---|
|
#18+
скажем, прокси-сервера не будет, и пакеты идут напрямую от точки А к точке В. в таком случае они будут идентичны в начальной и конечной точке? (этот вопрос интересует в контексте WinPcap, если возможно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2009, 18:31:43 |
|
||
|
WinPcap
|
|||
|---|---|---|---|
|
#18+
Yopt!скажем, прокси-сервера не будет, и пакеты идут напрямую от точки А к точке В. в таком случае они будут идентичны в начальной и конечной точке? (этот вопрос интересует в контексте WinPcap, если возможно)Это можно гарантировать только если вы полностью контролируете весь маршрут прохождения пакетов. Иначе см. мой предыдущий пост. Кстати TTL меняется при каждом прохождении пакета через маршрутизатор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2009, 18:39:13 |
|
||
|
|

start [/forum/topic.php?fid=16&gotonew=1&tid=1344399]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
10ms |
get first new msg: |
5ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 390ms |

| 0 / 0 |
