第九章 网际控制报文协议(ICMP)
报文
ICMP报文可划分为差错报告报文(error-reporting messages)和查询报文(query messages)
**差错报告报文:**报告了路由器或主机(终点)在处理IP数据报可能遇到的问题
要点:
-
对于携带ICMP差错报文的数据报,不再产生ICMP差错报文
-
对于分片的数据报,如果不是第一个分片, 则不产生ICMP差错报文
-
对于具有多播地址的数据报,不产生ICMP差错报文
-
对于具有特殊地址的数据报,不产生ICMP差错报文
源点抑制报文(source-quench message):为了IP协议增加某种程度的流量控制和拥塞控制
注:源点抑制报文通知源点,由于路由器或目的主机的拥塞,数据已经被丢弃,源点必须放慢数据报的发送,直到拥塞得到缓解为止
参数问题报文(parameter-problem message)、超时报文(time-exceeded message)、改变路由报文(redirection message)
查询报文:成双对的出现,帮助主机或网络管理员从某个路由器或对方主机那获取特定的信息
ICMP报文格式
查询
回送请求(echo-request)和回送回答(echo-reply)
回送请求报文可以有由主机或路由器发送,收到回送请求报文的主机或路由器发送回送回答报文,
-
回送请求和回送回答报文可被网络管理员用来检查IP协议的工作情况
-
用回送请求和回送回答报文可测试某个主机的可达性(ping命令)
时间戳请求和回答
两个机器(主机或路由器)可以使用时间戳请求(timestamp-request)和时间戳回答(timestamp-reply)报文来确定IP数据报在这两个机器之间来回所需的往返时间(round-trip time,RTT)
公式:
-
发送时间 = 接收时间 - 原始时间戳
-
接收时间 = 分组返回的时间 - 发送时间戳
-
往返时间 = 发送时间 + 接收时间
过时的报文(IETF宣布的)
-
信息请求和回答报文
-
地址掩码请求和回答报文
-
路由器询问和通告报文
检验和
检验和的计算
-
1、把检验和字段置为0
-
2、计算所有16位字(首部和数据)之和
-
3、把得到的和求反码,得到检验和
-
4、把检验和存储在检验和字段中
检验和的检测
-
1、计算所有16位字(首部和数据)之和
-
2、把得到的和求反码
-
3、若步骤2得到的结果是16个0,则接受这个报文,否则就拒绝这个报文
排错工具
ping: 查出某个主机是否已加电并能够相应
traceroute:跟踪一个分组从源点到终点的路径
ICMP软件包
ICMP由两个模块组成:输入模块和输出模块