ICMP报文详解

合集下载

简单描述论述icmp报文的概念及分类

简单描述论述icmp报文的概念及分类

简单描述论述icmp报文的概念及分类
ICMP(Internet Control Message Protocol)是一种网络协议,用于在IP网络中传递错误和控制信息。

它是TCP/IP协议族中的一个重要组成部分,用于在网络层上进行通信。

ICMP报文是由网络设备(如路由器、交换机等)发送的,用于向其他设备发送错误和控制信息。

ICMP报文可以分为以下几类:
1.差错报文:用于向发送端或中间设备发送错误信息,以便及时纠正错误。

常见的差错报文有“目的不可达”、“超时”等。

2.询问报文:用于向其他设备发送询问信息,以便获取网络状态和设备信息。

常见的询问报文有“回显请求”、“时间戳请求”等。

3.应答报文:用于回复其他设备的询问信息,以便提供网络状态和设备信息。

常见的应答报文有“回显应答”、“时间戳应答”等。

4.重定向报文:用于向其他设备发送重定向信息,以便优化网络路径和提高网络性能。

常见的重定向报文有“重定向”等。

总之,ICMP报文是网络设备之间进行通信的重要手段,它可以帮助网
络管理员及时发现和纠正网络错误,提高网络性能和稳定性。

因此,了解ICMP报文的概念和分类对于网络管理和维护非常重要。

ICMP协议

ICMP协议

ICMP协议协议名称:Internet控制报文协议(ICMP)协议概述:Internet控制报文协议(ICMP)是一种网络层协议,用于在IP网络中传递控制信息和错误报告。

它是TCP/IP协议族的一部分,旨在提供一种简单而可靠的机制,以便在网络中进行通信和故障排除。

协议目的:ICMP的主要目的是提供网络中的错误报告和故障排除功能。

它允许主机和路由器之间交换控制消息,以确定网络中的问题,并采取适当的措施进行修复。

协议内容:1. ICMP报文格式:ICMP报文由报文头部和数据部分组成。

报文头部包含以下字段:- 类型(Type):指示报文的类型,如请求回显(Echo Request)、回显回答(Echo Reply)、目的不可达(Destination Unreachable)等。

- 代码(Code):提供有关报文类型的更多详细信息。

- 校验和(Checksum):用于检测报文头部和数据部分的错误。

- 其他字段:根据报文类型和代码的不同,可能包含其他字段,如标识符(Identifier)和序列号(Sequence Number)。

2. ICMP报文类型:ICMP定义了多种报文类型,用于不同的目的。

以下是一些常见的ICMP报文类型:- 请求回显(Echo Request)和回显回答(Echo Reply):用于测试主机之间的可达性和延迟。

- 目的不可达(Destination Unreachable):指示某个目的地无法到达,可能是因为网络不可达、主机不可达或端口不可达等。

- 超时(Time Exceeded):指示某个报文在传输过程中发生了超时,可能是因为生存时间(TTL)过期或片段重组超时等。

- 参数问题(Parameter Problem):指示某个报文的参数存在问题,如IP首部长度错误或选项错误等。

- 重定向(Redirect):用于指示主机或路由器应该使用另一个路由器来转发数据包。

3. ICMP报文处理:主机和路由器在接收到ICMP报文时,根据报文类型和代码进行相应的处理。

ICMP报文分析

ICMP报文分析

ICMP差错报文分析ICMP(Internet Control Messages Protocol)通常被认为是IP的附属协议,是IP的组成部分,因此是一个三层协议。

ICMP协议具有强大的功能,它传递差错报文以及其他需要注意的信息。

icmp报文通常被ip层或更高层协议( T C P或U D P)使用。

一些I C M P报文把差错报文返回给用户进程。

因此ICMP可以给我们提供有效的排错信息。

读懂ICMP的报错信息对我们排查网络故障有巨大帮助。

ICMP的包头很简单,但可选部分较多,ICMP协议中我们用的最多的就是ping 和traceroute ,但ICMP的功能不仅如此,下面介绍一下ICMP的差错报文处理方法以及几种常见的报文数据包。

附一张常见的ICMP协议类型,如下:在本章中我搭建了一个实验平台,用cisco 模拟器模拟两个路由器,建立通信。

R1 10.0.0.1------10.0.0.2 R2ICMP路由不可达报文,我们在R1做一条默认路由到R2 ip route 0.0.0.0 0.0.0.0 10.0.0.2 然后ping 一个R2不知道的目的端ping 2.2.2.2 抓取报错报文如下我们可以看到ICMP的类型为3 代码为1 即主机不可达的差错报文。

ICMP 有一个很好的设计,就是当回传差错报文的时候 ICMP会将出错的IP 以及IP后面的8个字节附上。

附上8个字节的目的是为了将差错报文交由对应的应用程序区处理。

例如,我刚才用R1去ping2.2.2.2 我们R1可能运行了多种服务程序,例如我们可能运行了ftp,telnet,ospf等等,而回传差错报文的ICMP 在IP后面跟了8个字节,来表明此差错报文属于ping 程序,应该交由此程序来处理。

