MTU 概念
MTU( Maximum Transmission Unit),最大传输单元。用来设置 一个数据包的大小 。相当于一个最高阀值,不能超过它。
比如我们要通过 ftp 传输一段视频 viedo.avi 。
put viedo.avi ,此时,这个数据,从网络模型至上而下历经了
应用层的ftp 到 传输层的 TCP ,此时看到 MTU 为 1500 (不一定是这个数字),于是将数据按照每个包 1500 bytes 分包,以便后续发送出去。
MTU 系统有默认值
MTU 平时我们并不需要设置。数据太大,系统会自动帮你按照默认值分包发送,不需要手动设置。但你可以查询这个值。
查询 windows 本机使用 MTU
命令:ping -f -l 1473 192.168.0.1
正在 Ping 192.168.0.1 具有 1473 字节的数据:
需要拆分数据包但是设置 DF。
需要拆分数据包但是设置 DF。
命令:ping -f -l 1472 192.168.0.1
正在 Ping 192.168.0.1 具有 1472 字节的数据:
来自 192.168.0.1 的回复: 字节=1472 时间=6ms TTL=64
来自 192.168.0.1 的回复: 字节=1472 时间=10ms TTL=64
ping 的参数
-f 在数据包中设置“不分段”标记(仅适用于 IPv4)。 //意思就是按照 -l 给的数值分包。
-l 发送缓冲区大小。//设置一个数据包要多大
系统本身 MTU 默认值是 1472 .
第一次命令的意思是每个包 1473 大小,不分包!你看着办吧。系统回复:一个包我最多放 1472 ,放不下 1473 个字节,干不了!
第二次则将 MTU 值设置为 1472 ,还是不分包,但是系统可以接受这个数值,觉得 ok 了。
说明系统能发送的最大数据包是 1472 (其实最后发送前,还要加上一些身份信息 28 byte,实际上应为 1500 )。
网友评论