Назад | Перейти на главную страницу

Сетевые пакеты - всегда ли данные принимаются последовательно?

Допустим, вы сидите за домашним компьютером и запрашиваете https://google.com через выбранный вами браузер. TCP Handshake завершается, и сервер Google отправляет страницы HTML / JS (и любые другие ресурсы, которые он использует).

Страницы слишком велики для отправки в одном пакете, поэтому он разбивает страницу на несколько частей ... следовательно, пакетs

Будет ли полезная нагрузка (данные) приходить последовательно?

Подобно:

Пакет 1 - получил первый

<html>
     <head>
            <script src='./blah/blah.js'</script>
     </head>

Пакет 2 -получил второй

     <body>
     <h4> Hi I'm Google.com </h4>

Пакет 3 -получил третий

      </body>
 </html>

Я просто говорю о данные в пакетах (полезная нагрузка) на прикладном уровне. Я хочу знать, есть ли структура в порядке получения пакетов. Как браузер его собирает, если он не в порядке?

С HTTP данные будут получены последовательно на прикладном уровне. Это связано с тем, что HTTP использует протокол TCP на транспортном уровне. Одна из услуг, предоставляемых TCP, - это упорядочение последовательных сегментов. Это достигается за счет наличия поля порядкового номера пакета в заголовке TCP.

Однако это не означает, что пакеты действительно поступали в систему по порядку. Кроме того, другие транспортные протоколы (например, UDP) не обеспечивают упорядочение сегментов, поэтому сегменты доставляются в приложение в том порядке, в котором они были получены.