TCP的MTU为啥缺省的是576
俺在读《Unix网络编程》第一卷,提到TCP的MTU缺省为576,俺查阅了一些rfc879 rfc1191发现都直接指出缺省是576,俺是个喜欢打破沙锅问到底的人,呵呵,为啥是576呀。是不是给早期的网卡硬件实现有关系。
有知道的回一个,谢了
[解决办法]
MTU是网络连接中允许在一个物理帧中传输的最大数据量,TCP/IP驱动程序需要知道这个数值以便设置合适的数据包长度,以避免出现不必要的拆分过程。不同网络的MTU缺省值不一样,以太网的标准值为1500,这也是Windows 95使用的缺省值,适合于本地局网,而多数ISP提供的拨号网络的标准值为576,原因是Internet上不少路由器也为576。原则上来说,只要网络连接稳定性高,MTU越大则传输效率越高。但是,如果接收机器所在网络或传输路径上路由器的MTU小的话,数据帧将不得不再次被拆分,这样反而降低了效率。另外,Windows 98已改变了缺省的MTU,对低于128Kbps的连接自动设置成576。
标准的TCP/IP分组大小是576字节,减去分组中固定为40字节大小的地址信息及24字节的其它信息,最多还包含512字节的数据。
至于为什么是512字节,我没查到,不过至少编程方便是一个原因,512是2的N次方,适合一些数据处理的算法,在存储方面也有优势。至于为什么不是256字节或者1k,我想大概是在性能和可靠性两者之间的一个平衡。