mtu是个什么鬼

您现在看到的是FAQ-IP基础问题专题中的 6/39

MTU是个什么意思

mtu就是你的肚子能吃几碗饭的意思,比如你一口气能吃两碗米饭,这就是你的MTU了,再吃就撑死了

但是当你撑死的时候,你的体重是:你的身体其他器官重量+ 两碗米饭(MTU)的总和

所以,你看这个ppt, 这是一个局域网的数据帧= SMAC(源mac地址,6个字节=48个bit)+ DMAC(目标mac,48个比特)+长度字段(2个比特)+ payload (这个就是数据,就是你肚子里面真真正正的货,可以是46-1500 字节,你可以理解成你的胃的容量)+ crc (校验位,4个比特,相当于在你身上按个gps监控,看你正不正常) = ZD(6+6+2+1500+4= 1518)

Q:路由器上是不是发送的一个数据包的ZD长度就是MTU

A: 不是的! 路由器发送的是“纯数据” ,也就是payloadZD的是1500字节,就相当于你光个身子,体重是1500字节,但是路由本身发出去的还要有自身的头部信息,比如源mac地址,目标mac地址,长度字段,CRC字段(6+6+2+4 = 18字节),就也就是你行走江湖,不能光哥屁股,你还要穿件衣服,但是衣服的重量是18字节,你自己的肉身重量是ZD1500字节,所以你在江湖上是ZD1518字节重

Q: 如果一个数据包特别大,大于要经过的路由器的MTU怎么办

A: 如果你的肚子一口气能吃2碗羊肉泡,现在有3碗泡馍,你会怎么吃, 当然是先吃了2碗之后,消化了再吃,不能大于你的MTU

比如这张图,Z-U-I左边的数据包是1480字节,要经过MTUZD是1300的路由器,那就把数据包拆成两个,一个MTU是1280,一个MTU是200, 这样就能经过路由器了

这就是数据包的切包的过程,你有没有看过魔术切美女,就是把美女切成3段,头,肚子和腿

然后发到目的地再组合 ,这个过程就是路由器的软件CPU要干的(切包,组包),这就是路由器CPU为什么慢了,因为这个过程慢!

这个慢也是为什么有的人会问你,传统的为什么路由慢,这就是其中之一,因为要把每个美女(数据包)切割,在组装,数据量特别大的时候,CPU就开挂了