当UDP TCP 出现差错报文的时候 8个字节正好覆盖了UDP TCP的源端口,目的端口部分,我们知道UDP,TCP端口号的作用就是为了标示应用程序的。

网际控制报文协议ICMP

网际控制报文协议ICMP
ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、 代码和检验和。接着的 4 个字节的内容与 ICMP 的类型有关。
ICMP 差错报告报文共有 4 种
终点不可达 时间超过 参数问题 改变路由(重定向)(Redirect)
ICMP 差错报告报文的数据字段的内容
收到的 IP 数据报
装在 IP 数据报中,作为其中的数据部分),而是 IP 层的协议。
ICMP 报文的格式
0
8
前 4 个字节 都是一样的
类型
16
代码
31
检验和
(这 4 个字节取决于 ICMP 报文的类型)
ICMP 的数据部分(长度取决于类型)
首部
ICMP 报文
数据部分 IP 数据报
1 ICMP 报文的种类
ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报 文。
用 tracert 命令获得到目的主机的路由信息
网际控制报文协议ICMP
网际控制报文协议 ICMP
为了更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了 网际控制报文协议 ICMP (Internet Control Message Protocol)。
ICMP 是互联网的标准协议。 ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。 但 ICMP 不是高层协议(看起来好像是高层协议,因为 ICMP 报文是
2 ICMP 的应用举例
PING (Packet InterNet Groper) PING 用来测试两个主机之间的连通性。 PING 使用了 ICMP 回送请求与回送回答报文。 PING 是应用层直接使用网络层 ICMP 的例子,它没有通过运输层

icmp 0和8类型

icmp 0和8类型

icmp 0和8类型【最新版】目录1.ICMP 简介2.ICMP 0 和 8 类型的定义3.ICMP 0 和 8 类型的应用4.ICMP 0 和 8 类型的区别与联系正文一、ICMP 简介ICMP(Internet Control Message Protocol,互联网控制报文协议)是 TCP/IP 协议族中的一种协议,主要用于在 IP 主机和路由器之间传递控制信息。

ICMP 报文是在 IP 数据报中传输的,通常不被应用于终端用户。

ICMP 协议可以帮助网络管理员诊断网络故障,也可以用于检测网络中的路由器和主机。

二、ICMP 0 和 8 类型的定义ICMP 0 类型,也称为“回显请求(Echo Request)”,是一个常用的 ICMP 类型。

当一个主机发送 ICMP 0 类型的报文时,它希望收到目标主机的回显响应。

这种类型的报文用于测试两台主机之间的网络连通性,以及测量往返时间。

ICMP 8 类型,也称为“回显响应(Echo Reply)”,是 ICMP 0 类型报文的响应报文。

当目标主机收到 ICMP 0 类型的报文时,它会发送 ICMP 8 类型的报文作为响应。

这种类型的报文包含了目标主机收到的原始报文的副本,以及一些额外的信息,如报文的往返时间。

三、ICMP 0 和 8 类型的应用ICMP 0 和 8 类型在网络诊断和管理中具有广泛的应用。

通过发送ICMP 0 类型的报文,并接收 ICMP 8 类型的响应,网络管理员可以检测网络中的故障,并评估网络的性能。

此外,ICMP 0 和 8 类型也被用于一些网络测试工具,如 ping 命令,以帮助用户检查网络连通性和测量网络延迟。

四、ICMP 0 和 8 类型的区别与联系ICMP 0 和 8 类型的主要区别在于它们的作用。

ICMP 0 类型用于发送回显请求,而 ICMP 8 类型用于发送回显响应。

尽管它们的作用不同,但它们都是 ICMP 协议中的重要类型,并在网络诊断和管理中发挥着重要作用。

icmp协议报文格式

icmp协议报文格式

ICMP协议报文格式1. ICMP报文格式概述ICMP(Internet Control Message Protocol)协议是一种用于在网络中发送控制消息的协议。

它允许主机和路由器之间传递错误报告和查询消息。

ICMP报文格式通常嵌入在IP数据报中,报文格式相对简单,主要包含类型、代码和校验和等字段。

2. ICMP差错报告报文ICMP差错报告报文用于报告在网络传输过程中出现的错误情况。

以下是常见的ICMP差错报告报文类型:2.1. 目的地址不可达报文当路由器或主机无法到达目的IP地址时,会发送目的地址不可达报文。

该报文通常用于通知发送方,数据包无法送达目的地。

2.2. 源地址不可达报文当路由器或主机无法到达源IP地址时,会发送源地址不可达报文。

该报文用于通知接收方,数据包的源地址不可达。

2.3. 端口不可达报文当路由器或主机无法到达指定的端口时,会发送端口不可达报文。

该报文用于通知接收方,数据包的目的端口无法达到。

2.4. 超时报文当路由器或主机在传输数据包时超过预设的时限时,会发送超时报文。

该报文用于通知发送方,数据包在传输过程中超过了预设的时限。

2.5. 参数问题报文当路由器或主机检测到IP数据报中的参数错误时,会发送参数问题报文。

该报文用于通知发送方,数据包中的参数存在问题。

3. ICMP查询报文ICMP查询报文用于查询网络中的主机或路由器的状态信息。

以下是常见的ICMP查询报文类型:3.1. 回送请求报文回送请求报文用于请求主机或路由器返回一个回送响应,以确认目的地址可达性。

3.2. 回送回答报文回送回答报文用于响应回送请求报文,确认目的地址可达性。

3.3. 时间戳请求报文时间戳请求报文用于请求主机或路由器返回当前时间戳,以便计算网络延迟和时间同步。

3.4. 时间戳回答报文时间戳回答报文用于响应时间戳请求报文,返回当前时间戳。

3.5. 地址掩码请求报文地址掩码请求报文用于请求主机或路由器返回网络掩码信息,以便进行路由分析和过滤。

icmp 协议报文格式

icmp 协议报文格式

icmp 协议报文格式ICMP协议报文格式呀,这可有点小意思呢。

ICMP呢,全称Internet Control Message Protocol,就是互联网控制消息协议啦。

它的报文格式有自己独特的小模样哦。

一、ICMP报文的类型和代码。

ICMP报文有个类型字段,这个类型就像是给报文贴个标签,告诉接收方这是个啥样的消息。

比如说,类型值为3的时候,那就是表示目的不可达啦。

然后还有个代码字段呢,这个代码就像是在类型这个大标签下的小标签,进一步说明是因为啥目的不可达,是网络不可达呀,还是主机不可达之类的。

就像你去超市找东西,类型是告诉你在哪个大区,代码就是告诉你在大区里的具体小货架呢。

二、ICMP报文的首部结构。

1. 类型和代码前面说过啦,这可是很重要的标识部分哦。

2. 校验和字段也很关键呢。

这个校验和就像是个小卫士,它负责检查报文在传输过程中有没有出错。

你想啊,数据在网络这个大江湖里跑来跑去的,万一被哪个小坏蛋给改了一点呢,校验和就能发现这个猫腻。

它通过一定的算法计算出一个值,接收方也用同样的算法算一遍,如果不一样,那就说明报文可能有问题啦。

3. 还有标识符和序列号字段。

标识符就像是给这个报文的一个小记号,序列号呢,就像是这个报文的排队号码。

比如说,你发送一系列的ICMP报文去测试网络,标识符可以让你区分开不同的测试任务,序列号就能保证接收方按照正确的顺序来处理这些报文,就像小朋友排队领糖果一样,不能乱了顺序哦。

三、ICMP报文的数据部分。

这个数据部分就比较灵活啦。

它可以包含一些额外的信息,这取决于报文的类型和目的。

比如说,如果是回应请求和应答报文(类型8和0),数据部分就可以包含一些发送方想要让接收方知道的小信息,像是发送方的时间戳之类的。

这就像是你给朋友写信,除了说“你好”这种基本的话,还可以在信的后面写点小趣事一样呢。

ICMP协议的报文格式虽然看起来有点复杂,但其实就像一个小拼图,每个部分都有它自己的作用,组合在一起就能在网络里发挥出很重要的作用啦。

icmp和igmp报文格式

icmp和igmp报文格式

icmp和igmp报文格式ICMP(Internet Control Message Protocol)和IGMP(Internet Group Management Protocol)是两种常见的网络协议,用于在互联网中进行控制和管理。

下面是它们的报文格式的详细解释:1. ICMP报文格式:ICMP报文通常封装在IP报文中,用于在网络中传递控制消息。

ICMP报文格式如下:类型(Type),8位字段,表示ICMP消息的类型,用于指示报文的目的和功能。

代码(Code),8位字段,与类型字段一起用于提供更具体的信息,进一步说明ICMP消息的目的。

校验和(Checksum),16位字段,用于检验ICMP报文的完整性。

其他字段,根据不同的ICMP消息类型和代码,可能会有其他字段,用于携带相关的数据信息。

ICMP报文的具体格式会根据不同的类型和代码而有所变化,例如,ICMP回显请求和回显应答的报文格式稍有不同。

2. IGMP报文格式:IGMP报文用于在IP网络中进行组播组管理。

IGMP报文格式如下:类型(Type),8位字段,表示IGMP消息的类型,用于指示报文的目的和功能。

最大响应时间(Max Response Time),8位字段,表示发送方对IGMP查询消息的响应时间上限。

校验和(Checksum),16位字段,用于检验IGMP报文的完整性。

组播地址(Group Address),32位字段,表示组播组的IP 地址。

IGMP报文的具体格式也会根据不同的类型而有所变化,例如,IGMP查询报文和IGMP报告报文的格式不同。

总结起来,ICMP报文用于网络控制消息的传递,而IGMP报文用于组播组管理。

它们的报文格式都包含了类型、代码、校验和等字段,具体的格式会根据不同的消息类型而有所变化。

以上是对ICMP和IGMP报文格式的简要介绍。

ICMP报文数据包分析

ICMP报文数据包分析

ICMP报文数据包分析ICMP报文数据包分析ICMP(Internet Control Message Protocol)是互联网控制消息协议,它是一种辅助协议,用于在IP网络中传递控制信息。

ICMP报文数据包可以分为两类:差错报文和询问报文。

差错报文用于报告错误的IP数据报,而询问报文则用于测试网络连接是否正常。

一、ICMP差错报文1.目的不可达报文当路由器或主机无法处理IP数据报时,会发送目的不可达报文。

这种报文通常发生在以下情况:目的地端口未开放、网络地址无效、TTL(生存时间)值已过期等。

目的不可达报文可以帮助网络管理员诊断和解决网络问题。

2.超时报文当IP数据报在传输过程中超过TTL值时,会被路由器丢弃,并由发送端主机接收到一个超时报文。

这种报文可以告诉发送端主机在哪个路由器处发生了超时,有助于对网络性能进行评估和优化。

3.参数错误报文当IP数据报的头部参数有误时,路由器会发送参数错误报文。

例如,如果IP数据报的校验和错误,或者IP选项不符合要求,就会触发参数错误报文。

这种报文可以帮助发送端主机修改IP数据报头部,使其能够正确传输。

二、ICMP询问报文1.Echo请求报文Echo请求报文也被称为ping请求报文,它用于测试网络连接是否正常。

发送端主机发送Echo请求报文,接收端主机收到后,会返回一个Echo应答报文,确认收到请求。

这种询问-应答模式可以用于检查网络延迟、丢包率和链路质量等。

2.路由跟踪报文路由跟踪报文用于查询IP数据报从源主机到目的主机的路径。

发送端主机发送路由跟踪报文,要求接收端主机返回一条路径信息,包括每个路由器节点和它们的IP地址。

这种报文可以帮助网络管理员了解网络拓扑结构和路由选择策略。

三、ICMP数据包格式ICMP数据包的格式相对简单,包括ICMP类型、代码、校验和、ICMP数据等字段。

其中,ICMP类型表示报文的类型(如目的不可达、超时、参数错误等),代码字段表示更具体的报文类型(如目的端口未开放、网络地址无效等),校验和用于检测数据包在传输过程中的完整性,ICMP数据则包含与特定类型相关的信息(如目的IP地址、端口号等)。

第六章_差错控制报文(ICMP)

第六章_差错控制报文(ICMP)
15
(三)时间超过
类型:11 代码: 0 至1
检验和
未使用 (全0)
收到的IP数据报的一部分,包括IP首部以及数据报 数据的前8个字节
产生原因:
➢当路由器收到一个数据报,发现TTL字段的值已经变为了0, 就将此数据报丢弃,并向源站发送时间超过报文。
➢当组成一个报文的所有分片未能在某一时限内到达目的主机 时,它就丢弃已收到的分片,然后也要产生时间超过报文向源 站发送。
加上原始数据报中的首部就可给出原始信源。
要包括数据的前8个字节是因为这前8个字节提供了关于端口号(UDP和TCP)和 序号(TCP)的信息,因而源站可以将差错情况通知这些协议(UDP或TCP)。
9
(一)目的站不可达
类型:3 代码: 0至15
检验和
未使用 (全0)
收到的IP数据报的一部分,包括IP首部以及数据报 数据的前8个字节
11
各代码的作用(续)
代码9:与目的网络的通信从管理上是禁止的。 代码10:与目的主机的通信从管理上是禁止的。 代码11:对所请求的服务类型,网络不可达。(与代码0不同) 代码12:对所请求的服务类型,主机不可达。(与代码1不同) 代码13:主机不可达。因为管理机构放置了一个过滤器在它上面。 代码14:主机不可达。因为主机的优先级被破坏了。这个报文由 路由器发出,指出所请求的优先级对该目的站是不允许的。 代码15:主机不可达。因为它的优先级被删掉了。
23
(一)回送请求和回答
8: 回送请求 0: 回送回答
类型:8 or 0 代码:0 标识符
检验和 序号
可选数据(由请求报文发送,由回答报文重复)
24
说明:
主机或路由器可以发送回送请求报文,收到回送请求报文 的主机或路由器发送出回送回答报文。 回送请求和回送回答报文可由网络管理员来使用,用来 检查IP协议的工作情况。 用回送请求和回送回答报文可测试一个主机的可达性, 通常是调用ping命令来这样做的。 格式中的标识符和序号字段在协议中没有正式定义,可 以由发送站任意使用。 可供选择的数据字段包含一个报文,它必须由回答的结 点在回送回答报文中完全一样的重复。

icmp差错报告报文

icmp差错报告报文

icmp差错报告报文
ICMP(Internet Control Message Protocol)是Internet协议族中的一个重要子组件,它主要用于传递关于网络状况的控制信息。

其中,ICMP差错报告报文承担着重要的作用,它在网络故障时可以快速通知网络中的节点发生了什么问题,从而更快地进行故障排查和修复。

ICMP差错报告报文具有以下几个重要特点:
1.差错报告报文的类型码
ICMP差错报告报文中,必须指定差错报告的类型码。

常见的类型码包括目的不可达、时间超时、参数问题、重定向等。

这个类型码可以帮助网络管理员快速判断网络故障的类型,并针对性地采取措施。

2.差错报告的数据包
差错报告报文中,必须携带发生差错的数据包。

这个数据包可
以为IP首部和前8个字节的信息,也可以为完整的数据包。

这样,网络管理员可以更快地定位故障位置,完成故障排查和修复。

3.源和目的IP地址
ICMP差错报告报文中,必须指定源和目的IP地址。

这样可以
方便网络管理员在网络拓扑中找到故障节点,并迅速采取措施。

此外,在多个子网之间传输数据时,ICMP差错报告报文还可以帮
助定位到具体的子网,进一步缩小故障范围。

总之,ICMP差错报告报文是Internet协议族中不可缺少的组成
部分。

它可以帮助网络管理员更快地发现网络故障,并快速采取
措施。

在实际网络维护中,需要结合具体情况,灵活运用ICMP
差错报告报文,从而更好地保障网络运行。

个人总结-ICMP的协议详解以及实现

个人总结-ICMP的协议详解以及实现

个人总结-ICMP的协议详解以及实现ICMP(Internet Control Message Protocol,互联网控制报文协议)是用于在IP网络中传递控制消息的协议。

它被用于处理IP层出现的各种问题,例如传输错误、路由不可达等。

ICMP是TCP/IP体系结构中的一个核心协议,它通常运行在IP层之上,与ICMP支持的其他协议(如IP、TCP和UDP等)一起,共同构成了TCP/IP协议栈,为网络的正常运行提供了基本保障。

本文将详细介绍ICMP的协议原理以及实现方式。

一、ICMP的协议原理1. ICMP的基本作用ICMP协议是用于在IP网络中传递控制消息的,它向源主机提供有关数据包的错误和状态信息,以便确定数据包无法到达目标的原因,同时可以提供其他重要信息。

常见的ICMP消息类型有:(1)Echo Request/Echo Reply消息:用于测试连接状态,通常在网络管理中用于回应ping命令。

(2)Destination Unreachable消息:表示数据包无法到达目标地址,常见的原因有网络不可达、主机不可达和端口不可达。

(3)Redirect消息:用于指示源主机修改其路由表,通过新的路由器转发其数据包。

(4)Time Exceeded消息:如果一个数据包在传输过程中的TTL(Time To Live)超过了设定值,就会产生此类消息。

(5)Parameter Problem消息:通常用于指出数据包的某些字段格式错误。

2. ICMP的结构ICMP消息通常由一个8字节的协议头和与该头部相对应的变长数据段组成。

下面是ICMP头部的常用字段:(1)类型(Type):占1字节,表示ICMP消息类型,取值范围为0~63,其中0用于Echo Reply消息,8用于Echo Request消息,其他类型有其他含义。

(2)代码(Code):占1字节,表示类型字段的更加具体的信息,其值配合Type字段来确定每一个ICMP消息的具体类型,取值范围为0~255。

ICMP报文详解

ICMP报文详解

第1 页 共 5 页ICMP 报文详解各种ICMP报文的前4个字节(32bits)都是三个长度固定的字段(见上图):type类型字段(8位)、code代码字段(8位)、checksum校验和字段(16位)。

8bits类型和8bits代码字段:一起决定了ICMP报文的类型。

常见的有:类型8、代码0:回显请求;类型0、代码0:回显应答;类型11、代码0:超时。

16bits校验和字段:包括数据在内的整个ICMP数据包的校验和,其计算方法和IP头部校验和的计算方法是一样的。

对于ICMP回显请求和应答报文来说(见上图),接下来是16bits标识符字段:用于标识本ICMP 进程。

最后是16bits序列号字段:用于判断回显应答数据报。

ICMP报文包含在IP数据报中,属于IP的数据,IP头部就在ICMP报文的前面,一个ICMP 报文包括IP头部(20字节)、ICMP头部(8字节)和ICMP报文。

(见上图)IP头部的Protocol值为1就说明这是一个ICMP报文;ICMP头部中的类型(Type)域用于说明ICMP报文的作用及格式;此外还有代码(Code)域用于详细说明某种ICMP报文的类型;所有数据都在ICMP头部后面。

RFC定义了13种ICMP报文格式,具体如下:类型代码类型描述类型代码类型描述0 响应应答(ECHO-REPL Y)13 时间戳请求3 不可到达14 时间戳应答4 源抑制15 信息请求(*已作废)5 重定向16 信息应答(*已作废)8 响应请求(ECHO-REQUEST)17 地址掩码请求11 超时18 地址掩码应答12 参数失灵其中代码为15、16的信息报文已经作废。

下面是几种常见的ICMP报文:1.响应请求我们日常使用最多的ping,就是响应请求(Type=8)和应答(Type=0),一台主机向一个节点发送一个Type=8的ICMP报文,如果途中没有异常(例如被路由器丢弃、目标不回应ICMP或传输失败),则目标返回Type=0的ICMP报文,说明这台主机存在,更详细的tracert通过计算ICMP报文通过的节点来确定主机与目标之间的网络距离。

计算机网络 ICMP报文类型

计算机网络  ICMP报文类型

计算机网络 ICMP 报文类型ICMP 报文主要分为两种类型,即ICMP 差错报文和ICMP 询问报文。

其中在ICMP 差错报文中,使用较多的报文类型是路由重定向报文;而在ICMP 询问报文中,使用较多的报文类型包括ICMP Echo 请求报文、ICMP 时间戳请求报文和ICMP 地址掩码请求报文。

● 路由重定向报文当路由器发现当前数据报传输路径不是最佳路径时,则会向与之连接的源端主机发送该报文,告知源端主机数据报经过最佳路径的下一个路由器IP 地址,以便数据报快速到达目的接收端。

在如图4-8所示的网络中,如果计算机A 与计算机C 进行通信,但计算机A 在其路由表中,没有查找到路由器R2的路由表项,则将数据报传送到路由器R1。

当R1接收到数据报后,查找其路由表,发现要将数据报发送计算机C ,必须先转发给R2,而R2与计算机A 在同一网络中。

于是R1向计算机A 发出路由重定向报文,并将R2的IP 地址告知计算机A ,计算机A 根据收到的信息更新其路由表。

以后计算机A 再向计算机C 发送数据报时,查找其路由表将数据报直接传送到R2。

计算机C R2图4-8 ICMP 路由重定向报文● ICMP Echo 请求报文该请求报文是由主机或路由器向某一特定目的主机发出的询问。

接收到此报文的主机必须向源端主机发送ICMP Echo 响应报文。

ICMP Echo 请求报文能够用来测试源端主机和目的主机之间通信线路是否畅通。

● I CMP时间戳请求报文该请求报文主要用来测试两个结点之间的通信延迟时间。

请求方发出本地发送时间,响应方必须返回自己的接收时间和发送时间,从而能够测试出特定通信线路上的通信延迟。

● ICMP 地址掩码请求报文通过该类型的报文,主机能够获得其所在局域网的子网掩码。

首先主机广播地址掩码请求报文,同一局域网中的路由器以地址掩码响应报文回应,告知请求主机需要的子网掩码。

提 示 在判断网络故障中常用的PING 程序,就是利用ICMP Echo 请求报文和ICMP Echo响应报文来工作的。

icmp详解

icmp详解

报文格式:一、差错报文:类型报文3 终点不可达4 源点抑制11 超时12 参数问题5 改变路由icmp总是报把差错报文报告给原始的数据源。

关于icmp差错报文的一些要点:*对于携带icmp差错报文的数据报,不再产生icmp差错报文。

*对于分片的数据报,如果不是第一个分片,则不产生icmp差错报文。

*对于具有多播地址的数据报,不产生icmp差错报文。

*对于具有特殊地址(如127.0.0.0或0.0.0.0)的数据报,不产生icmp差错报文。

应注意所有icmp差错报文都包含数据部分。

数据部分包括原始数据报的首部加上数据报的前八个字节。

@1、终点不可达icmp报文:类型3代码表示含义0 网络不可达。

1 主机不可达。

2 协议不可达。

目的主机未开启对应运输层协议(由主机产生)3 端口不可达。

对应进程未运行(由主机产生)4 需要进行分片。

IP DF不分片被置位无法通过5 源点路由选择不能完成。

路由控制不能完成6 目的网络未知。

与0不同router没有关于目的网络的信息。

7 目的主机未知。

与1不同router不知道目的主机的存在。

8 源主机是孤立的9 在管理上禁止与目的网络通信10 从管理是禁止与目的主机通信11 对指明的服务类型,网络不可达。

12 对指明的服务类型,主机不可达。

13 主机不可达,因为管理机构已经在这个主机放置了过滤器14 主机不可达,因为主机的优先级被违背了15 主机不可达,因为他的优先级被删掉了@2、源点抑制:类型4 代码0源点抑制报文通知源点,由于拥塞,在router后目的主机中已经丢弃了数据报。

源点必须放慢数据报的发送速度,直到拥塞程度减轻为止。

对于一个由于拥塞而被丢弃的数据报,都应当发送源点抑制报文。

@3、超时:类型11代码0或1代码0只由router使用,他表示生存字段值为零;当router收到生存时间字段为零的数据报是,就丢弃这个数据报,并向源点发送超时报文。

代码1只能由主机使用,他表示在规定的时限内,不是所以的分片都到达了;当最后的终点在规定的时间内没有收到所以分片时,他就丢弃已经收到的所有的分片,并向源点发送超时报文。

02_ICMP协议分析

02_ICMP协议分析

差错报告报文
参数出错报文
1) 参数出错报文报告出错的报文头与错误的报文选项参数 2) 路由器或信宿机在丢弃参数出错的报文时,将向信源机发出参数出错报文; 3) 参数出错报文格式:
类型(12) 指针
码(0-或121)
校验和
未用(全£0)
数据报报头+前64位数据
......
0 -- 数据报某个参数错,指针域指向出错的字节; 1 -- 数据报缺少某个选项,无指针域;
差错报告报文
信息不可达报文
网关在以下情况下发出信息不可到达报告 1) 信宿机硬件出现故障或关机; 2) 发送者指定的地址不存在; 3) 网关不知道去往信宿的路径;
信宿不可到达报告的格式
类型(3)
码(0-12)
校验和
未用(全0)
出错数据报报头+前64bit数据
........
差错报告报文
信息不可达报文

