1、Tracesoute程序通过IP的TTL字段生存期来实现。当路由器收到一份IP数据报时,如果其TTL字段是0或者1,则路由器不转发此数据报(系统不应该收到TTL字段为0的数据报)。
当路由器收到一份TTL为1或者0的IP数据报时,会给信源发一份ICMP超时信息,包含这份ICMP的IP报文的信源地址是该路由器的IP地址。
2、目的主机哪怕接手到TTL值为1的IP数据报,也不会丢弃该数据报并产生一份超时报文,如何判断到达目的主机呢?
Tracetroute程序发送一份UDP数据报给目的主机,但它选择一个不可能的值作为端口号,这样会产生一份端口不可达的ICMP报文。这样,Traceroute程序所要做的就是区分接收到的ICMP报文是端口不可达还是超时。
3、源站选路的思想是由发送者指定路由。有两种形式:
严格的源路由选择:发送端指明IP数据报所必须采用的确切路由。如果没有严格按照,就返回一个“源站路由失败”的ICMP差错报文。
宽松的源路由选择:发送者指明了一个数据报经过的清单,但是两个地址之间可以通过其他路由器。
源站选路是IP的选项功能,它跟记录路由功能格式一样,不同的只是code类型。