Все, кто отлаживают сетевые приложения должны быть знакомы с такой полезной программкой как Wireshark. Она позволяет разобрать любой пакет по косточкам и знает целую кучу разных протоколов.
Но всё же не все, что не удивительно, ведь дофига протоколов закрыты и вообще могут быть самопалом. Но и их отлаживать надо.
Выглядит это примерно так: малюсенький пакетик разобран от нуля и до конца, по всем полям. И даже что-то можно проверить на допустимые значения или на корректность (контрольную сумму).
читать дальше
Вивисектор протокола, хотя он называется dissector, если правильно, можно добавить, написав специальную dll (или .so для *nix).
Но это ж жесть, там только чтоб скомпилировать пример, надо поставить кучу разных инструментов и даже сам wireshark надо компилировать при этом. Ужас.
Не всё так печально: есть такая гораздо более простая вещь: Wireshark Generic Dissector. Библиотечка скомпилирована и ей нужны только текстовые описания протоколов, чтоб она могла их расписывать по полям.
Чтоб написать первый свой вивисектор, сделаем несколько подготовительных шагов:
1. Скачиваем плагин отсюда для нужной версии wireshark (у меня 1.8).
2. Раззиповываем и копируем плагин в папку %Program Files%/Wireshark/Plugins/1.x.x/
Если эта дислокация для плагина и файлов описания протокола не устраивает (win 7 и иже), есть много вариантов иных, как поступить, но это смотрите документацию.
Собственно, подготовка закончена. Осталось написать сам вивисектор.
1. Введение;
2.
Пример;
3.
Типы данных и выбиратор.
...