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报文,命令为:

[[email protected] 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,命令为:

[[email protected] 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分片,命令为:

[[email protected] 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)。

时间: 2024-08-09 10:42:33

ICMP报文的相关文章

使用WireShark简单分析ICMP报文

ICMP协议介绍 1.ICMP是"Internet Control Message Protocol"(Internet控制消息协议)的缩写.它是TCP/IP协议族的一个子协议,用于在IP主机.路由器之间传递控制消息.控制消息是指网络通不通.主机是否可达.路由是否可用等网络本身的消息.这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用. 2.ICMP报文作为IP层数据报的数据,加上数据报的首部,组成数据报发送出去. 3.ICMP报文的种类有两种,即ICMP差错报告报

ICMP报文分析

一.概述: 1.   ICMP允许主机或路由报告差错情况和提供有关异常情况.ICMP是因特网的标准协议,但ICMP不是高层协议,而是IP层的协议.通常ICMP报文被IP层或更高层协议(TCP或UDP)使用.一些ICMP报文把差错报文返回给用户进程. 2.   ICMP报文作为IP层数据报的数据,加上数据报的首部,组成数据报发送出去. 3.   ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文. 二.ICMP报文的格式 1.   类型:占8位 2.   代码:占8位 3.   检

ICMP报文类型

 类型代码 类型描写叙述 0 响应应答(ECHO-REPLY) 3 不可到达 4 源抑制 5 重定向 8 响应请求(ECHO-REQUEST) 11 超时 12 參数失灵 13 时间戳请求 14 时间戳应答 15 信息请求(*已作废) 16 信息应答(*已作废) 17 地址掩码请求 18 地址掩码应答 用wireshark查看 附: 几种常见的ICMP报文: 1.响应请求 我们日常使用最多的ping.就是响应请求(Type=8)和应答(Type=0).一台主机向一个节点发送一个Type=8的IC

TCP/IP具体解释--ICMP报文分析

一.概述: 1.   ICMP同意主机或路由报告差错情况和提供有关异常情况.ICMP是因特网的标准协议,但ICMP不是高层协议,而是IP层的协议. 通常ICMP报文被IP层或更高层协议(TCP或UDP)使用. 一些ICMP报文把差错报文返回给用户进程. 2.   ICMP报文作为IP层数据报的数据.加上数据报的首部.组成数据报发送出去. 3.   ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文. 二.ICMP报文的格式 1.   类型:占8位 2.   代码:占8位 3.  

Wireshark - ICMP 报文分析

1. 测试机器,源地址 IP 为 10.21.28.110,目的 IP 地址为 10.6.0.24. 2. 使用 ip.src == 10.6.0.24 or ip.dst == 10.6.0.24 过滤规则,只显示 10.21.28.110 与 10.6.0.24 交互的数据. 如上图所示,Windows 中 ping 命令默认执行 4 次 ping 程序,所以 Wireshark 会抓到 8 个 ICMP 报文. 3.  观察第一个编号为 2066 的 Echo (ping) request

tcp、udp、ip、icmp报文格式分析

TCP .UDP .IP. ICMP协议报文格式分析 Tcp报文格式: Wireshark抓包如图: 源端口/目的端口(16bit): 在TCP报文中包涵了源端口/目的端口,源端口标识了发送进程,目的端口标识了接收方进程.由上图可以看出在此报文中我们的源端口号是54160, 目的端口是cichlid(1377). 序列号(32bit): Sequence Number这个是发送序列号,用来标识从源端向目的端发送的数据字节流,它表示在这个报文端中的第一个数据字节的顺序号,序列号是32位的无符号类型

华为防火墙处理ICMP报文原理

实验拓扑 在防火墙上添加策略,使trust区域能访问untrust区域,使用PC ping 外部server,并同时抓包 在防火墙上查看会话信息 在防火墙上抓取g0/0/1接口数据包 打开icmp数据包,可以看到identifier标示,使用计算器转换为10进制得到53607 查看防火墙会话表,可以看到icmp会话的源端口号为53607 可以查看第二个数据包验证 同样会话表的源端口号和icmp数据报文的identifier相同,目的端口号为2048.

计算机网络(3): ICMP报文

原文地址:https://www.cnblogs.com/Plorde/p/12305461.html

ICMP:Internet控制报文协议

ICMP:Internet控制报文协议. 是IP层的组成部分,传递差错报文或其他信息. ICMP报文被封装在IP数据报内部: 详细格式例如以下所看到的: 个字段含义例如以下: 8位类型.表示该ICMP报文的含义.如目的不可达.超时.请求回显等. 8为代码. 进一步描写叙述该ICMP报文.ICMP报文的类型由类型字段和代码字段共同决定. 16位检验和.和IP首部检验和的算法同样. 我们常常使用的ping程序就是基于ICMP报文进行的传输.pingclient发送一个ICMP回显请求报文,serve