2013-12-09 2 views
3

Возможно ли получить TCP-пакеты в неправильном порядке, обозначенные порядковым номером? Что происходит тогда на принимающей стороне? Есть ли какая-либо очередь, которая содержит карманы, которые появились «слишком рано», например?TCP - получено в неправильном порядке

+2

Да, конечно, есть, иначе это не сработает, не так ли? Или реализация просто отбрасывает ранний пакет. Вопрос не в тему. – EJP

+0

'Есть ли какая-либо очередь, которая содержит карманы, которые появились« слишком рано », например?' Да - пакет реализован на стороне приемника. Как упоминалось в @EJP, это дико не по теме для StackOverflow, и это то, что очень легко найти в Интернете (и показывает очень простое понимание того, как TCP должен работать). – admdrew

ответ

2

Возможно. У получающего процессора TCP есть несколько вариантов того, что делать. Единственное, чего он не может сделать, это доставить данные в этих пакетах вне порядка в процесс получения из строя.

  • Принимающий процессор TCP может отбросить данные не по порядку. В конце концов, отправляющий механизм TCP повторит их передачу. Прежде чем это произойдет, оно, безусловно, также повторит передачу данных в промежутке. Когда поступают данные в промежутке, принимающий двигатель может передать его в процесс приема по порядку.
  • Принимающий процессор TCP может сохранять данные не по порядку. В конце концов, либо данные в пробеле прибудут, либо отправляющий механизм TCP повторит его передачу. В любом случае, пробел будет заполнен, и принимающий механизм может передать все данные в процесс приема по порядку.
  • Принимающий процессор TCP может сохранять данные не по порядку и намекать на отправляющий механизм TCP, чтобы он повторно передавал данные в промежутке. Он делает это, отвечая с повторным подтверждением последнего полученного байта данных в порядке. Это то, что делают большинство TCP-движков.
Смежные вопросы