From what I gathered so far, Tracert works by sending 3 ICMP echo messages. Starting with a TTL value of 1. For each router the packet encounters, the TTL value will be decremented. For the 1st router, 1-1 = 0, so an ICMP "time exceeded" message will be sent back to the sender machine. Next, the TTL value will be incremented to 2 by the sender machine and the cycle repeats for the 2nd router (2-->1-->0) and so on.

Please correct me if my undestanding is flawed.

I am curious as to why the ICMP "time exceeded" message isn't displayed by Tracert in Command Prompt since it is in fact an error message ? The cycle simply proceeds on.



The "time exceeded" "error" message, as you put it, is displayed by tracert as the # of ms it took to get that error back. That error is proof that the 1st, 2nd, 3rd, etc router received the packet, and has the address of that router on it so tracert knows the path the packets are taking. It's when they don't come back you get the * printed and Request timed out as the address of that router.


The "error message" (which really isn't an error so much as courtesy information) isn't displayed because it's not sent to the stderr by tracert. I don't see what possibly value could be gleaned by the program sending extraneous error messages when it expects and handles the data properly.

The rest of your explanation is correct.

  • Thanks for the clarification, couldn't upvote your answer as of yet =) – iridescent Dec 17 '12 at 2:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.