TCP和1448
1448字节是实际场景下,单个TCP包的实际运载能力 。也就是说,实际场景下,上层调用send(1000KB),下层会把这1000KB封装成多个TCP包进行发送。 单个TCP包每次打包1448字节的数据进行发送。详细的TCP在传输情景wireshark截图如图1
图1
每个TCP包在理论上应该能打包更多数据才对,但是实际场景下 TCP传输为什么会以这个1448作为打包单位呢?
这个实际TCP单包传输1448字节数据的根源在于 “ 以太网 Ethernet 最大的数据帧是 1518字节”。
1500字节的MTU
以太网Ethernet最大的数据帧是1518字节。 以太网帧的帧头 14字节和帧尾CRC校验4字节 (共占 18字节 ),剩下承载上层协议的地方也就是Data域最大就只剩1500字节. 这个值我们就把它称之为MTU。
我们来看看linux上MTU默认值,查证一下,cat /sys/class/net/eth0/mtu
这个MTU值可以修改,但是现在大部分计算机网络都被以太网承载,所以修改这个值没有什么实际意义。