计网:TCP报文没有总长度字段,它是如何判断出它的数据载荷中有效数据和填充数据的呢?
在 TCP 报文中,数据载荷中有效数据和填充数据的界限是由报文头部中的长度字段来指定的。TCP 报文头部包含了多个字段,其中一个是长度字段,指定了整个 TCP 报文的长度,即头部长度和数据载荷长度之和。
TCP 协议使用这个长度字段来确定数据载荷的长度。TCP 协议规定,如果数据载荷长度不足一个数据块(通常是 MSS,即最大段大小),则会在数据末尾填充一些额外的字节,使得数据载荷的长度达到一个数据块的长度。这些填充字节是无用的数据,也称为“填充数据”。
因此,TCP 协议根据长度字段来判断有效数据和填充数据的界限,从而正确地解析 TCP 报文中的数据载荷。
--GPT
TCP报文中没有总长度字段,但它有一个16位的数据偏移字段,用于指示TCP头部的长度。由于TCP头部长度是固定的,因此TCP协议可以根据数据偏移字段计算出数据载荷的起始位置。在TCP头部之后的数据部分,TCP协议会根据TCP头部中的长度信息,计算出数据部分的长度,从而判断出有效数据和填充数据的边界。这样,TCP协议就可以正确地将有效数据交付给上层应用程序。
事实上前面提到的几个机制可以保证传输的可靠性,但是一条一条信号的发,显然效率太低了。我们现实生活中批处理被应用于方方面面,考虑一次传输一批信号也是常规套路,那一次发多少呢?一次发多少,需要接收方根据能一次收多少决定。