网络数据包-数据总是按顺序接收吗?

网络数据包-数据总是按顺序接收吗?

假设您坐在家里的电脑前,https://google.com通过您选择的浏览器发出请求。TCP 握手完成,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>

我只是在谈论数据包中的数据(有效负载)在应用层。我想知道数据包的接收顺序是否有结构。如果数据包没有按顺序到达,浏览器如何重新组装它?

答案1

使用 HTTP 时,数据将按顺序接收在应用层。这是因为 HTTP 在传输层使用 TCP 协议。TCP 提供的服务之一是顺序段排序。这是通过在 TCP 标头中设置数据包序列号字段来实现的。

但这并不意味着数据包实际上按顺序到达系统。另外,其他传输协议(如 UDP)不提供段排序,因此段按接收顺序传送到应用程序。

相关内容