在TCP/IP網絡中,網絡層并不對資料包進行可靠性傳輸保證,隻通過ICMP封包提供回報機制(例如:差錯控制)。PING指令就是ICMP的請求/響應封包,也是網絡最常用的測試手段。通常使用PING指令測試互通性時有以下幾種消息回報:
1、Request Time Out
2、Destination Unreachable
3、TTL Expired in transit
情況1:當信源機PING某信宿機時,信源機在一段時間内(信源機發送ICMP請求封包後,會啟動定時器0)無法收到ICMP響應封包,就會産生該種情況。出現上述問題的原因在于,信源到信宿的路由正常,而信宿到信源無可用通路。
情況2:當信源機到信宿機無可用通路時,就會産生該種原因。
情況3:當信源機發送IP資料包時(ICMP是被直接封裝在IP包中),會加上包的TTL(Time to Live)時間,資料包在每經過一個路由器時,路由器會将包的TTL時間減1,如果在ICMP請求封包未到信宿機之前,該資料包的TTL為0,則相應的網關丢棄該封包,同時向信源機發送ICMP的逾時封包,在信源機上應将顯示TTL Expired in transit消息。該問題主要是在網絡内部出現了路由循環造成資料包無法到達信宿機,可使用Tracert跟蹤,判斷故障出處(使用該指令時最好在主機上完成)。
注:某些路由器對包的TTL時間并不是減1,但一般情況是這樣。
方法:如果正常PING通某主機的情況下,可簡單從回應資訊中分析資料包所經過的路由跳數
i.e. replay xxx.xxx.xxx.xxx: byte=xxx time=xxxms ttl=xxx
用256減去該條資訊中TTL的值,即可得所經的路由跳數,如TTL時間過小,則可能網絡中出現短暫的路由環路。
在配置靜态路由時易出現該種情況,動态路由協定中RIPV1易出現,而RIPV2和OSPF不易出現。