Как обрабатывать наложение данных в разных сегментах TCP? Изучаю механизм работы TCP и возникло один интересный случай. Есть 3 сегмента с данными 1) Seq = 1, Len = 10 (заливка данных 0x00) 2) Seq = 11, Len = 10 (заливка данных 0x01 байтом) 3) Seq = 15, Len = 10 (заливка 0x02 байтом) В приемник пришли сегменты в следующем порядке: 1, 3, 2 Данные второго сегмента накладываются на данные третьего. Как должен поступить приемник? Как должен поступить приемник, если данные пришли в порядке 1, 2, 3
В данном случае, при поступлении данных в порядке 1, 3, 2 приемник должен обрабатывать их следующим образом:
1) Приемник должен сохранить данные первого сегмента (Seq = 1, Len = 10), так как они пришли первыми и не пересекаются с остальными данными.
2) Приемник должен также сохранить данные третьего сегмента (Seq = 15, Len = 10), но начиная с 16-го байта, так как данные второго сегмента (Seq = 11, Len = 10) уже пересеклись с данными третьего сегмента.
3) При поступлении данных в порядке 1, 2, 3 приемник должен сначала обработать данные второго сегмента (Seq = 11, Len = 10), затем данные первого сегмента (Seq = 1, Len = 10) и наконец данные третьего сегмента (Seq = 15, Len = 10).
Принимающая сторона должна правильно учитывать номер последовательности (Seq) каждого сегмента TCP, чтобы правильно восстановить исходные данные из них.
В данном случае, при поступлении данных в порядке 1, 3, 2 приемник должен обрабатывать их следующим образом:
1) Приемник должен сохранить данные первого сегмента (Seq = 1, Len = 10), так как они пришли первыми и не пересекаются с остальными данными.
2) Приемник должен также сохранить данные третьего сегмента (Seq = 15, Len = 10), но начиная с 16-го байта, так как данные второго сегмента (Seq = 11, Len = 10) уже пересеклись с данными третьего сегмента.
3) При поступлении данных в порядке 1, 2, 3 приемник должен сначала обработать данные второго сегмента (Seq = 11, Len = 10), затем данные первого сегмента (Seq = 1, Len = 10) и наконец данные третьего сегмента (Seq = 15, Len = 10).
Принимающая сторона должна правильно учитывать номер последовательности (Seq) каждого сегмента TCP, чтобы правильно восстановить исходные данные из них.