Trace route is a way to gather information on the hosts one packet makes on its way to another host.
Computer A sends an ICMP echo packet (in our library we use ICMP, but UDP and TCP can be used as well), with TTL of 1.
Each host on the way decreases the TTL by one, and when the TTL is 0, it sends back an ICMP timeout (means the packet is expired)
Computer A sends the same ICMP echo with increasing TTLs, until it get's a normal reply from the target host.
Sometimes hosts don't sends ICMP timeout, so their IP is not visible.
Trace route is implemented in classes: CTraceRouteSocket, CTraceRouteSocketReverseDNS CRealTimeTraceRouteSocket, and demonstrated in samples: KomodiaTracert, KomodiaTracertDNS, and RealtimeTraceRoute.