TCP/IP详解,卷1:协议,第六章:ICMP,Internet控制报文协议

来源:互联网 发布:提醒软件reminder 编辑:程序博客网 时间:2024/05/16 02:05

小结:ICMP是IP层的一个组成部分,它传递差错报文以及其他需要注意的信息。通常被IP层或更高层(TCP或UDP)使用。本章详细讨论了ICMP地址掩码请求和应答以及时间戳请求和应答。这些是典型的请求-应答报文。二者在ICMP报文中都有标识符和序列号。发送端应用程序在标识字段内存入一个唯一的数值,以区别于其他进程的应答。序列号字段使得客户程序可以在应答和请求之间进行匹配。
一种常见的ICMP差错:ICMP端口不可达差错。对返回的ICMP差错信息进行了分析:导致差错的IP数据报的首部及后续8个字节。这个信息对于ICMP差错的接收方来说是必要的。可以更多的了解导致差错的原因。这是因为TCP/UDP都在它们的首部前8个字节中存入源端口号和目的端口号。

习题:
1.在6.2节的末尾,我们列出了5种不发送ICMP差错报文的特殊条件。如果这些条件不满足而我们又在局域网上向一个似乎不存在的端口号发送一份广播UDP数据报,这时会发生什么样的情况?
答:如果在局域网线上有一百个主机,每个都可能在同一个时刻发送一个ICMP端口不可达的报文。很多报文的传输都可能发生冲突(如果使用的是以太网),这将导致1秒或2秒的时间里网络不可用。

2.阅读RFC「Braden 1989a」,注意生成一个ICMP端口不可达差错是否为”必须”,”应该”或者”可能”。这些信息所在的页码和章节是多少?
答:”SHOULD”,”应该”

3.阅读RFC 1349 「Almquist 1992」,看看IP的服务类型字段(见图3-2)是如何被ICMP设置的?
答:如我们在图3-2所指出的,发送一个ICMP差错总是将TOS(type of service)设置为0。发送一个ICMP查询请求可以将TOS置为任何值,但是发送相应的应答必须将TOS置为相同的值。

4.如果你的系统提供netstat命令,请用它来查看接收和发送的ICMP报文类型。
答:netstat -s 是查看每个协议统计数据的常用方法。在一台收到了4800万个IP数据包的SunOS4.1.1主机(gemini)上,ICMP的统计为:
Output histogram:
echo reply: 1757
destination unreadable:700
time stamp reply:1
Input histogram:
echo reply:211
destination unreadable:3071
source quench: 249
routing redirect:2789
echo:1757
#10: 21
time exceeded: 56
time stamp: 1
21个类型为10的报文是SunOS4.1.1不支持的路由器的请求。
也可以使用SNMP(图25-26),有些系统,如Solaris 2.2,可以生成使用SNMP变量名的netstat-s的输出。

0 0