一个http包很大,在tcp层被分成了多个tcp包,如果某个tcp包丢失,应用层会读取这个http请求吗?

发布于 2022-09-11 16:32:02 字数 76 浏览 23 评论 0

一个http包很大,在tcp层会被分段,即被分成了多个tcp包,如果其中某个tcp包丢失,并且重传失败,那应用层会读取这个http请求吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

遗弃M 2022-09-18 16:32:02

tcp是可靠连接,你怎么理解“可靠”两个字?

补充回答。

答案是肯定的,但可能只能读取一部分,这要取决于丢失的包所在的位置。

具体来说,tcp向上层提供的数据肯定是按顺序排好的。比如一共有1 2 3 4 5五个包,假设前3个包的大小可以填满tcp的缓冲区,那么如果第4个包丢失,这时候并不会影响应用层接收前三个包。而如果是前三个包里面发生丢失,即使4 5都正常接收也不行,因为前面还有包没有收到,这时候tcp是不会向上层提供数据的。

这里面的关键是要了解tcp缓冲区,以及tcp所提供的顺序保证(这也是可靠性的一个方面)机制。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文