ip分片和mtu:
- ①分片是指ip网络层发现数据包超过了链路层上报的mtu的值(最大网络传输单元),因此将大的数据报拆分成一个一个小的数据包,并打上标签,便于对端恢复的一个流程,这个思路其实比较简单,就是少量分批的传输数据。
- ②mtu:网络最大的传输单元,通常设置为1500,网络中都是数据帧的概念,他是不管你用什么协议,包中具体数据是什么的,他唯一关心的一个细节就是数据包的大小,即这层只负责传输,实际我们使用的网络和单核cpu有点类似,即其实只有一条网线,但是好像几个用户又都能够同时访问网络,怎么做到的呢?虚拟化的分时传输,使得用户层看起来好像大家同时在共享网络一样。这也是为什么要控制最大的数据包传输大小MTU的原因,要做到分时,每个操作就要尽可能占用少的时间,经过权衡,最终定下了1500个字节的长度,相比较20个字节的数据帧头部,实际有效传输率达到了96%左右。能否再大?可以的,只不过可能导致更大的丢包率以及时间延迟,包括出错重传其实也是较小的包比较有优势。大包只要稍微有一点出错就要整个重传。所以为了公平,也是在网络忙碌的时候,大家至少都有机会上网,不会出现上不去的情况,也是减少网络传输冲突发生的概率,设置了这个mtu的值。③从个人的角度,肯定是希望mtu越大越好,因为越大意味着有效传输率就越大,网速感觉就越快。
但其实即便是个人角度,大包也会带来问题,比如重传代价、比如丢包率等,所以即便只有一个人使用网络大包并不一定必然等价于快。③因此就制定出了标准的mtu大小,需要注意的是,由于网卡都有这个mtu的概念,一次mtu这个属性是要制定成标准来执行的,否则会出现网络间设备mtu不一样的情况(现在有一些设备支持设置更高的mtu,但是如果对端MRU不支持,也是没有用的),所以mtu这个一般除非专有的内部网络,并且可以登录和设置中间所有设备的mtu的值,否则mtu是一个不太需要去修改的,使用1500默认值就可以了。因为他取决于网络路径中的最小的mtu值。④mtu测定:可以通过设置ip不分片,并观察包能否到达对端的方式来看是否支持某个大小的mtu值。