Я обработал несколько файлов pcap
, извлек отдельные пакеты и поместил их в структуру данных для каждого потока (таблицу потоков) в виде списка пакетов. Теперь, поскольку пакеты могут поступать не в порядке, мне нужно соответствующим образом изменить их порядок. Моим основным критерием является поле порядкового номера из заголовка TCP
; Я предполагаю, что это единственный способ переупорядочить TCP
пакеты?
При извлечении пакетов из pcap
файлов я уже прочитал значение SEQ и сохранил в своей структуре для каждого пакета, а также следующий (ожидаемый ) значение последовательности, как pkt->seq + TCP_segment_size
.
Теперь, каков будет правильный подход для этого? Я мог бы отсортировать список пакетов в потоке по значению SEQ, но это будет очень медленно.
Также: мне нужно получить ISN (начальный порядковый номер) перед началом повторного заказа? (в основном 1-й пакет с установленным битом SYN
будет иметь ISN в seq
поле заголовка TCP). Проблема в том, что такой пакет может отсутствовать (пример: начался захват после завершения рукопожатия.)
Как повторный заказ нормально сделан?