1 主机不可达

2 协议不可达

3
3 端口不可达

4 需要进行分片,但设置了 DF 不分片(2.3.2 节)

5 源路由选择失败

6 目标网络未知

ICMP数据包类型
ICMP报文类型
7 目标主机未知

8 源主机被隔离

9 与目标网络的通信被强制禁止

10 与目标主机的通信被强制禁止

11 对于请求的服务类型 TOS,网络不可达
码域值: 0 ~ 12,进一步说明信宿不可到达的具体原因
码值 0 2 4 6 8
10 11 12
意义
码值 意义
网络不可到达
1 主机不可到达

ICMP协议原理及报文分析

ICMP协议原理及报文分析

ICMP协议原理及报文分析ICMP(Internet Control Message Protocol)协议是互联网协议的一部分,用于在IP网络中传递控制信息。

它主要负责传输如错误报告、网络拥塞之类的控制信息,以及网络诊断工具中所用的请求和响应消息。

ICMP报文主要有两种类型:查询报文和差错报文。

查询报文用于特定的网络诊断和请求信息,常见的查询报文有:Echo Request(请求回显),Timestamp Request(请求时间戳)等等。

查询报文通过向目标主机发送请求,并等待目标主机返回相应的响应报文来实现信息的传递。

差错报文则用于通知发送端发生了错误,包括目的地不可达、时间超时等等。

