千家信息网

ICMP报文

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,ICMP报文ICMP报文封装在IP数据报中,ICMP报文可分为两大类:差错报告报文和查询报文。ICMP报文首部的一般格式如图1.11所示。图1.11 ICMP报文首部的一般格式1.2.1 查询报文查询
千家信息网最后更新 2025年12月02日ICMP报文

ICMP报文

ICMP报文封装在IP数据报中,ICMP报文可分为两大类:差错报告报文和查询报文。

ICMP报文首部的一般格式如图1.11所示。

图1.11 ICMP报文首部的一般格式

1.2.1 查询报文

查询报文有多种类型,比较常见的是类型(Type)8和类型(Type)0,它们是成对出现的。类型8表示回送请求(Echo),类型0表示回送应答(Echo Reply)。在《组建与维护企业网络》课程中已经介绍过,这里不再赘述。

1.2.2 差错报告报文

ICMP的主要责任之一就是报告差错,当路由器或目的主机在处理IP数据报遇到问题时,就把差错报文发送给数据报的源点。

差错报告报文共有五种类型。

? 类型3 终点不可达

? 类型4 源点抑制

? 类型5 改变路由

? 类型11 超时

? 类型12 参数问题

本节将介绍三种类型:终点不可达、源点抑制和超时报文类型。

1.终点不可达报文

当中间路由器不能给数据报找到路由或目的主机不能交付数据报时,中间路由器或目的主机就丢弃这个数据报,然后向发出这个数据报的源点发送终点不可达报文。

终点不可达报文的首部格式如图1.12所示。

图1.12 ICMP终点不可达报文的首部格式

其中代码字段指明了丢弃数据报的原因,一共有16种。下面将列举并演示其中的两种原因。

? 代码1:Host unreachable(主机不可达)。

? 代码3:Port unreachable(端口不可达)。

首先演示第1种原因,思路为:在Web主机上ping一台未知网络中的主机,然后通过Sniffer抓包分析返回的ICMP报文。

在Web主机上启用Sniffer抓包,然后ping 1.1.1.1,在CMD窗口中运行的命令及结果为:

C:\> ping 1.1.1.1

Reply from 192.168.1.254: Destination host unreachable.

……

这是路由器返回的差错报告:目的主机不可达,因为路由器找不到1.1.1.1的路由。

Sniffer抓包后的解码如图1.13所示。

可以看到,源IP:192.168.1.254(路由器)向目的IP:192.168.1.1(Web主机)返回了差错报告报文,类型(Type)为3,代码(Code)为1:Host unreachable(主机不可达)。

图1.13 ICMP终点不可达报文演示(1)

接着演示第2种原因,思路为:在PC2主机上使用hping向Web主机的一个未开放的UDP端口发送1个UDP报文。因为该UDP端口未开放,那么Web主机将不能交付该UDP报文,就会返回ICMP差错报告报文,可以在Web主机上通过Sniffer抓包分析返回的ICMP报文。

首先在Web主机上启用Sniffer抓包,然后在PC2主机上使用hping向Web主机的UDP端口80(未开放)发送一个UDP报文,命令为:

[root@kkg sbin]# hping 192.168.1.1 -2 -p 80 -c 1

在Web主机上Sniffer抓包后的解码如图1.14所示。

图1.14 ICMP终点不可达报文演示(2)

可以看到,源IP:192.168.1.1(Web主机)向目的IP:192.168.2.1(PC2主机)返回了差错报告报文,类型(Type)为3,代码(Code)为3:Port unreachable(端口不可达)。

2.源点抑制报文

在IP协议中没有流量控制机制,这可能会导致在中间路由器或目的主机中产生拥塞现象。路由器或主机中的队列长度(缓存)是有限的,如果数据报的接收速率比它们被转发(对路由器而言)或处理(对主机而言)的速率快得多,队列就会溢出。在这种情况下,路由器或主机只能把某些数据报丢弃。

