Я записал трассировку пакета и хотел бы написать сценарий, который позволит мне изолировать совпадающую пару пакетов подтверждения и последовательности (нет другого способа отфильтровать все другие пакеты), чтобы затем я мог рассчитать время возврата. (RTT) между 2 компьютерами
Проблема, с которой я столкнулся, заключается в том, что я не могу фильтровать 2 пакета на основе их номеров ACK и Sequence.
Это должно быть выполнено с помощью tcpdump, но языки сценариев, такие как awk, подходят
Вы можете использовать proto[x:y]
форма фильтрации в tcpdump для этого.
RFC 793 сообщает нам, что порядковый номер начинается с байта 4 заголовка TCP, а номер подтверждения - с байта 8; оба имеют длину 4 байта.
Таким образом, вы можете искать пакеты, у которых есть порядковые номера и номера подтверждения. 123456
как это:
tcpdump -r capturefile tcp[4:4] = 123456 or tcp[8:4] = 123456
Для этого вам нужно использовать абсолютные числа seq / ack, поскольку tcpdump сопоставляет значения с необработанными данными в пакете. Использовать tcpdump -Sr filename
для отображения файла захвата с абсолютными порядковыми номерами.