通过差错报文,网络设备可以快速检测和纠正网络层故障。

下面是一个示例ICMP报文的格式:```ICMP Packet+--------+--------+--------+--------+--------+--------+--------类型,代码,校验和+--------+--------+--------+--------+--------+--------+--------数据+--------+--------+--------+--------+--------+--------+--------```- 类型字段(Type):指示ICMP报文的类型,如请求回显、目的地不可达、时间超时等等。

- 代码字段(Code):进一步说明ICMP报文的具体类型,因为一些类型的报文可能有多种情况。

- 校验和字段(Checksum):用于校验ICMP报文的完整性,防止数据在传输过程中损坏。

- 数据字段(Data):根据不同类型的ICMP报文可能会包含一些附加数据。

总结起来,ICMP协议通过原始的网络层封装和传输控制信息,实现了网络的错误检测和通信诊断功能,提供了网络层面的错误报告和诊断服务。

这使得网络管理员可以更好地调试网络问题,提高网络的可靠性和鲁棒性。

典型的ICMP报文

典型的ICMP报文

网络不可达 主机不可达 协议不可达 需要分片但DF置位 源路由失败 目的网络未知 目的主机未知 源主机被隔离
网管禁止到达目的 网络
网管禁止到达主机
服务类型,网络不 可达
服务类型,主机不 可达
拥塞和数据流控制
当路由器发生拥塞时,每丢弃一个数据报, 就会向该数据报的源站发送一个源站抑制 报文,以降低源站向目的站发送数据报的 速率,以便缓解网络的拥塞情况。
路由器恳求
当主机自举时,如果要获得路由器定期通 告的地址信息,往往需要等几分钟。 路由器恳求报文支持主机直接请求路由器 及时发布地址通告。 如果主机支持组播,可以通过全路由器组 播地址(224.0.0.2)发送该报文; 如果主机不支持组播,则可以通过广播方 式发送该报文。
本节结束
谢谢观看
默认路由器R1
A
CISCOSYSTEMS
B
A
第一个数据报路由过程
B
CISCOSYSTEMS
路由器R2
C
改变路由ICMP 路由器恳求报文支持主机直接请求路由器及时发布地址通告。
路由器通告的时间间隔为10分钟。 分片重组超时,目的主机向源主机发送一个分片重组超时的ICMP报文。
主机或路由器向指定目的站发送ICMP请求报文,
改变路由请求
主机则从最少的路由信息开始,并从路由 器那里获得新的路由信息。 主机通常在配置中设定一个默认的路由器。 当主机所在网络存在多个路由器时,主机 涉及改变路由的问题
改变路由ICMP
默认路由器R1
A
CISCOSYSTEMS
B
A A需要向B传输数据
B
CISCOSYSTEMS
路由器R2
C
改变路由ICMP
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

