Что происходит, когда приходит порядковый номер TCP, который не соответствует ожидаемому?

Я пишу программу, которая использует libpcap для захвата пакетов и повторной сборки потока TCP. Моя программа просто следит за трафиком, поэтому я не контролирую прием и передачу пакетов. Моя программа игнорирует весь трафик, отличный от TCP/IP.

Я рассчитываю следующий ожидаемый порядковый номер по ISN, а затем по последовательным номерам SEQ. Я настроил его так, что каждое TCP-соединение однозначно идентифицируется кортежем, состоящим из исходного IP-адреса, исходного порта, целевого IP-адреса и целевого порта. Все идет гладко, пока я не получаю пакет с порядковым номером, отличным от ожидаемого. Я загрузил снимки экрана, чтобы проиллюстрировать то, что я описываю здесь .

Мои вопросы :1. Где данные, которые были в "потерянном" пакете? 2. Как порядок номеров SEQ восстанавливается в этой ситуации? 3. Что я могу сделать, чтобы справиться с этими событиями.

Пожалуйста, помните; однако я не пишу программу, которая придерживается TCP. Я пишу программу, которая пассивно отслеживает сетевой трафик для потоков TCP и пытается сохранить необработанные данные на диск, и я не понимаю, почему возникает описанная выше ситуация и как я могу запрограммировать ее.

Спасибо

5
задан zero_dev 31 July 2012 в 18:53
поделиться