Я работаю над приложениями, которые обмениваются данными через канал TCP через библиотеку windivert. Он отлично работает для небольших пакетов, но в случае больших пакетов TCP, то есть более 10000 байт, сегменты теряются во время передачи. Ниже приведен сценарий:
- 11086 байтов данных, разделенных на 20 сегментов по 536 байтов
- Я получаю случайные пакеты, т.е. иногда 18 или 19, а иногда все пакеты
- В случае потери пакетов отправляется DUP ACK или происходит повторная передача
- Иногда пакеты поступают не в порядке
- Для каждого пакета, который получает приложение, отправляется ACK
Это связано с тайм-аутом ACK или чем-то еще?