MTU值如何影响网络访问。

2009年4月16日星期四

在普通家用路由器中一般都有MTU值的设置,厂商默认一般都会注明不要随便更改该值,那到底应不应该更改MTU值?更改对网络访问的有没有影响呢?了解了下面几个概念后您至少对该值有一个概括性的了解。

MTU全称是(MAXIMUM TRANSMISSION UNIT): 是指某个数据传输协议,一次最大传输的数据量的值。这个值以字节表示,通常在路由设备中可以看到默认设置一般是1492或1464,而Windows或大部分以太网传输默认为1500.我们可以把“承载数据传输的载体”看做为“水管”,设置较小的MTU值最大好处是当某个数据包过大时不至于堵塞“管路”,但同时也会导致数据传输效率降低。

IP分片技术(Fragmentation):“传输载体”一般要限制每次发送数据帧的最大长度(上面说的1492或1464是路由器限制的MTU大小)。任何时候IP层接收到一份要发送的IP数据报时,它要判断向本地哪个接口发送数据(选路),并查询该接口获得其MTU。IP把MTU与数据报长度进行比较,如果需要则进行分片。分片可以发生在原始发送端主机上,也可以发生在中间路由器上。比较容易混淆的是这里的分片技术和IP数据报分组不是一个概念。IP数据报是指IP层端到端的传输单元(在分片之前和重新组装之后),分组是指在IP层和链路层之间传送的数据单元。一个分组可以是一个完整的IP数据报,也可以是IP数据报的一个分片。

ICMP Internet信息控制协议(Internet Control Message Protocol):ICMP是一个“错误侦测与回报机制”,其目的就是让我们能够检测网路的连线状况﹐也能确保连线的准确性。比如说:侦测远程主机是否存在;建立和维护路由资料;重导传输资料路径;流量控制等。例如:PING命令就是利用ICMP协议进行传输测试的。但ICMP也会导致很多网络故障例如Death PING攻击等,所以大部分路由设备默认禁止了外部ICMP协议。

标志字段:在使用IP分段技术时,标志字段在分片数据报中起了很大作用,在数据报分片时把标志字段的值复制到每片中。除了最后的片,所有的片的比特都是置1的,如果将最后片比特置1,则IP将不对数据报进行分片。如果是遇到需要进行分片但设置了不分片的比特,数据报会被丢弃并发送一个ICMP差错报文并通知源主机废弃的原因。如果某些设备禁止了ICMP那么会导致一些问题。

目前我们使用的宽带主要是电信的ADSL,但Internet上的网络环境相对复杂,哪怕是在电信内部不同的地区电信MTU的值也是不同的,更不要说各类网络之间的数据传输。不过不管如何,只要存在MTU值那么就会涉及到分片,如果分片错误或者分片过多过少都会影响网络传输速度或导致网络故障。而大部分厂商在路由器上默认禁止了ICMP协议,虽然设置满足了一定的安全性,但遇到了需要分片但设置了不分片的比特数据,则无法依靠ICMP差错报文通知源主机错误的原因。
也就是上面的这些问题可能导致了我们在使用网络时产生很多奇怪的现象:比如用户无法访问某个特定的网站;在访问数据量大的时候会突然断线;网速非常缓慢,却又没有病毒或其他可能的原因;ADSL成功拨号但无法上网等。
如何解决和优化已经超出了本文的范围,但网络上类似的问题比比皆是,有了上面的概念相信你能更容易的找到答案。

0 评论: