欢迎来到天天文库
浏览记录
ID:46682133
大小:81.00 KB
页数:3页
时间:2019-11-26
《tcpip详解-卷一-协议-116icmp不可达差错(需要分片)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、11.6ICMP不可达差错(需要分片)发牛ICMP不可达差错的另一种情况是,当路由器收到一份需要分片的数据报,而在IP首部乂设置了不分片(DF)的标志比特。如果某个程序需要判断到达目的端的路途屮最小MTU是多少一称作路径MTU发现机制(2.9节),那么这个差错就可以被该程序使用。这种情况下的ICMP不nJ达差错报文格式如图11-9所示。这里的格式与图6-10不同,因为在笫2个32bit字中,16-31bit可以提供下一站的MTU,而不再是0。类型(3)--・・代码⑷—检验和•未用(必须为0)下一站网络的MTU°0781
2、5塔31IP首部(包括选项)+原始IP数据报中数据的前8字节图11・9需要分片但又设置不分片标志比特时的ICMP不町达茅错报文格式如果路由器没冇提供这种新的ICMP差错报文格式,那么下一站的MTU就设为0。新版的路由器需求RFC[Almquistl993J声明,在发牛这种1CMP不可达差错时,路山器必须牛成这种新格式的报文。例了关于分片作者曾经遇到过一个问题,ICMP差错试图判断从路由器netb到主机sun之间的拨号SLIP链路的MTUo我们知道从sun到netb的链路的MTU:当SLIP被安装到主机sun时,这是SL
3、IP配置过程屮的一部分,加上在3.9节屮已经通过netstat命令观察过。现在,我们想从另一个方向来判断它的MTU(在第25章,将讨论如何用SNMP来判断)。在点到点的链路中,不要求两个方向的MTU为相同值。所采用的技术是在主机Solaris上运行ping程序到主机bsdi,增加数据分组长度,直到看见进入的分组被分片为止。如图11J0所示。用tcpdump观察分片ICMPAI显请求图11・10用来判断从netb到sun的SLIP链路MTU的系统在主机sun上运行tcpdump,观察SLIP链路,看什么时候发生分片。开始
4、没有观察到分片,一切都很正常在到ping分组的数据长度从500增加到600字节。可以看到接收到的回显请求(仍然没有分片),但不见回显应答。为了跟踪下去,也在主机bsdi上运行tcpdump,观察它接收和发送的报文。输出如图11-11所示。10>0•olazi*>badl:icnpx•^>0request(DF)20.000000(0.0000}bed!>Solaris:lop:echoreply(DF)30.000000(0.0000)mm>bedl:leapssolariaimtMChable■nwdtomtu■0(
5、DF)40.73B400(0.73841•olaris>badi:loap:echoxeqMBt(Dr)50e748S00(0.0104)bad!>•olarissleapsechoreply・(DF)60>74M00(0.0000)sun>bodl:1ob
6、):eolarisunrBacbable■naodtofr*gtKtu■0(DF)图11-11600字节的IP数据报从Solaris主机ping到bsdi主机时的tcpdump输出首先,每行中的标记(DF)说明在IP首部中设置了不分片比特。这意味着Solaris2
7、.2-般把不分片比特置1,作为实现路径MTU发现机制的一部分。第1行显示的是回显请求通过路由器netb到达sun主机,没冇进行分片,并设置了DF比特,因此我们知道还没冇达到netb的SLIPMTUo接下来,在笫2行注意到DF标志被复制到回显应答报文中。这就带来了问题。冋显应答与冋显请求报文长度相同(超过600字节),但是sun外出的SLIP接口MTU为552。因此回显应答需要进行分片,但是DF标志比特乂被设置了。这样,sun就产牛一个ICMP不可达差错报文返回给bsdi(报文在bsdi处被丢弃)。这就是我们在主机Sol
8、aris上没有看到任何回显应答的原因。这些应答永远不能通过sun。分组的路径如图11-12所示。—ICMP回显请求ICMP冋毅陛亠ICMP回显请求ICMP回显请求可必:需要分片,但乂设置了DF位•图11・12例子中的分组交换最后,在图11・11中的第3行和第6行中,mtu=0表示主机sun没有在ICMP不可达报文中返凹出口MTU值,如图11・9所示(在25.9节中,将重新回到这个问题,用SNMP判断netb上的SLIP接口MTU值为1500)o
此文档下载收益归作者所有