ICMP报文详解第 1 页共5 页
各种ICMP报文的前4个字节(32bits)都是三个长度固定的字段(见上图):
type类型字段(8位)、code代码字段(8位)、checksum校验和字段(16位)。

8bits类型和8bits代码字段:一起决定了ICMP报文的类型。

常见的有:
类型8、代码0:回显请求;类型0、代码0:回显应答;类型11、代码0:超时。

16bits校验和字段:包括数据在内的整个ICMP数据包的校验和,其计算方法和IP头部校验和的计算方法是一样的。

对于ICMP回显请求和应答报文来说(见上图),接下来是16bits标识符字段:用于标识本ICMP 进程。

最后是16bits序列号字段:用于判断回显应答数据报。

ICMP报文包含在IP数据报中,属于IP的数据,IP头部就在ICMP报文的前面,一个ICMP 报文包括IP头部(20字节)、ICMP头部(8字节)和ICMP报文。

(见上图)
IP头部的Protocol值为1就说明这是一个ICMP报文;
ICMP头部中的类型(Type)域用于说明ICMP报文的作用及格式;
此外还有代码(Code)域用于详细说明某种ICMP报文的类型;
所有数据都在ICMP头部后面。

RFC定义了13种ICMP报文格式,具体如下:
类型代码类型描述类型代码类型描述
0 响应应答(ECHO-REPL Y)13 时间戳请求
3 不可到达1
4 时间戳应答
4 源抑制1
5 信息请求(*已作废)
5 重定向1
6 信息应答(*已作废)
8 响应请求(ECHO-REQUEST)17 地址掩码请求
11 超时18 地址掩码应答
12 参数失灵
其中代码为15、16的信息报文已经作废。

