Задать вопрос

Как определить протокол без привязки к порту?

Всем привет.
Кто-нибудь сталкивался с вопросом опредедения протокола без привязки к номеру порта? Может существуют какие-нибудь алгоритмы, например, как делает это wireshark. Может существует какая-то библиотека, в которой это реализовано?
Да, например, в http понятно как: можно попробовать найти какие-то шаблоны, но что делать в других протоколах, по типу ftp, pop3 и т.д не очень понятно.
UDP: Определение протоколов прикладного уровня.
  • Вопрос задан
  • 519 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Nipheris
@Nipheris Куратор тега C++
https://www.wireshark.org/lists/wireshark-dev/2008...

....
For example TCP defines port 80 only for the use of HTTP traffic. But, this convention doesn't prevent anyone from using TCP port 80 for some different protocol, or on the other hand using HTTP on a port number different to 80.

To solve this problem, Wireshark introduced the so called heuristic dissector mechanism to try to deal with these problems.

По ссылке в мейлинг-листе вайршарка дают подробный ответ на этот непростой вопрос.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Tabletko
никого не трогаю, починяю примус
Тип протокола указан в заголовке в ip пакете. Заголовки описаны в RFC
Ответ написан
@res2001
Developer, ex-admin
И FTP и POP3, а так же SMTP, IMAP и многие другие являются текстовыми протоколами, там так же можно определить протокол по содержимому пакета.
В двоичных протоколах такой метод то же может работать, только анализировать нужно уже двоичную информацию, а не текстовую.
В любом случае для анализа нужно знать сам протокол хоть текстовый, хоть двоичный.
Но, конечно, не все так можно определить. Например, если любой из протоколов спрятан за SSL, то снаружи вы увидите шифрованный трафик, а что внутри без расшифровки понять уже не возможно.

Кроме того определение протокола по номеру порта - так себе идея, т.к., наверное, любой сервер поддерживает возможность смены порта.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы