第6章 ICMP:Internet控制报文协议
1.I C M P 经常被认为是 I P 层的一个组成部分。它传递差错报文以及其他需要注意的信息。 I C M P 报文通常被 I P 层或更高层协议( T C P 或 U D P )使用。一些 I C M P 报 文 把 差 错 报 文 返 回 给 用户进程。
I C M P 地 址 掩 码 请 求 和 应 答 以 及 时 间 戳 请 求 和 应 答 。 这 些 是 典 型 的 请 求 — 应答报文。二者在 I C M P报 文 中 都 有 标 识 符 和 序 列 号 。 发 送 端 应 用 程 序 在 标 识 字 段 内 存 入 一 个 唯一的数值,以区别于其他进程的应答。序列号字段使得客户程序可以在应答和请求之间进 行匹配。
2 .ICMP报文的类型
各种类型的 I C M P报文, 不 同 类 型 由 报 文 中 的 类 型 字 段 和 代 码 字 段 来 共 同 决 定 。 I C M P 报文是一份查询报文还是一份差错报文。因为对 I C M P 差错报 文有时需要作特殊处理,因此我们需要对它们进行区分。例如,在对 I C M P 差 错 报 文 进 行 响 应 时,永远不会生成另一份 I C M P 差 错 报 文 ( 如 果 没 有 这 个 限 制 规 则 , 可 能 会 遇 到 一 个 差 错 产 生 另一个差错的情况,而差错再产生差错,这样会无休止地循环下去)。
下 面 各 种 情 况 都 不 会 导 致 产 生 I C M P 差错报文:
- I C M P 差 错 报 文 ( 但 是 , I C M P 查 询 报 文 可 能 会 产 生 I C M P 差错报文)。
- 目的地址是广播地址或多播地址的 I P 数据报。
- 作为链路层广播的数据报。
- 不是 I P 分 片 的 第 一 片 。
- 源地址不是单个主机的数据报。这就是说,源地址不能为零地址、环回地址、广播地址或多播地址。
3.ICMP时间戳请求与应答
I C M P 时间戳请求允许系统向另一个系统查询当前的时间。返回的建议值是自午夜开始计 算的毫秒数,协调的统一时间( Coordinated Universal Time, UTC)(早期的参考手册认为 U T C 是 格 林 尼 治 时 间 )。这种 I C M P 报 文 的 好 处 是 它 提 供 了 毫 秒 级 的 分 辨 率 , 而 利 用 其 他 方 法 从 别 的 主 机 获 取 的 时 间 ( 如 某 些 U n i x 系统提供的 r d a t e 命 令 ) 只 能 提 供 秒 级 的 分 辨 率 。 由 于 返回的时间是从午夜开始计算的,因此调用者必须通过其他方法获知当时的日期,这是它的 一个缺陷
4.ICMP端口不可达差错
I C M P 端口不可达差错,一种常见的 I C M P 差错。对返回的 I C M P 差 错 信 息 进 行了分析:导致差错的 I P 数据报的首部及后续 8 个字节。这个信息对于 I C M P 差 错 的 接 收 方 来 说 是 必 要 的 , 可 以 更 多 地 了 解 导 致 差 错 的 原 因 。 这 是 因 为 T C P 和 U D P 都 在 它 们 的 首 部 前 8 个字 节中存入源端口号和目的端口号。
它是 I C M P 目 的 不 可 到 达 报 文 中 的 一 种 , 以 此 来 看 一 看 I C M P 差错报文中所附加的信息。使用 U D P 来查看它。U D P 的规则之一是,如果收到一份 U D P 数 据 报 而 目 的 端 口 与 某 个 正 在 使 用 的 进 程 不 相 符 , 那么 U D P 返回一个 I C M P 不可达报文。可以用 T F T P 来强制生成一个端口不可达报文。