下面是几种常见的ICMP报文:
1.响应请求
我们日常使用最多的ping,就是响应请求(Type=8)和应答(Type=0),一台主机向一个节点发送一个Type=8的ICMP报文,如果途中没有异常(例如被路由器丢弃、目标不回应ICMP或传输失败),则目标返回Type=0的ICMP报文,说明这台主机存在,更详细的tracert通过计算ICMP报文通过的节点来确定主机与目标之间的网络距离。

2.目标不可到达、源抑制和超时报文
这三种报文的格式是一样的,目标不可到达报文(Type=3)在路由器或主机不能传递数据报时使用,例如我们要连接对方一个不存在的系统端口(端口号小于1024)时,将返回Type=3、Code=3的ICMP报文,它要告诉我们:“嘿,别连接了,我不在家的!”,常见的不可到达类型还有网络不可到达(Code=0)、主机不可到达(Code=1)、协议不可到达(Code=2)等。

源抑制则充当一个控制流量的角色,它通知主机减少数据报流量,由于ICMP没有恢复传输的报文,所以只要停止该报文,主机就会逐渐恢复传输速率。

最后,无连接方式网络的问题就是数据报会丢失,或者长时间在网络游荡而找不到目标,或者拥塞导致主机在规定时间内无法重组数据报分段,这时就要触发ICMP超时报文的产生。

