网络中会存在这种情况,手机和电脑连同一个Wifi,然而手机访问所有网站正常;电脑能够正登录常QQ,能访问大部分网站,但部分网站能Ping通,却访问不了,重启、重装电脑都不行。
通过这些信息,我们可以排除以下三点故障:
- DNS正常,因为通Ping通域名,说明解析是正常的;
- 网站正常,既然手机能访问,那么网站不应该存在问题;
- 电脑正常,QQ和大部分网站都能成功访问。
其实这个故障不难处理,在解决前,需要简单了解下什么是MTU。
1.什么是MTU和MSS
MTU全称是Maximun Transmit Unit(IP包最大传输单元),以太网缺省IP包的MTU值为1500字节(含IP头20字节)。
- MTU = IP Header + IP Payload。实际传输中由源和目的主机协调后确定。
为了适配实际网络中数据传输情况,很多设备修改了这个值。
例如,一个IP包=1500,从源主机向目标主机的发送过程中到某一台路由器接口上,该接口MTU只有1000字节,那么IP包就需要开始分片。IP协议是由三层设备(一般是网络设备)处理的,分片和重组工作往往大量耗费网络资源,对传输性能的影响很大,所以网络专家们便考虑能否避免分片。
2.什么是PMTU
为解决分片导致的资源浪费方法就是PMTU,全称是Path Maximun Transmit Unit Discovery(传输路径最大传输单元发现协议),那么它是如何在避免分片的呢。
还是上面的例子,一个IP包=1500,从源主机向目标主机的发送过程中到某一台路由器接口上,该接口MTU只有1000字节,那么IP包就需要开始分片。而我们在IP头中设置标志位DF=1,意思是IP包在传输的过程中不允许分片。IP包因为不能分片所以被该路由器丢弃了,路由器会发一个ICMP消息包,告诉源主机重新协商MTU值。
这个ICMP包内容主要有:type = 3, code = 4, MTU = 1000(路由器接口的MTU值)。这样源主机收到数据后,源主机就会把MTU值修改为1000,继续发送,直到发现链路中最小的MTU值。
3.PMTU会导致网络故障
PMTU虽然美好,但是也存在一个问题,就是我们并不能确保ICMP错误包正常返回。
- NAT协议,地址转换协议导致数据包真实的源IP被修改,这种由外向内的ICMP包并不能找到源主机;
- 网络设备,部分路由器和防火墙设备做了安全设备,拒绝ICMP出错信息通过。
于是应用了PMTU的源主机一直重传数据包,当到达极限次数后就关闭了连接,也就导致这部分网站无法访问。
4.怎么解决故障
既然已经知道原因,那么解决故障的方法也就呼之欲出了。
- 进一步修改为更小的MTU值;
- 关闭PMTU选项,网速慢总比访问不了强啊。
网友评论