PING某台计算机时,TTL值是怎么来的?

发表于:2007-07-04来源:作者:点击数: 标签:
为什么 WINDOWS 是128, LINUX 是255,而FREEBSD是64呢? 如果我想让别人PING我的时候,给他一个假象,比如128,可以实现吗? 我的RH是7.3。 xinyv 回复于:2003-08-25 11:33:01 yes! sysctl-wnet.ipv4.ip_default_ttl=128 platinum 回复于:2003-08-28 09:3

为什么WINDOWS是128,LINUX是255,而FREEBSD是64呢?
如果我想让别人PING我的时候,给他一个假象,比如128,可以实现吗?
我的RH是7.3。

 xinyv 回复于:2003-08-25 11:33:01
yes !
sysctl -w net.ipv4.ip_default_ttl=128

 platinum 回复于:2003-08-28 09:36:13
谢谢,但我试过了,即使改了以后,再重新启动,PING的时候仍然是255,为什么?不能改吗?

 fish_ys 回复于:2003-08-28 09:59:35
什么是TTL值?

TTL值全称是“生存时间(Time To Live)”,简单的说它表示DNS记录在DNS服务器上缓存时间。要理解TTL值,请先看下面的一个例子:

有这样一个域名MYHOST.SHARELLA.COM(其实,这就是一条DNS记录,通常表示在SHARELLA.COM域中有一台名为MYHOST的主机)对应IP地址为1.1.1.1,它的TTL为10分钟。这个域名或称这条记录存储在一台名为DNS.SHARELLA.COM的DNS服务器上。

现在有一个用户在浏览器中键入一下地址(又称URL):HTTP://MYHOST.SHARELLA.COM ;这时会发生社么呢?

该访问者指定的DNS服务器(或是他的ISP,互联网服务商, 动态分配给他的)8.8.8.8就会试图为他解释MYHOST.SHARELLA.COM,当然8.8.8.8这台DNS服务器由于没有包含MYHOST.SHARELLA.COM这条信息,因此无法立即解析,但是通过全球DNS的递归查询后,最终定位到DNS.SHARELLA.COM这台DNS服务器,DNS.SHARELLA.COM这台DNS服务器将MYHOST.SHARELLA.COM对应的IP地址1.1.1.1告诉8.8.8.8这台DNS服务器,然有再由8.8.8.8告诉用户结果。8.8.8.8为了以后加快对MYHOST.SHARELLA.COM这条记录的解析,就将刚才的1.1.1.1结果保留一段时间,这就是TTL时间,在这段时间内如果用户又有对MYHOST.SHARELLA.COM这条记录的解析请求,它就直接告诉用户1.1.1.1,当TTL到期则又会重复上面的过程。

动态主机用户的IP地址的多变性就决定了大的TTL值是不合适的,试想当用户的IP地址变化时全球的DNS服务器由于TTL没有到期而继续使用旧的IP地址就会产生解析错误了。

因此,我们建议您将TTL值设置为1分钟,但如果您的IP地址是固定的或长时间不断线,那么较长的TTL比较好,因为这样会加快解析速度。

 sakulagi 回复于:2003-08-28 10:16:13
