c: переупорядочение пакетов TCP на основе поля SEQ - PullRequest
0 голосов
/ 11 марта 2020

Я обработал несколько файлов pcap, извлек отдельные пакеты и поместил их в структуру данных для каждого потока (таблицу потоков) в виде списка пакетов. Теперь, поскольку пакеты могут поступать не в порядке, мне нужно соответствующим образом изменить их порядок. Моим основным критерием является поле порядкового номера из заголовка TCP; Я предполагаю, что это единственный способ переупорядочить TCP пакеты?

При извлечении пакетов из pcap файлов я уже прочитал значение SEQ и сохранил в своей структуре для каждого пакета, а также следующий (ожидаемый ) значение последовательности, как pkt->seq + TCP_segment_size.

Теперь, каков будет правильный подход для этого? Я мог бы отсортировать список пакетов в потоке по значению SEQ, но это будет очень медленно.

Также: мне нужно получить ISN (начальный порядковый номер) перед началом повторного заказа? (в основном 1-й пакет с установленным битом SYN будет иметь ISN в seq поле заголовка TCP). Проблема в том, что такой пакет может отсутствовать (пример: начался захват после завершения рукопожатия.)

Как повторный заказ нормально сделан?

...