目录
- 前言
- 10.1 ICMP简介
- 10.2 ICMP报文
- 10.2.1 ICMP报文格式
- 10.2.2 ICMP报文类型
- 10.2.3 ICMP报文固定首部字段意义
- 10.3 ICMP差错报告报文
- 10.3.1 目的不可达
- 10.3.2 源站抑制
- 10.3.3 重定向(改变路由)
- 10.3.4 超时
- 10.3.5 参数错误
- 10.4 ICMP查询报文
- 10.4.1 回显
- 10.5 ICMP数据结构
- 10.5.1 ICMP数据报数据结构
- 10.5.2 ICMP类型字段
- 10.5.3 目的不可达代码字段
- 10.5.4 超时代码字段
- 10.6 发送ICMP差错报告
- 10.6.1 发送ICMP差错报文基函数
- 10.6.2 icmp_dest_unreach()目的不可达差错报告
- 10.6.3 icmp_time_exceeded()超时差错报告
- 10.7 接收ICMP报文处理
RFC 792
原文:李柱明博客:https://www.cnblogs.com/lizhuming/p/16861945.html
10.1 ICMP简介IP 协议是一种不可靠、无连接的协议 , 只在各个主机间交付数据,但是对于数据的到达与否,IP 协议并不关心 。
但是有些源主机希望能得到当数据没能发送到目标的时候有个回应,不然目标主机都不知道发的数据到了哪里 。
所以 IP 协议并不完美,这就出现的 ICMP 。
ICMP 是“Internet Control Message Protocol”(网际报文控制协议)的缩写 。
ICMP协议用于在IP主机、路由器之间传递控制消息,包括数据包错误信息、网络状况信息和主机状况信息等 。
ICMP属于网络层 。
虽然从报文上看ICMP报文是基于IP报文的,但是ICMP从协议和功能上看是属于网络层的,因为ICMP报文的目的不是目的主机的某个应用程序,不为应用程序提供传输服务,而是是IP协议的辅助协议 。
所以其报文主要分两大类:ICMP差错报告报文和ICMP查询报文 。
10.2 ICMP报文10.2.1 ICMP报文格式IPCM报文封装在IP数据区中,如图:
文章插图
其ICMP报文格式如下图:
文章插图
ICMP报文由8字节首部和可变长度的数据部分组成 。
不同类型的ICMP报文,ICMP 报文首部的格式也会有点差异,但是首部的前 4 个字节都是通用的:
- 类型(type)字段:占用1字节 。表示产生这种类型 ICMP 报文的原因 。
- 代码(code)字段:占用1字节 。进一步描述了产生这种类型 ICMP 报文的具体原因 。
- 校验和字段:占用2字节 。记录包括 ICMP 报文数据部分在内的整个 ICMP 数据报的校验和 。其计算方法和IP首部校验和一样 。
RFC 792
:- 根据各种ICMP报文类型来定义剩余非固定的报文格式 。
- 也可以参考该协议找到各个字段的意义 。
ICMP差错报告报文主要是用来向 IP 数据报源主机返回一个差错报告信息 , 而这个差错报告信息产生的原因是路由器或者主机不能对当前数据报进行正常的处理 。
简单来说就是源主机发送的数据报没法到目标主机中 , 或者到达了目标主机而无法递交给上层协议 。便会产生ICMP差错报告报文返回给源主机 。
ICMP查询报文用于一台主机向另一台主机发起一个请求,如果目标主机收到这个查询的请求后,就会按照查询报文的格式向源主机做出应答 。如ping 。
结合ICMP报文类型字段的表格:
ICMP报文类型具体类型描述差错报告报文3目的不可达4源站抑制5重定向11超时12参数错误报文查询报文0或8回显请求或回显应答9或10路由器询问或通告13或14时间戳请求或应答15或16信息请求或信息应答17或18掩码请求或应答10.2.3 ICMP报文固定首部字段意义参考
RFC 792
。类型代码描述查询差错00回显应答(如ping应答)√3目的不可达:0网络不可达√1主机不可达√2协议不可达√3端口不可达√4需要进行分片,但设置不了分片比特√5源站选路失败√6目的网络不认识√7目的主机不认识√8源主机被隔离(作废不用)√9目的网络被强制禁止√10目的主机被强制禁止√11由于服务类型TOS,网络不可达√12由于服务类型TOS , 主机不可达√13由于过滤,通信被强制禁止√14主机越权√15优先权中止生效√40源站抑制√5重定向:0对网络重定向√1对主机重定向√2对服务类型和网络重定向√3对服务类型和主机重定向√80请求回显(如ping请求)√90路由器通告√100路由器请求√11超时:0传输期间TTL为0√1分片数据报重装超时√12参数问题:0坏IP首部√1缺少必须的选项√130时间戳请求√140时间戳应答√150信息请求√160信息应答√170地址掩码请求√180地址掩码应答√10.3 ICMP差错报告报文注意 , 有几种数据报出现错误是不会产生对应的差错报文的:
推荐阅读
- 创造与魔法2022最新礼包在哪里领取
- 奥比岛手游被频繁投诉的是哪支施工队
- 琉璃神社app有苹果的吗
- 用什么方式打开.dll文件(电脑怎么打开dll文件)
- cmd如何运行dll(运行dll命令)
- Sql Server性能排查和优化懒人攻略
- lol烬的大招怎么放,技巧是什么(lol烬的技能介绍)
- lol英雄联盟戏命师烬大招怎么放(lol手游烬大招怎么释放)
- 在 .NET 7上使用 WASM 和 WASI
- 【lwip】09-IPv4协议&超全源码实现分析