[quote:b507349clearcase/" target="_blank" >cc4="platinum"]谢谢,但我试过了,即使改了以后,再重新启动,PING的时候仍然是255,为什么?不能改吗?[/quote:b507349cc4]     修改sysctl.conf

 grub007 回复于:2003-08-28 10:33:39
[quote:479d172931="sakulagi"]    修改sysctl.conf[/quote:479d172931]     

然后:

sysctl -p /etc/sysctl.conf

 双眼皮的猪 回复于:2003-11-13 20:50:40
抱歉把这个帖子翻出来...
sysctl -p /etc/sysctl.conf应该就是存的意思吧..
修改过sysctl.conf之后只要保存了,应该不需要这步了吧...

我改了以后发现不sysctl -p也已经修改了ttl

ps:rh9跟rh7.3  ttl竟然不一样...我晕...

我的是64
#ping 127.0.0.1的时候TTL是64

 platinum 回复于:2003-11-20 14:38:25
没错,RH9是64,WINDOWS是128,RH73以下是255,RH8没试,BSD也是64

 cccjsxg 回复于:2003-11-21 09:47:33
[quote:cef1e22538="sakulagi"]    修改sysctl.conf[/quote:cef1e22538]

我的sysctl.conf 如下:

net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
kernel.sysrq = 0
kernel.core_uses_pid = 1

怎么改?
是追加一行:net.ipv4.ip_default_ttl=128吗?
我加了,不行啊。

 xiaojie83 回复于:2004-03-21 00:21:37
原来还有这么多高手
我是见识过了
希望我也能向你们学点

 yoursmile 回复于:2004-07-29 21:27:12
[quote:2f7e015552="cccjsxg"]

我的sysctl.conf 如下:

net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
kernel.sysrq = 0
kernel.core_uses_pid = 1

怎么改?
是追加一行:net.ipv4.ip_default_ttl=128吗?
我加了,..........[/quote:2f7e015552]


没有人回答?
 :?:

 wjwxajh 回复于:2004-08-20 22:31:30
按你说的WINDOWS是128,LINUX是255,FREEBSD是64,那为什么我在PING WWW。163。COM的时候返回的值没有一个是这上面的,有时候是51,有时候是241,那它代表什么操作系统啊,我还在网上看这样一段解释PING的:
-------------------------------------------------------------------------------------
Ping能够以毫秒为单位显示发送回送请求到返回回送应答之间的时间量。如果应答时间短,表示数据报不必通过太多的路由器或网络连接速度比较快。Ping还能显示TTL(Time To Live存在时间)值,我们可以通过TTL值推算一下数据包已经通过了多少个路由器:源地点TTL起始值(就是比返回TTL略大的一个2的乘方数)-返回时TTL值。例如,返回TTL值为119,那么可以推算数据报离开源地址的TTL起始值为128,而源地点到目标地点要通过9个路由器网段(128-119);如果返回TTL值为246,TTL起始值就是256,源地点到目标地点要通过9个路由器网段。
--------------------------------------------------------------------------------------
请问是哪个对的啊,按他说的话,TTL值根本与操作系统无关,而且好像只是检测经过几个路由器,而按楼上的说法好像又与操作系统有关,请问这是怎么回事啊?

 allit 回复于:2004-09-06 22:43:55
我有点晕,能不能在说的详细点啊

 wjwxajh 回复于:2004-09-12 13:45:38
按楼上的有一位兄弟说,TTL值是DNS保存IP地址的时间,如果是动态的IP地址的话,最好设置时间为1分钟,那么我想问一下,这个DNS对应的IP地址的一分钟的记录保存在哪里的,是保存在浏览者的电脑里的,还是保存在DNS.SHARE.COM这个服务器上的,还是保存在全球DNS服务器上的.全球DNS服务器又在哪个国家里呢?还有,WINDOWS的TTL值是128,这个128单位是什么,秒还是分钟?

 wangfeixue 回复于:2004-09-12 14:33:24
TTL值的确是ip地址和域名保存在DNS服务器高速缓存中的生存时间,对应的解析当然不会保存在自己的主机上了。而是保存在DNS服务器上面

还有你没有把DNS的概念搞清楚,哪有什么全球DNS服务器,
只有根域服务器和顶及域服务器,他们都在美国,自己的DNS记录当然是在自己的dns服务器上了呦!
ttl值是以秒来计算的!

 abel 回复于:2004-09-13 09:59:30
Default TTL of OS: 
Win95: 32 
Linux 2.0.x: 64 
Win98/NT: 128 
Linux 2.2.x: 255 

這個是 OS 預設的值,雖然版上有很多人都說要去改 
net.ipv4.ip_default_ttl=255 
但是這是沒有用的,只要有注意的人就會知道,改這個值對 ICMP 的回應 
沒有什麼影響(對非 ICMP 會有影響) 
您可看看 http://www.faqs.org/docs/iptables/targets.html#TTLTARGET 
上的說明,即可知道,你可以 用 iptables 改 ttl,不過個人覺得改這個用處不大
因為你所經路上的 Router 或 Firewall 也可以改 ttl
所以個人覺得改這個值意義不大,供您參考看看 

另外,還有一個有趣的東西, hping2 
http://www.hping.org/ 
亦可研究看看,很好用的一個 tool


至於有人提到的 DNS TTL 與這個主題是另外一回事...此 TTL 非 IP Header 中
之 TTL ,勿混淆

[quote:6acf769fa8]
还有你没有把DNS的概念搞清楚,哪有什么全球DNS服务器, 
只有根域服务器和顶及域服务器,他们都在美国,自己的DNS记录当然是在自己的dns服务器上了呦! 
ttl值是以秒来计算的!
[/quote:6acf769fa8]
http://www.root-servers.org/ 可以看看 Location 的狀況
至於像 F Root 這種他會列 N 個地方,這是因為跑 BGP Anycasting
以避免 DDOS/DOS , 當有人 Root DNS Round Robin 查詢到 F.ROOT
時,如果就會選 "北京" 這個 F.Root ,而不會用到其他地點的 F.ROOT

所以 Root (根) DNS 不全在 USA..,這點要分清楚

 zydudu 回复于:2004-09-13 11:30:15
abel才是真的厉害 ,果然是高手!

 双眼皮的猪 回复于:2004-09-13 12:03:37
台湾的兄弟...呵呵...是不是跟netman一起的哦...

 abel 回复于:2004-09-13 16:06:17
[quote:7ab5eb9b35="双眼皮的猪"]台湾的兄弟...呵呵...是不是跟netman一起的哦...[/quote:7ab5eb9b35]
你可以把我們想像成是一起的,不過我們只有筆交,從未見過面 
他是一個非常 nice 的人

 trademark 回复于:2004-09-25 16:37:18
晕,说来说去,感觉都没说到点子上,哪位老大把整个过程贴出来不就行了嘛,这边一大堆理论上的,大家都看过了

 yh6788 回复于:2005-07-30 21:53:37
hping 是好工具?我怎么感觉nmap 才是好工具。

原文转自:http://www.ltesting.net