超时报文的代码域有两种取值:Code=0表示传输超时,Code=1表示重组分段超时。

3.时间戳
时间戳请求报文(Type=13)和时间戳应答报文(Type=14)用于测试两台主机之间数据报来回一次的传输时间。

传输时,主机填充原始时间戳,接收方收到请求后填充接收时间戳后以Type=14的报文格式返回,发送方计算这个时间差。

一些系统不响应这种报文。

ICMP报文格式
ICMP虽然是网络层的协议,但要将ICMP报文放入IP中发送。

ICMP报文的头部由1字节的类型(type)、1字节的代码(code)和2字节的校验和(checksum)组成。

类型域和代码域用来标识各种ICMP报文。

类型域表示ICMP报文的类型,目前已定义了14种,从类型值来看ICMP报文可分为二大类。

第1 类是取值为1~127的差错报文,第2类是取值128以上的是信息(informational)报文。

1不能到达信宿(Destination Unreachable)差错报文
2分组过大(Packet Too Big)差错报文
3超时(Time Exceeded)差错报文
4参数问题(Parameter Problem)差错报文
128返回请求(Echo Request)报文
129返回应答(Echo Reply)报文
130组成员查询(Group Membership Query)
131组成员报告(Group Membership Report)
132组成员结束(Group Membership Termination)
133路由器请求(Router Solicitation)
134路由器公告(Router Advertisement)
135邻机请求(Neighbor Solicitation)
136邻机公告(Neighbor Advertisement)
137 重定向(Redirect)
通近抓包可以清楚看到ICMP报文结构,最前面是14字节的以太网II帧头,接下来是20字节的IP包头,接下来是8个字节的ICMP回显请求报文头部,类型是8、代码是0,表示是一个回显请求报文。

序列号:0X0200,注:每一个ICMP回显报文都有一个序列号且是递增的,这是PING的第二个包,第
第 4 页共5 页
一个的序列号是:0X100,第三个序列号是:0X300,第三个序列号是:0X400。

因为在WINDOWS XP系统PING 时是4个报文且数据是32个字节。

在抓包中,回显数据:32字节,在Windows 9X、Windows 2000、Windows XP等操作系统的Ping命令中,ICMP包中的数据长度默认为32字节,其内容为英文小写字母循环系列(abcdefghijklmnopqrstuvwabcdefghi)。

下图是回显应答报文的抓包:类型是0。

第 5 页共5 页。

相关文档
最新文档