① 计算机网络那些事之 MTU 篇
大家好,我是咸鱼,今天我们将探讨计算机网络中的一个重要概念——MTU(Maximum Transmission Unit,最大传输单元)。
MTU是指数据链路层允许传输的最大数据帧大小,以字节为单位。以 CentOS 7 为例,通过ifconfig命令可以查看其MTU值。MTU的设定涉及到数据传输效率和网络延迟的问题。
数据在数据链路层以数据帧形式传输,设定合适的MTU大小可以减少传输次数,降低网络开销。过大的MTU可能导致网络延迟增加,因为一次传输的数据量大,占用链路时间长,且数据包一旦出错,就需要整体重传,代价很大。
以太网的标准MTU值为1500字节,这个值源于早期以太网的共享链路设计,为了保证CSMA/CD机制,规定了帧长度限制。尽管技术发展,但这个值基本未变。随着网络速度提升,一些厂商提出巨型帧(Jumbo Frame),但标准尚未确定。
当发送的数据超过MTU时,需要进行分片,例如,大于1500字节的数据会被拆分成几个小于MTU的包发送。对于小于最小帧长度的,需要添加填充数据以满足要求。
要确保数据不超过MTU,需要上层协议如IP和TCP配合。比如,TCP知道自己的MSS(最大段大小),并在建立连接时协商双方的MSS值,以避免数据过大导致的分片。TSO(TCP Segmentation Offload)技术则减轻了主机的分片负担,提高网络性能。
总的来说,MTU是网络设计中的关键参数,影响着数据传输效率和网络性能,理解并正确配置MTU对于网络优化至关重要。