我们接下来要讲下经常遇见的MTU值问题。后文有ping、icmp、mtu、mss介绍内容大家可看看。
遇到MTU的问题是怎样的?小的数据包能够通过,大的数据包过不去。比如用正常的ping能通,端口也能过,就是某些应用过不去,这时候可以考虑是不是MTU值的问题。如何测试是不是MTU值问题呢?
一、测试分析
测试拓扑:
R1和R3的MTU值为1500(网络设备默认MTU值)。
将R2的F0/0、F0/1接口的MTU值配置为500。
1)R1发送至R3的数据包为100bytes,其中数据为100-20=80bytes,R2不会对数据包进行切片。
2)R1发送至R3的数据包为1500bytes,且能进行切片,R1设备发送数据为1500-20=1480bytes,R2发送出去时对数据包切片,其中数据的长度为1500-20=1480bytes,因为F0/1接口MTU为1500,所以每个数据切片大小为480、480、480、40。每个切片加上IP包头为500、500、500、60。这时候是能够进行切片的情况,如果发送的数据包是不能切片的,那R2将数据包丢弃。
3)R1发送至R3的数据包为1500bytes,且不能进行切片,这时候数据包将会在R2上丢包。
二、wireshark抓包分析MTU值对数据的影响
1)ping默认为100bytes,且允许切片(实际包大小为100-20=80bytes)
wireshark抓包分析:
Total Length:100,总长度为100(IP头部+数据)
Don’t fragment:Not set,数据包可以切片
More fragment:Not set,是否有后续的包(能切片才有用)
2)将ping设置为1500bytes ,且允许切片(实际包大小为 1500-20=1480bytes)
ping 23.1.1.3 size 1500
wireshark抓包:R1和R2线路(R1发送R2的1500数据包(IP头部+数据),数据为1480,且不进行切片)。
wireshark抓包:R2和R3线路如下(R2发送R3的1500数据包,切片为4份。数据包为500+500+500+60,数据为480+480+480+40=1480)。
序列号2079~2082为分片
2079:500-IP头部(20)=480
2080:500-IP头部(20)=480
2081:500-IP头部(20)=480
2082:60-IP头部(20)=40
3)将ping设置为1500bytes ,且不允许切片(实际包大小为 1500-20=1480bytes)
ping 23.1.1.3 df-bit size 1500
ping上bf-bit代表不允许切片。
ping的M代表因为不能分段发送失败,
wireshark抓包:R1和R2线路(抓包显示Don’t fragment:set,代表不能切片。1500的包在R2上直接丢弃。)。
通过以上测试就可知道网络MTU多大。
二、知识点介绍
1)IP头部20bytes
IP头部20bytes如下
2、PING
1)什么是PING
PING (Packet Internet Groper),因特网包探索器。
其目的就是让我们能够检测网路的连线状况﹐也能确保连线的准确性ping (Packet Internet Groper),因特网包探索器,我们主要用它来测试连通性,比如现在上不了网,多数情况下会使用ping测试下,而且ping工具可以支持windows、mac、linux、网络设备等。
2)ICMP是什么?
ICMP是(Internet Control Message Protocol)Internet控制报文协议。
我们使用的ping调用的就是icmp协议,ping是一个应用工具而已。打个比方,我们打开IE浏览器访问网站,这时候是IE浏览器调用http协议,也可以使用火狐、Google、360、搜狗等浏览器调用http协议。ping好比浏览器,icmp好比http。
3)ping命令
data:改变发送数据(默认数据为0xabcd)
df-bit:不允许切片(默认允许切片)
repeat *:发送包的数量(默认5个)
size *:发送包的大小(默认100bytes)
source *:发送包的源地址
timeout:超时时间(默认2S)
validate:验证回复数据(默认为否)
三、MSS是什么?
MSS(Maximum Segment Size 最大分段大小)。
网络上传递数据,很多时候要考虑到能传递单个最大数据的大小(MSS=MTU-TCP-IP)。打个比方你要邮寄手机和邮寄沙发有什么区别?快递对快件的大小是有限制,手机小容易邮寄,邮寄的沙发太大邮寄不了,这时候只能走物流。但是对于客户来说到底快递能邮寄物品(除去包装)最大体积是多少?这时要减去包装盒的大小,剩下的才是里面真正物品的大小。这个物品的大小限制就好比MSS。
在网上最大发送单个数据的大小叫做MSS或者是TCP MSS,但是也要考虑到MTU值。
四、MTU是什么?
MTU(Maximum Transmission Unit)最大传输单元。
网络上传递数据,很多时候要考虑到能传递单个最大数据单元的大小(MTU=TCP+IP+数据)。上面MSS的比方中的快递对快件的大小限制就是MTU。
MTU值是发送端和接收端按照最小的MTU值进行计算,比如发送端的MTU为1500,接收端的MTU为2000,这时候协商的MTU为1500
五、MSS和MTU区分、计算。
网络工程师更关心的是MTU值,因为我们就想快递一样,比较关心包装后的大小。这个包装就是TCP和IP。这个“包装”到底有多大呢?首先是TCP这层20个字节,IP这层20个字节。如果你用的不是TCP另算。所以MSS=MTU-TCP-IP,如果不是TCP连接,这时候就不需要减去TCP头部。
IP的20个字节
TCP的20个字节