вторник, 1 марта 2011 г.

Как пользоваться инструментом сетевого анализа?


Первая радость несколько поостыла и теперь самое время разобраться как правильно пользоваться Network Protocol Analyzer. Как вы уже поняли, между клиентом и сервером происходит общение посредством передачи сетевых пакетов. Но возникает вопрос, как и самое главное что смотреть, чтобы узнать, а что все-таки передают друг другу эти программы. Возвращаемся к главному окну захвата «Loopback» пакетов.

Как видно, на вкладке «Packet View» много строчек, каждая из которых что-то да значит. Давайте разбираться, как читать эти строки. Чтобы действительно понять, что в них содержится нужно прокомментировать, что означает заголовок каждого столбца.
№ - ну, тут понятно, что это порядковый номер пойманного пакета с данными.
Process – отображает имя процесса, к которому относятся пакеты.
Time – пока нам это поле кажется не таким уж и важным.
Local Address – локальный адрес.
< = > - хитрое поле, которое для нас является пожалуй самым значащим. Это поле определяет кто кому отправил пакет, либо от сервера к клиенту или наоборот.
Remote Address – удаленный адрес.
Length – длина сообщения в байтах.



Теперь попробуем прочитать первое сообщение, применив полученные знания. Для этого будем выделять мышкой нужное сообщение. Нам понадобится три поля. Local Address, <=>, Remote Address. Ну, и что можно сказать про этот пакет?


Отправлен он нашим сервером с Local Address (0.0.0.0:12300, где первая часть до двоеточия это IP адрес, а вторая это порт) какому-то ПО по Remote Address 38.112.120.110 и чего-то там еще (кстати, у вас может быть и другой адрес). А откуда мы узнали, что отправлял наш сервер, а не наоборот? За это отвечает стрелочка => в поле «<=>». А что это за ПО, которое сидит по Remote Address? Это специальное ПО, которое является тоже сервером, но его функциями является лишь организация оповещения всех потенциальных игроков через Интернет, что вот еще один сервер доступен для игры. В общем и целом первый пакет нам не интересен. И в дальнейшем такие пакеты мы не будем рассматривать, потому что общение нашего сервера с удаленным сервером нам не интересно.

А вот второй пакет более интересен. От кого и кому? Игровой клиент с адрема Remote Address 127.0.0.1 и порта 12350 послал сообщение серверу на Local Address 0.0.0.0 и порт 12300. Это то, что нужно! Наш игровой клиент послал какие-то данные серверу. Но какие? Понятно, что это 4 байта. И если выделен пакет с номером 2 то в окошке ниже «Packet View» мы увидим: «EFEF EFEF». Это оно и есть.

Третий пакет уже отправляет сервер в сторону игрового клиента (стрелка =>). А само сообщение выглядит; «CFCF CFCF».

Дальше уже можно и без подсказок пробежаться по пакетам и посмотреть на общение двух программ – клиента и сервера.

В итоге получается, что общение с сервером начинается с сообщения «EFEF EFEF», в ответ на которое сервер говорит «CFCF CFCF». Осталось только попробовать и посмотреть, что получится.

12 комментариев:

  1. Спасибо, как всегда очень познавательно, но в то же время ясно и посто изложено, даже лисица разберется :)

    ОтветитьУдалить
  2. Спасибо, наконец дождался когда разъяснишь что именно нужно смотреть в передаваемых пакетах!

    ОтветитьУдалить
  3. Спасибо, пригодиться. классный блог. все статьи очень хорошие

    ОтветитьУдалить
  4. О, реально нужная шняга, спасибо, добавил в закладки

    ОтветитьУдалить
  5. Очень познавательно и главное вовремя!

    ОтветитьУдалить
  6. Спасибо! Действительно понятное руководство.

    ОтветитьУдалить
  7. did you ever get to use satan? Security Administrator Tool for Analyzing Networks

    ОтветитьУдалить
  8. Отличное руководство. Спасибо.

    ОтветитьУдалить
  9. Интересно читать, ещё и потому что нечто подобное мне совсем недавно рассказывали на работе, об организации обмена пакетами между клиентом и сервером с помощью TCP и UDP

    ОтветитьУдалить