作者 主題: ping ttl=?的問題  (閱讀 13358 次)

0 會員 與 1 訪客 正在閱讀本文。

jack88

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
ping ttl=?的問題
« 於: 2008-04-22 17:06 »
請問各位前輩們
看書上寫ping出來的資料中的ttl=243的ttl是time to live
也就是通過多少個路由器的意思
ttl可以從64,128或255開始
也有個-t的參數可下

請問ttl從哪開始(64,128,255),是哪邊決定的呢?

這是www.hinet.net的
64 bytes from www.hinet.net (61.219.38.89): icmp_seq=1 ttl=250 time=10.9 ms
看應該是從255開始的

如果是www.yahoo.com.tw
64 bytes from rc.tpe.yahoo.com (202.43.195.13): icmp_seq=1 ttl=58 time=12.8 ms

這要如何知道初始的ttl是從255算起還是從64算起呢?
找最接近的嗎?
看了這個解答
http://tw.knowledge.yahoo.com/question/question?qid=1405111110671
請問真的是這樣分的嗎?

還有下了-t的參數似乎沒用
ping -t 64 www.yahoo.com.tw
ping -t 128 www.yahoo.com.tw
ping -t 255 www.yahoo.com.tw
出來的ttl都是一樣的
請問這參數的真正用途為何?
謝謝囉

蜜蜂

  • 活潑的大學生
  • ***
  • 文章數: 277
  • 性別: 男
    • 檢視個人資料
回覆: ping ttl=?的問題
« 回覆 #1 於: 2008-04-22 18:34 »
用 ping -t 指令可以看出 ttl 是從多少開始.
以此為例, ping www.yahoo.com.tw 結果為,
64 bytes from rc.tpe.yahoo.com (202.43.195.13): icmp_seq=1 ttl=58 time=12.8 ms

得到 ttl=58, 用代數 Z=58
代數 Y= 64 or 128 or 255
代數 X = Y-Z-1, 條件 Y > Z

再用 ping -t  X  www.yahoo.com.tw  看結果. 如果有 Time to live exceeded, 則 Y 即為 ttl 開始值.
From rc.tpe.yahoo.com (202.43.195.13) icmp_seq=0 Time to live exceeded


netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17477
    • 檢視個人資料
    • http://www.study-area.org
回覆: ping ttl=?的問題
« 回覆 #2 於: 2008-04-23 00:20 »
-t ttl 是你 ping 過去的 packet 用的。
別人回的 packet (也就是你看到的 reply),其 ttl 取決於對方。
不同的系統,有不同的值。

jack88

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
回覆: ping ttl=?的問題
« 回覆 #3 於: 2008-04-23 08:04 »
謝謝兩位的回答
因為在書上有看到一題題目

ping數值如下
64 bytes from w3n1.hinet.net (202.39.225.88): icmp_seq=1 ttl=59 time=7.8 ms
請問主機到202.39.225.88之間總共經過幾個路由器?
答案是
64-59=5
經過5個路由器

所以才會想到為什麼不是128-59哩還是255-59哩
原來這個ttl的初始值是由系統決定的而且還可以自行修改

代數 X = Y-Z-1, 條件 Y > Z
請問什麼情況下要再-1呢?

-t ttl 是你 ping 過去的 packet 用的
這個看的不是很懂
請問這在什麼狀況下會用到-t這個參數呢?
Options:
    -t             Ping the specified host until stopped.
ping指定的host直到被停止

再次謝謝兩位的回答喔

底下是我在網路上查到的資料

不同操作系统,返回的默认TTL值是不同的。
操作系统          TCP传输 UDP传输
AIX           60    30
DEC Patchworks V5 30 30
FreeBSD 2.1      64 64
HP/UX 9.0x      30 30
HP/UX 10.01      64 64
Irix 5.3           60 60
Irix 6.x           60    60
UNIX           255   255
Linux           64 64
MacOS/MacTCP 2.0.x 60 60
OS/2 TCP/IP 3.0     64    64
OSF/1 V3.2A      60 30
Solaris 2.x      255 255
SunOS 4.1.3/4.1.4     60 60
Ultrix V4.1/V4.2A      60 30
VMS/Multinet      64 64
VMS/TCPware      60 64
VMS/Wollongong 1.1.1.1 128 30
VMS/UCX (latest rel.) 128 128
MS Windows 95/98/NT 3.51 32 32
Windows NT4.0/2000/XP/2003 128 128

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17477
    • 檢視個人資料
    • http://www.study-area.org
回覆: ping ttl=?的問題
« 回覆 #4 於: 2008-04-23 08:32 »
請問這在什麼狀況下會用到-t這個參數呢?
Options:
    -t             Ping the specified host until stopped.
ping指定的host直到被停止

我的版本這樣說的:
引用
       -t ttl Set the IP Time to Live.

TWASA

  • 活潑的大學生
  • ***
  • 文章數: 269
  • 性別: 男
    • 檢視個人資料
回覆: ping ttl=?的問題
« 回覆 #5 於: 2008-04-23 10:28 »
ping -t 在MS作業系統是一直ping直到user中斷為止,在linux系統下以我自己的Fedora來說man的結果也是Set the IP Time to Live.
MS作業系統的話-i才是設定ttl
簡單來說我ping對方時,發出的封包也會設定上一個ttl值當然該值預設值要看系統的設定,一般都不會改

假設我故意把我送出的ttl設定成2,這時候我要ping比如www.google.com好了,這時你會發現根本到不了因為你送出的ttl=2
因為經過的路由應該都不只2個,當其中一個路由器看到ttl=0就把你的封包丟掉,你就會看到Time to live exceeded(linux)或TTL expired in transit.(MS)了
可以慢慢增加ttl的值,就知道你到達目的ip所需經過的路由有幾個,不過一般用traceroute還比較方便

jack88

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
回覆: ping ttl=?的問題
« 回覆 #6 於: 2008-04-23 10:52 »
謝謝netman和TWASA
經過兩位解釋後
我已經弄懂了netman所講的 觀念;)
感激不盡 :)