关于tcp分段重组的疑惑

可以参考原帖:https://blog.csdn.net/u010643777/article/details/79503343

以下是问题描述,以及自己的理解,依据的链接也会提供出来:

问题描述:

  有个问题,困扰我很久,在tcp传输中,应用层的数据大于MTU,则TCP需要进行分段传输,假设一段应用层数据恰好需要两个tcp报文传输。那么,我的问题是,接收端是如何将数据提交给应用层?

我的困惑是,tcp是如何在接收到这两个数据包,获知这段发送端的数据已经传输完成,该提交给上层,而不是需要等待第三个包?为什么问这个问题,看了sctp协议,其中就有字段标志数据的开始与结束。但

是TCP协议里面没有这样的字段。若没有这样的信息,显然接收端应用程序在处理数据的时候,会出现边界模糊的现象,就是数据粘包。

个人理解:

  可以利用窗口大小和第一个数据的序列号计算出最大可接收的数据序列号。这样就算出了TCP的边界包。

参考资料:

  https://stackoverflow.com/questions/14834602/netty-does-it-need-to-care-tcp-segments-reassembly

  https://www.cnblogs.com/alifpga/p/7675850.html

 

猜你喜欢

转载自www.cnblogs.com/workharder/p/12304625.html