第6章差错与控制报文协议 6.1因特网控制报文协议 62ICMP报文格式与类型 63ICMP差错报告 64ICMP控制报文 65ICMP请求与应答报文对 6.6ICMP报文封装
6.1因特网控制报文协议(cMP) ICMP协议设计的最初目的主要是用于IP层的 差错报告,由路由器或信宿以一对一的模式向 信源报告传输错误的原因。 随着网络的发展,检测和控制功能逐渐被引入 到ICMP协议中,使得ICMP协议不仅用于传 输差错报告,而且大量用于传输控制报文 ICMP与IP协议位于同一个层次(IP层),但 ICMP报文是封装在IP数据报的数据部分进行 传输的 ICMP协议是IP协议的补充,用于IP层的差错 报告、拥塞控制、路径控制以及路由器或主机 信息的获取。 返回
返回
62|cMP报文格式与类型 |CMP报文由首部和数据段组成。首部为定 长的8个字节,前4个字节是通用部分,后4 个字节随报文类型的不同有所差异。cMP 报文的一般格式如图所示。 0 16 类型 代码 校验和 8 首部 首部其他部分 数据 数据 图61OMP报文格式
代 码 校 验 和 数 据 0 8 16 31 类 型 首 部 其 他 部 分 首部 数据 8 字节 图6-1 ICMP报文格式
ICMP报文虽然细分为很多类,但总的来看 可以分为如图所示的三大类:差错报告 控制报文和请求应答报文。 ICMP报文 差错报告 控制报文 请求应答报文 源 重回路时1址 信宿不可达报 数据报超时报告 数据报参数错报告 抑 定 应请求与应答 由器请求与通告报文 隹 掩 码 向 求 报 报 与应答 报 告 文 文 文 报文 报 图6-2ICMP报文种类 返回
ICM P 报文 图 6-2 ICM P 报文种类 差错报告 控制报文 请求应答报文 信 宿 不 可 达 报 告 数 据 报 超 时 报 告 数 据 报 参 数 错 报 告 源 抑 制 报 文 重 定 向 报 文 回 应 请 求 与 应 答 报 文 地 址 掩 码 请 求 与 应 答 报 文 路 由 器 请 求 与 通 告 报 文 时 间 戳 请 求 与 应 答 报 文 返回
63CMP差错报告 ICMP差错报告的数据区包含出错数据报的首部及该 数据报的前64位数据,这些信息有助于信源或管理 人员发现错误原因 ICMP差错报告具有以下特点: 1)只报告差错,但不负责纠正错误,纠错工作留给 高层协议去处理。 2)发现出错的设备只向信源报告差错 3)差错报告作为一般数据传输,不享受特别优先权 和可靠性 4)产生ICMP差错报告的同时,会丢弃出错的IP数 据报
·形成CMP差错报告时有以下例外: 1)|cMP差错报文本身不会再产生 LCMP差错报告 2)分片报文的非第一个分片不会产生 CMP差错报告。 3)组播地址报文不会产生CMP差错报 4)特殊地址127.0.0.0和0.0.0.0的报文 不会产生|CMP差错报告
631信宿不可达报告 ·当路由器无法根据路由表转发IP数据报时或 主机无法向上层协议和端口提交IP数据报时, 将丢弃当前的数据报,并产生信宿不可达差 错报告,向信源报告出错。信宿不可达报文 如图所示。 8 16 31 8 类型:3 代码:0-15 校验和 字节 首部 未用(全0) 出错数据报的部分信息 数据 (IP数据报首部+数据报数据部分的前64位) 图6-3ICMP信宿不可达报文格式
代 码:0-15 校 验 和 出错数据报的部分信息 (IP 数据报首部+数据报数据部分的前64 位) 0 8 16 31 类 型:3 未 用(全0) 首部 数据 8 字节 图6-3 ICMP 信宿不可达报文格式
·信宿不可达报文可能由路由器产生,也可能由信宿机 产生。产生信宿不可达报文的原因的16种可能: 类型 报文 代码 描述 0网络不可达 1主机不可达 2协议不可达 3端口不可达 4|数据报无法分片 5源路由失败 6信宿网络未知 7|信宿主机未知 信宿不可达 8源主机被隔离 9与信宿网络的通信被禁止 10与信宿主机的通信被禁止 11对特定的服务类型Tos网络不可达 12对特定的服务类型(OS)主机不可达 13因管理者设置过滤而使主机不可达 14因非法的优先权而使主机不可达 15|因报文的优先级低于网络设置的最小优先级而使主机不可达
类型 报 文 代码 描 述 3 信宿不可达 0 网络不可达 1 主机不可达 2 协议不可达 3 端口不可达 4 数据报无法分片 5 源路由失败 6 信宿网络未知 7 信宿主机未知 8 源主机被隔离 9 与信宿网络的通信被禁止 10 与信宿主机的通信被禁止 11 对特定的服务类型(TOS)网络不可达 12 对特定的服务类型(TOS)主机不可达 13 因管理者设置过滤而使主机不可达 14 因非法的优先权而使主机不可达 15 因报文的优先级低于网络设置的最小优先级而使主机不可达
632数据报超时报告 ·在数据报的传输过程中,首部的TTL值用于 防止数据报因路由表的问题而无休止地在网 络中传输。当TTL值为0时,路由器会丢弃当 前的数据报,并产生一个ICMP数据报超时报 告。另外。 ·在信宿进行分片重组时会启动重组定时器, 旦重组定时器超时,信宿就会丢弃当前正 在重组的数据报,然后产生一个ICMP数据报 超时报告,并向信源发送该超时报告
数据报超时报告的报文格式与信宿不可 达报告的报文格式相同,只是类型和代 码值不同 ·数据报超时报告的类型和代码的含义如 表所示。类型值11表示是数据报超时报 文,代码“0”表示TTL超时,代码“1” 表示分片重组超时。 类型 报文 代码 描述 0路由TT超时 超时 1分片重组超时
类型 报 文 代码 描 述 11 超时 0 路由TTL超时 1 分片重组超时