为了给IP协议增加一种流量控制机制,ICMP的源点抑制报文被设计出来。当路由器或主机因为拥塞而丢弃数据报时,它就向数据报的发送端发送源点抑制报文,通知发送端必须放慢发送速率。要注意的是,对每一个因为拥塞而丢弃的数据报,路由器或主机都应当发送源点抑制报文。

源点抑制报文的首部格式如图1.15所示。

图1.15 ICMP源点抑制报文的首部格式

3.超时报文

超时报文的产生有两种情况。

? 中间路由器收到数据报后发现其TTL字段的值为1或0。

? 目的主机在规定时间内没有收到所有的分片。

当发生以上情况时,中间路由器或目的主机就丢弃这个数据报,然后向发出这个数据报的源点发送超时报文。

超时报文的首部格式如图1.16所示。

图1.16 ICMP超时报文的首部格式

其中代码0只由路由器使用,代码1只由目的主机使用。

下面将演示超时报文产生的两种情况。

先演示第一种情况,思路为:在PC2主机上使用hping向Web主机发送一个TTL为1的ICMP报文,并伪造源IP为192.168.0.1(PC1主机),这样在PC1主机上通过Sniffer可以捕获到返回的超时报文。

首先在PC1主机上启用Sniffer抓包,然后在PC2主机上使用hping向Web主机发送1个TTL为1的ICMP报文,并伪造源IP为192.168.0.1,命令为:

[root@kkg sbin]# hping 192.168.1.1 -1 -t 1 -c 1 -a 192.168.0.1

在PC1主机上Sniffer抓包后的解码如图1.17所示。

图1.17 ICMP超时报文演示(1)

可以看到,源IP:192.168.2.254(路由器)向目的IP:192.168.0.1(PC1主机)返回了超时报文,类型(Type)为11,代码(Code)为0。

接着演示第2种情况,思路为:在PC2主机上使用hping向Web主机只发送一个IP分片,经过一小段时间后,由于没有收到后续的分片,Web主机将返回超时报文。

首先在Web主机上启用Sniffer抓包,然后在PC2主机上使用hping向Web主机发送一个IP分片,命令为:

[root@kkg sbin]# hping 192.168.1.1 -1 -x -d 1000 -N 100 -c 1

等待60秒后,在Web主机上Sniffer抓包后的解码如图1.18所示。

图1.18 ICMP超时报文演示(2)

可以看到,源IP:192.168.1.1(Web主机)向目的IP:192.168.2.1(PC2主机)返回了超时报文,类型(Type)为11,代码(Code)为1。

意 啦

这里讲的超时报文要与使用ping命令时产生的超时区分开来。例如,Windows 2003的ping命令在发出Echo请求后,如果在2秒(默认)内没有收到Echo应答,就会显示超时(Request timed out)。

报文 主机 路由 类型 数据 路由器 目的 源点 演示 代码 差错 报告 格式 终点 如图 命令 情况 端口 原因 思路 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 银行数据库安全吗 怎么连接百度网盘服务器 网络安全技术能手竞赛试题 网络技术和网页基础哪个好学 数据库系统的组成部分不包括哪个 改革开放以来网络安全 宝德服务器前面维修口ip和密码 网络技术和工程造价 网络安全与社会舆论 debian 云 服务器 手游神武苹果和安卓服务器哪个好 为什么螃蟹游戏没有服务器 苹果11链接服务器出问题怎么办 苹果电脑如何登录华为云服务器 maven找不到数据库 如何获得梦幻西游手游服务器 信息中心强化网络安全系统运维 服务器配置管理考题 数据库索引视图触发器存储过程 手机app服务器认证失败 速达win 7数据库 网络安全细节决定成败 高防云服务器安全吗 万方数据库与知网数据库 绥德天气预报软件开发 服务器中打印管理如何使用 忍者必须死3服务器是通用的吗 协作机器人的安全性软件开发 山东枣庄网络安全电话 7800w用多大的服务器
0