任何人都可以解释接收器如何知道两个非连续的TCP段是否属于同一个数据包?

时间:2011-09-12 09:52:51

标签: tcp

任何人都可以解释接收者如何知道两个非连续的TCP段是否属于相同或不同的数据包?它如何知道下一个段是否是数据包中的最后一个段?

2 个答案:

答案 0 :(得分:2)

接收器不会将TCP段组装成数据包,而是将它们组装成数据流。接收方通过其序列号知道其接收的段中流的位置。

您是否可能期望接收应用程序的read()系统调用的计数结果符合发送应用程序的write()系统调用?如果是这样,你会失望的。 TCP流是字节方式的,而不是分组方式的流。它们既不保留也不尊重发送系统调用的边界。

答案 1 :(得分:1)

TCP不处理碎片。这是一个IP问题。数据包仅在完成时才到达TCP级别。 IP使用标头中的特殊字段来指示数据包是否碎片,如果是,则接收的片段是否是最后一个。

你可以看看:
Transmission Control Protocol
Internet Protocol