| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Сети > Восстановить TCP соединение по списку пакетов |
| Автор: Leksey 12.3.2009, 22:54 |
| Есть следующая задача - Дамп файл , созданный программой tcpdump, нужно проанализировать и выдать следующую информацию - Для каждого tcp соединения выдать набор пар размер пакета и сколько раз пакеты такого размера были отправлены/приняты. Собственно мне не совсем понятна формулировка и что такое tcp соединение. В моем понимании это канал который устанавливается при открытии сокета. Но как эту информацию можно получить из списка пакетов? |
| Автор: jonie 13.3.2009, 09:09 |
| C++ никогда не слышал про TCP, каналы и сокеты. Может быть вам стоит почитать учебник по сетям? |
| Автор: mrbrooks 13.3.2009, 09:48 |
| Как я пологаю автор собирается писать что то типа снифера. Ну дык по этому и поиск в гугл. Но для начала автор должен учесть замечания jonie |
| Автор: azesmcar 13.3.2009, 09:52 |
| Для сниффера могу посоветовать pcap lib. Если это конечно не спортивный интерес. |
| Автор: Leksey 13.3.2009, 10:39 |
| Снифер как раз мне не надо писать. Учебник по сетям я читал как-то несколько лет назад. Просто интересно было узнать может кто-нибудь сталкивался с похожей задачей, какие поля tcp пакетов можно использовать чтобы понять что они из одного соединения и тп. |
| Автор: Leksey 13.3.2009, 11:48 |
| Спасибо. Но dump может содержать несколько tcp соединений по одним адресам и порту. Такая информация может быть восстановлена? |
| Автор: vinick 13.3.2009, 12:39 | ||
Если дамп достаточно большой, то такая ситуация в теории возможна. Можно анализировать поток на наличие спец-пакетов означающих разрыв соединения, типа FIN или RST. Подробнее лучше посмотреть в спецификации протокола. |
| Автор: Олег2005 13.3.2009, 21:10 |
| Для TCP имеется понятие TCP-сессия. Нормальная сессия всегда начинается сегментом с флагом SYN и заканчивается флагом FIN. Сессию можно восстановить с помощью сниффера - что и делают профессиональные сниффера, такие как CommView. Вам как видно восстанавливать не надо - тогда просто парсить текст дампа. Флаги S и F видны в тексте дампа. |