Может кто-нибудь один объяснит, как бороться с неупорядоченными пакетами. Я использую необработанный сокет для захвата пакетов и их анализа по мере их поступления, но некоторые из них поступают в неправильном порядке, например:
- Id ........... Флаги
- 16390: (PSH, ACK)
- 16535: (PSH, ACK)
- 16638: (ACK)
- 16640: (PSH, ACK)
- 16639: (ACK)
- 16695: (PSH, ACK)
Пакеты с идентификаторами: 16390, 16535, 16695 являются отдельными пакетами и могут быть обработаны свободно
Пакеты с идентификаторами: 16638, 16640, 16639 являются последовательностью пакетов и должны быть помещены в порядке возрастания перед синтаксическим анализом.
Что еще хуже, пакеты с Push-флагом иногда появляются первыми, поэтому я просто передаю их парсеру, а затем пакет, который предшествует, приходит, и парсер просто отбрасывает его как поврежденный.
Есть ли способ с этим справиться?