TCP/IP illustated: 第七、八章 Ping program & Traceroute program

Ping program 与 Traceroute program 均是以 iCMP 为基础的两个程序. 其功能主要用于探测是否能够连接、观察记录 IP datagram 的路程.

Ping Program

Summary

Ping Program 是 ICMP 的一部分,其基本机制是:发送 ICMP echo request 并希望接收到 ICMP echo replay.

ping 一词来源于 sonar pogram, 正如其名字所示,其功能主要有两种:

  1. 用于两 host 之间的连接的基本检测.例如 Telnet 和 FTP ,能得到 Ping 回应是基本的要求.
  2. 用于得知 IP datagram 中间传输的 host 和 时间间隔. (ping 加 -R 用于记录经过的 host)

即用于探知对方是否是 reachable 的;如果是,两者之间的“距离”有多远,

第二个功能有很大缺陷,其最大问题是 IP datagram 大小限制为 60 bytes, 而 route record 双向都会记录,故最多只能记录 9 个 IP 地址,而如今往往会此值往往溢出.

Traceroute Program

Summary

Traceroute program 是一个基于 TCP/IP 的程序,其主要有两个用途:

  1. 用于观察记录 IP datagram 传输的 route
  2. 指定特定的 route, 观察路径执行情况(称为 IP source route option, 命令行命令为 routetrace -g [Strict] 或者 routetrace -G[Loose])

其主要功能是用于 RR( route record) .

原理

Traceroute program 的执行是以 IP header 中的 TTL 和 UDP datagram 的 ICMP 的相关属性为基础的.

基础1:TTL

概念

定义: TTL 是 IP header 中的一部分, 其全称为 time-to-live.是允许经过的 router 的数量的上限,每经过一个 router, 数值就 increment by 1.
功能: 当 TTL 的值为0或1时, router 不再将其 forward 到下一个 router, 而是将其 discard, 并返回 ICMP error message "time exceed" .
目的:防止 IP datagram 发生无限循环.

TTL 与 Traceroute

Traceroute 利用返回的 ICMP error message 中包含 router 的 IP address 工作:即 traceroute 程序第一次发送 TTL = 1 的 IP datagram, 第二次发送 TTLs = 2 的 IP datagram, 以此类推.

基础2:UDP datagram

概念

可指定 destination host 以及需到达的端口,若无法到达, 则发送 ICMP error message “port unreachable".

UDP datagram 与 Traceroute

Traceroute 程序将 UDP datagram 的 destination host 的端口设置为 an unlikely value (larger than 300,000), 使得其到达端口后,返回一 "port unreachable" error 的 ICMP.

优点和瑕疵

traceroute 相较于 ping(IP record route option) 有三个优点:

  1. 不是所有 router 都支持 IP record route option,但traceroute 都可行.
  2. traceroute 只记录一个方向
  3. traceroute 可比 IP record route option 记录更多数据.

瑕疵

但是, traceroute 程序也有瑕疵,有以下三点:

  1. route 存在一定的不确定性.目前发送的 IP datagram 的 route 未必是 consecutive IP datagram 的 route.
  2. time 存在一定的不确定性. IP datagram 的去程和回程未必一样.
  3. interface 所指定的 IP address 的不确定性. traceroute 接受到的 IP address 基于 UDP arrived 的 interface. 与 IP route record option 的 outgoing interface 不同.




原文地址:https://www.cnblogs.com/FBsharl/p/11031705.html