Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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.


share|improve this question
up vote 1 down vote accepted

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.

share|improve this answer

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.

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

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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