Ping program 与 Traceroute program 均是以 iCMP 为基础的两个程序. 其功能主要用于探测是否能够连接、观察记录 IP datagram 的路程.
Ping Program 是 ICMP 的一部分,其基本机制是:发送 ICMP echo request 并希望接收到 ICMP echo replay.
ping 一词来源于 sonar pogram, 正如其名字所示,其功能主要有两种:
即用于探知对方是否是 reachable 的;如果是,两者之间的“距离”有多远,
第二个功能有很大缺陷,其最大问题是 IP datagram 大小限制为 60 bytes, 而 route record 双向都会记录,故最多只能记录 9 个 IP 地址,而如今往往会此值往往溢出.
Traceroute program 是一个基于 TCP/IP 的程序,其主要有两个用途:
其主要功能是用于 RR( route record) .
Traceroute program 的执行是以 IP header 中的 TTL 和 UDP datagram 的 ICMP 的相关属性为基础的.
定义: 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 发生无限循环.
Traceroute 利用返回的 ICMP error message 中包含 router 的 IP address 工作:即 traceroute 程序第一次发送 TTL = 1 的 IP datagram, 第二次发送 TTLs = 2 的 IP datagram, 以此类推.
可指定 destination host 以及需到达的端口,若无法到达, 则发送 ICMP error message “port unreachable".
Traceroute 程序将 UDP datagram 的 destination host 的端口设置为 an unlikely value (larger than 300,000), 使得其到达端口后,返回一 "port unreachable" error 的 ICMP.
traceroute 相较于 ping(IP record route option) 有三个优点:
但是, traceroute 程序也有瑕疵,有以下三点:
TCP/IP illustated: 第七、八章 Ping program & Traceroute program
原文:https://www.cnblogs.com/FBsharl/p/11031705.html