TCP/IP(四):ICMP 报文格式详解

1、概述

ICMP(Internet Control Message Protocol),即 Internet 控制报文协议,属于网络层协议,位于 IP 报文的数据段。它是 TCP/IP 协议簇的一个子协议,用于在 IP 主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。

日常使用最多的 ping,就是 ICMP 请求(Type=8)和 ICMP 应答(Type=0),一台主机向一个节点发送一个 Type=8 的 ICMP 报文,如果途中没有异常(例如被路由器丢弃、目标不回应 ICMP 或传输失败),则目标返回 Type=0 的 ICMP 报文,说明这台主机存在。

2、协议详解

ICMP报文主要有两大功能:查询报文和差错报文。回显请求与回显应答是两种 icmp 报文类型,类型号分别是 8 和 0 ,这两种类型下都只有一种代码 0 。这两种 icmp 报文属查询报文,主要用于测试网络中另一台主机是否可达,向欲测试主机发送一份 ICMP 回显请求,并等待返回 ICMP 回显应答,如果能收到,表明该主机可达。这也是网络工具 ping 程序的实现原理。

类型(0或8)代码(0)校验和
标识符序列号
选项数据

类型:占用一个字节,0 代表应答 ICMP 报文;8 代表请求 ICMP 报文;

代码:占用一个字节,类型为 8 ,代码为 0 表示回显请求(ping 请求);类型 0 ,代码为 0 表示回显应答(ping 应答)。类型为 11, 代码为 0 表示超时。

校验和:占用 2  个字节,包括数据在内的整个 ICMP 数据报的检验和,其计算方法和 IP 头部校验和的计算方法一致,详细见 https://t.1yb.co/7cDm。

标识符:占用 2 个字节,一般主机会将发送进程的 ID 号放置在标识符字段,这样即使在主机上运行了多个 ping 程序,ping 程序也可以识别出返回的信息。

序列号:从 0 开始,每发送一次心得回显请求就加 1 。

在抓包过程中,icmp ping 请求包(类型 8 ,代码 0)和响应包(类型 0 ,代码 0)后,发现请求包和响应包的标识符和序号及选项数据完全一致。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值