可能数据包小,感受不到分片带来的问题,上图数据大小改成了5000,会发现4个分片(最后一个是隐藏了),那就会多出4个IP头部,这些是无故多出来的数据,并且这4个头部不管是中间设备还是接收方都需要去解封装来看是什么内容,并且接收方根据IP头部的分片给的信息去组装,假设某一个分片中途延迟,那么这个数据包就不会完整,必须等待这片来组装后才能读取到实际的内容,这种会影响效率(多余的头部处理),增加延迟(某一个分片没到,对应的数据没法*,导致数据请求迟迟得不到响应。)更严重的其实是会加重设备的负担(可能实际中不只一个数据包分片,接收方需要把收到的进行缓存,等待所有对应的分片来才能读取到实际的数据,随着分片越多,缓存越大,对于设备的压力负担也越重),如果某一片分配丢失了,会造成这个数据包不完整,被丢弃。
(5)怎么设置合适的MTU呢
由于现在很多协议还没学习,不同的应用对应的头部不一样,自然包含的内容也不一样,这个会随着后面学习的深入,慢慢的了解,设置合适的MTU可以用Windows自带的命令可以探测,比如某个应用有问题,通过抓包发现发送的数据超过了MTU的大小,就可以适当的调整。
ping命令里面带有一个参数-f 它可以把IP包的DF位置1,让其不分片,那么超过MTU需要分片的设备发现DF位置一,则直接丢弃,返回一个ICMP的差错报文结果,通过这样来测试出一个合适的MTU值。
留一个小疑问
这里为什么1464就可以,1465不可以呢(该环境存在拨号)
“承上启下”
网络层的基础知识到这里就学习完毕了,接下来就进入传输层与应用层,对于这两层,博主会挑对初学者比较重要的部分的讲,全部讲起来就非常费时间,涉及的内容实在太多,也不是初学者层面能够理解的,下一篇就进入传输层的两大协议,TCP与UDP。
作者:一天,公众号:网络之路博客(ID:NetworkBlog)。让你的网络之路不在孤单,一起学习,一起成长。