Допустим, вы сидите за домашним компьютером и запрашиваете 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) не обеспечивают упорядочение сегментов, поэтому сегменты доставляются в приложение в том порядке, в котором они были получены.