I know that,The Default Time to live value is 255, each time a ipv4 packet crosses a router that value is decremented by 1.
But,When I ping my adsl router it shows TTL as 64
Pinging 192.168.0.1 with 32 bytes of data:
Reply from 192.168.0.1: bytes=32 time=1ms TTL=64
Reply from 192.168.0.1: bytes=32 time=2ms TTL=64
Reply from 192.168.0.1: bytes=32 time=2ms TTL=64
Reply from 192.168.0.1: bytes=32 time=2ms TTL=64There is only one hop b/w by pc to router so my expected TTL is 254 but why here ping shows TTL as 64..
Any help could be appreciated...
03 Answers
Here's a relevant quote from the ping manpage:
TTL DETAILS The TTL value of an IP packet represents the maximum number of IP routers that the packet can go through before being thrown away. In current practice you can expect each router in the Internet to decrement the TTL field by exactly one.
The TCP/IP specification recommends setting the TTL field for IP packets to 64, but many systems use smaller values (4.3BSD uses 30, 4.2BSD used 15).
And to quote RFC 1700:
3The current recommended default time to live (TTL) for the Internet Protocol (IP) is 64.
The maximum TTL is 255, but it is not the default. The default value depends on the operating system as you can see here.
For example, look at pings to 127.0.0.1 in Windows vs Linux:
My windows 7:
My Linux machine:
So it seems that you're getting replies from a machine whose default is 64.
2TTL values are determined by the remote machine. For example, if you ping a Linux machine, its originating TTL value is 64. Depending on how many networks it crosses to get back to you, the TTL is deducted by a value of 1. So if you ping 8.8.8.8, which is Googles nameserver, it has an originating value of 128. By the time it gets back to you, it may have a value of 121 (it does for me). That means it crossed 7 networks to get to me and it was a windows machine.
Common TTL values - Router - 255 Windows - 128 Linux-Mac - 64