2010-04-16 3 views
0

Приветствие,Определение пакетов HTTP

Как можно определить из захваченных пакетов с помощью sharppcap, если пакет является http-пакетом или нет?

и можем ли мы определить TCP-пакеты frpm, если пакет является HTTP или нет?

ответ

3

По rfc2616 - Hypertext Transfer Protocol -- HTTP/1.1:

версия сообщения об HTTP указывается поле HTTP-Version в первой строке сообщения

Таким образом, вы можете проверять пакеты и сканирование текст версии HTTP в заголовках сообщений и/или другие известные поля протокола HTTP. Хотя этот метод не может быть на 100% точным, если сообщение разбито на несколько пакетов, оно, вероятно, будет достаточно хорошим, по крайней мере, как первый разрез.

+0

Спасибо Джастин за ваш ответ. Что я понимаю, если я захватил TCP-пакет, могу ли я определить из поля данных, если есть HTTP-сообщение? – Eyla

+0

@Eyla Да, отфильтруйте захват для пакетов TCP на порту 80, затем просто проверьте первую строку заголовка. Заголовки HTTP не нужно разбирать из двоичных файлов, как большинство сетевых протоколов, потому что данные получены в формате ASCII. Просто сохраните данные в виде строки и проанализируйте ее с помощью обычных методов синтаксического анализа строк. –

1

Похоже, вы смотрите на один фрагмент TCP. Если это произошло с самого начала сообщения, в первой строке будет версия HTTP, но если вы просто вытаскиваете случайные пакеты из сети и надеетесь, что сможете сказать, что они HTTP, вам не повезло - в фрагментах TCP нет ничего, что указывает на то, что в них. Единственный способ узнать - это посмотреть на весь разговор.

2

Я являюсь автором/сопровождающим sharppcap/packet.net.

У меня есть несколько классов, которые выполняют повторную сборку tcp и анализ http, который используется в приложении для комплексного мониторинга сети, чтобы идентифицировать и следовать http sessions. Они полностью протестированы и хорошо прокомментированы.

Они доступны для лицензирования либо на двоичном, либо на уровне источника.

Редактировать: Зачем голосовать? Для разработки кода и тестов потребовалось сотни часов, и это решение было повторно использовано. Это, безусловно, стоит рассмотреть перед повторной реализацией той же функциональности.