Как сделать так, чтобы tshark показывал пакеты в порядке их прихождения?

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Аватара пользователя
жучара
Сообщения: 1161
ОС: Debian 12

Как сделать так, чтобы tshark показывал пакеты в порядке их прихождения?

Сообщение жучара »

Друзья! Вот перехваченные пакеты. Слева- время перехвата, я так понимаю, он считает от начала перехвата:

Shell

1 0.000000000 2.98.166.224 → 45.24.12.78 TCP 66 9999 → 34648 [ACK] Seq=1 Ack=1 Win=510 Len=0 TSval=3526312897 TSecr=4233646598
2 -0.002758316 45.24.12.78 → 2.98.166.224 TCP 72 [TCP Spurious Retransmission] 34648 → 9999 [PSH, ACK] Seq=4294967291 Ack=1 Win=502 Len=6 TSval=4233646598 TSecr=3526064738
3 0.000034861 2.98.166.224 → 2.45.23.56 TCP 66 9999 → 34648 [ACK] Seq=1 Ack=1 Win=510 Len=0 TSval=3526312897 TSecr=4233646598
4 -0.002810762 2.45.23.56 → 2.98.166.224 TCP 72 [TCP Spurious Retransmission] 34648 → 9999 [PSH, ACK] Seq=4294967291 Ack=1 Win=502 Len=6 TSval=4233646598 TSecr=3526064738
Вот время:

Shell

1 0.000000000
2 -0.002758316
3 0.000034861
4 -0.002810762
А на самом деле в таком порядке всё должно быть (и фо факту пакеты приходили в порядке, как показано ниже. Если бы они так делали, отчёт бы пошёл от нуля, отрицательных значений не было бы было бы удобнее, но не об этом речь сейчас, а о порядке показа)

Shell

4 -0.002810762 2.45.23.56 → 2.98.166.224 TCP 72 [TCP Spurious Retransmission] 34648 → 9999 [PSH, ACK] Seq=4294967291 Ack=1 Win=502 Len=6 TSval=4233646598 TSecr=3526064738
2 -0.002758316 45.24.12.78 → 2.98.166.224 TCP 72 [TCP Spurious Retransmission] 34648 → 9999 [PSH, ACK] Seq=4294967291 Ack=1 Win=502 Len=6 TSval=4233646598 TSecr=3526064738
1 0.000000000 2.98.166.224 → 45.24.12.78 TCP 66 9999 → 34648 [ACK] Seq=1 Ack=1 Win=510 Len=0 TSval=3526312897 TSecr=4233646598
3 0.000034861 2.98.166.224 → 2.45.23.56 TCP 66 9999 → 34648 [ACK] Seq=1 Ack=1 Win=510 Len=0 TSval=3526312897 TSecr=4233646598
Почему так происходит, я понимаю. Пакеты выводятся не в порядке перехвата, а в порядке прохождения фильтрации. tshark перехватывает ВСЕ пакеты, а вот дальше начинается процедура фильтрации. У меня фильтр большой, эксперимента ради условия фильтрации совсем даже не соответствуют порядку прихождения пакетов. На практике это означает вот что: первый пакет пришёл, время прихождения ЗАФИКСИРОВАЛОСЬ, и дальше пошла процедура фильтрации. И она идёт долго. За это время приходят и остальные пакеты и тоже все фильтруются и выводятся не в порядке прохождения, а в порядке фильтрования. Какой фильтранётся следующим, тот следующим и выведется. В моём случае видно, что пакет, пришедший первым вывелся последним (смотрим по метке времени)

Да как так-то? Мне важно увидеть именно порядок прихождения пакетов- одна из целей этого всего, а порядок прохождения фильтрации мне до одного места. А так, получается, чтобы пакеты увидеть в порядке прихождения, я этот порядок должен заранее знать и построить фильтр согласно ему- проверено- если правильно фильтр составить, то и порядок будет правильный. Подспорье: чтобы увидеть пакеты в правильном порядке, я должен составит фильтр в правильном порядке, а для этого я должен правильный порядок знать заранее (а вообще не факт, может, повезло мне просто). Как в том мультике: чтобы продать что-нибудь ненужное, нужно купить что-нибудь ненужное, а у нас денег нет. Ерунда полная.

И главное- у них же где-то там внутри есть временной порядок- вот же время. Ну пусть оно отрицательное где-то, это уже второй вопрос. Выводите отфильтрованные пакеты согласно времени и всё. Наверное, отфильтрованным пакетам придётся ждать, когда отфильруются все пакеты, пришедшие до него- ах, какое горе. Программа усложнится, возможно, для каждого отфильтрованного пакет придётся писать цикл, в котором он будет проверять, не вывелся ли предыдущий пришедний пакет. Ну да, так, как сейчас, конечно, проще, выводи все скопом, авось разберутся- это в реальном-то времени разберутся?

А потому сабж. Спасибо, кто откликнется. Debian 12.
Я просто читаю маны.
Спасибо сказали: