您的当前位置:首页正文

ICMP报文类型

2021-02-11 来源:年旅网
ICMP报文类型

ICMP全称Internet Control Message Protocol(网际控制信息协议)。提起ICMP,一些人可能会感到陌生,实际上,ICMP与我们息息相关。在网络体系结构的各层次中,都需要控制,而不同的层次有不同的分工和控制内容,IP层的控制功能是最复杂的,主要负责差错控制、拥塞控制等,任何控制都是建立在信息的基础之上的,在基于IP数据报的网络体系中,网关必须自己处理数据报的传输工作,而IP协议自身没有内在机制来获取差错信息并处理。为了处理这些错误,TCP/IP设计了ICMP协议,当某个网关发现传输错误时,立即向信源主机发送ICMP报文,报告出错信息,让信源主机采取相应处理措施,它是一种差错和控制报文协议,不仅用于传输差错报文,还传输控制报文。

ICMP报文格式

ICMP报文包含在IP数据报中,属于IP的一个用户,IP头部就在ICMP报文的前面,所以一个ICMP报文包括IP头部、ICMP头部和ICMP报文,IP头部的Protocol值为1就说明这是一个ICMP报文,ICMP头部中的类型(Type)域用于说明ICMP报文的作用及格式,此外还有一个代码(Code)域用于详细说明某种ICMP报文的类型,所有数据都在ICMP头部后面。RFC定义了13种ICMP报文格式,具体如下:

类型 代码 名称 查询 差错 0 0 回应应答(Echo Reply) √ 3 目的地不可达 √ 0 网路不可达 √ 1 主机不可达 √ 2 协议不可达 √ 3 端口不可达 √ 4 需要分片和不需要分片标记置位 √ 5 源路由失败 √ 6 目的网络未知 √ 7 目的主机未知 √ 8 源主机被隔离 √ 9 目的网络的通告被禁止 √ 10 目的主机的通信被禁止 √ 11 对请求的服务类型ToS,目的网路不可达 √ 12 对请求的服务类型ToS,目的主机不可达 √ 13 由于过滤,通信被强制禁止 √ 14 主机越权 √ 15 优先权中止生效 √ 4 0 源抑制(Source Quench) √ 5 重定向 √ 0 为网络(子网)重定向数据报 √ 1 为主机重定向数据报 √ 2 为网络和服务类型重定向数据报 √ 3 为主机和服务类型重定向数据报 √ 6 0 选择主机地址 8 0 请求回应 √ 9 0 路由器通告 √ 10 0 路由器选择请求 √ 11 超时 0 传输中超出TTL=0 √ 1 分片重组TTL=0 √ 12 参数问题 0 指定错误的指针(坏的IP头部) √ 1 缺少需要的选项 √ 2 错误长度 13 0 时间戳请求 √ 14 0 时间戳回复 √ 15 0 信息请求(已作废不用) √ 16 0 信息回复(已作废不用) √ 17 0 地址掩码请求 √ 18 0 地址掩码回复 √ 30 跟踪路由 31 数据报会话错误 32 移动主机重定向 33 IPv6你在哪里 34 IPv6我在这里 35 移动注册请求 36 移动注册回复 下面是几种常见的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的报文格式返回,发送方计算这个时间差。一些系统不响应这种报文。

因篇幅问题不能全部显示,请点此查看更多更全内容