tcp,udp报文最大长度是怎么样的呢?
先来看看各个报文格式:
ip报文
tcp报文
udp报文
ip和udp都有16位的长度字段,所以ip和udp报文的最大负载长度应该为2^16,64KB
网络层限制:
MTU(Maximum Transmission Unit,最大传输单元),这限制了ip报文长度,ip报文长度大于mtu,就需要分片。通常设为1500字节。
在网络层,ip提供不可靠传输服务,一旦收到的数据报分片丢失部分或部分出现差错,就会全部丢弃,而不会选择重传。
传输层限制:
tcp协议中有个MSS,tcp通常将数据分成长度为MSS的若干块。
总结:
ip报文由于其长度字段限制,最大负载长度为64KB,而由mtu限制,报文会分片为长度为mtu的若干段。
udp因没有序号等字段,所以无法分片,最大负载长度64KB,受制ip报文限制,数据最大负载为64KB-20(ip)-8(udp)
tcp:目前来看,tcp的最大负载限制应该是其分片序号,2^32*mss,如果按MSS=1460来算,接近6TB,但这绝不可能,毕竟还有重传等操作,不过我觉得可以认为tcp的最大负载很大。(—_—)