免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2187 | 回复: 8
打印 上一主题 下一主题

对ping中的ttl解释深表怀疑! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-01 11:51 |只看该作者 |倒序浏览
http://www.chinaitlab.com/www/special/linux4.asp一文中写到
‘ttl:指的是 time to live 啦!当经过一个节点, ttl 就会减少一!而预设有 255 个!以上面为例,我的 Linux 主机连接到 tw.yahoo.com 共经过 10 个 gateway ,所以 ttl 剩下 245 !’

-----------
我ping自己本机的ip,测试结果如下:
[root@dmzhaorh dmzhao]# ping 10.3.10.104
PING 10.3.10.104 (10.3.10.104) 56(84) bytes of data.
64 bytes from 10.3.10.104: icmp_seq=1 ttl=64 time=0.050 ms
64 bytes from 10.3.10.104: icmp_seq=2 ttl=64 time=0.034 ms
64 bytes from 10.3.10.104: icmp_seq=3 ttl=64 time=0.034 ms

问题1:难道是经过了255-64=191个节点,即191个gateway?
问题2:ttl中文意思是什么?

论坛徽章:
0
2 [报告]
发表于 2006-03-01 11:57 |只看该作者
你要ping windows的机器才会有254

论坛徽章:
0
3 [报告]
发表于 2006-03-01 11:59 |只看该作者
晕哦,被误导啦! 是128才对。

论坛徽章:
0
4 [报告]
发表于 2006-03-01 12:05 |只看该作者
TTL值全称是“生存时间(Time To Live)”
不同的 OS 在 TTL 的设置上是不同的,他们的基数不同
比如,Solaris 和早起的 RedHat TTL = 255
FreeBSD 和现在的 Linux TTL = 64
Windows TTL = 128

ping 一个网站,看 TTL 是多少,大概可以分辨出他的 OS (我这里说“大概”,因为有很多例外)
通过 TTL 可以知道他原先的 TTL 基数是多少
比如 119,大概知道基数是 128,大概是 WINDOWS 操作系统
比如 232,大概知道基数是 255,大概知道是 Solaris 或其他 UNIX 系统
比如 46,大概知道基数是 64,大概知道是 Linux 或其他 UNIX 系统比如 FreeBSD
TTL 在系统里是可调的,曾经写过一个 script,使对方 ping 过来的时候发现 TTL 一直在变化,呵呵。。。

每过一次路由,TTL 要 -1,因此也可以知道大概中间过了多少跳
比如一个 TTL = 43 和 TTL= 123 的网站,大概知道后者访问起来比前者要快,因为经过的跳数相对少些

论坛徽章:
0
5 [报告]
发表于 2006-03-01 12:08 |只看该作者
对了,有兴趣可以找一台 Linux 做以下试验

执行
# for((i=255;i>=64;i--));do sysctl -w net.ipv4.ip_default_ttl=$i &>/dev/null;sleep 1;done

然后用其他机器去 ping 这台 Linux,你会看到好玩的效果 ^_^

论坛徽章:
0
6 [报告]
发表于 2006-03-01 12:52 |只看该作者
谢谢版主,受益非浅,你说的实验,我去测试一下,到时候到测试结果写出来。

论坛徽章:
0
7 [报告]
发表于 2006-03-01 14:02 |只看该作者
好啊,支持!

论坛徽章:
0
8 [报告]
发表于 2006-03-01 14:40 |只看该作者
C:\>ping 10.3.10.104

Pinging 10.3.10.104 with 32 bytes of data:

Reply from 10.3.10.104: bytes=32 time<10ms TTL=238
Reply from 10.3.10.104: bytes=32 time<10ms TTL=237
Reply from 10.3.10.104: bytes=32 time<10ms TTL=236
Reply from 10.3.10.104: bytes=32 time<10ms TTL=235

Ping statistics for 10.3.10.104:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum =  0ms, Average =  0ms

C:\>ping 10.3.10.104

Pinging 10.3.10.104 with 32 bytes of data:

Reply from 10.3.10.104: bytes=32 time<10ms TTL=231
Reply from 10.3.10.104: bytes=32 time<10ms TTL=230
Reply from 10.3.10.104: bytes=32 time<10ms TTL=229
Reply from 10.3.10.104: bytes=32 time<10ms TTL=228

.................................

呵呵,不错。诚告每一个人,不要小看这ping命令,大文章可做,认真点,要知其然还要知其所以然,版主,你说,对吗?

论坛徽章:
0
9 [报告]
发表于 2006-03-01 15:09 |只看该作者
原帖由 dmzhao 于 2006-3-1 14:40 发表
要知其然还要知其所以然,版主,你说,对吗?

如果是只想解决问题,可以只知其然,甚至不知其然让别人去帮忙
如果是要学习,就一定要知其然也知其所以然,不然等于没学,稍微换一下就不知道怎么变通了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP