1. 程式人生 > >ping環回地址和ping主機乙太網地址的區別

ping環回地址和ping主機乙太網地址的區別

一、

這個問題是在TCP/IP詳解 卷一中7.5問題,查資料總結如下:

1,ping 127.0.0.1是環回地址,如果不能ping通說明當前機器的TCP/IP協議棧有問題,127本身是一個虛介面,任何時候都是直接上交到核心中處理的。(
如果開啟了wifi共享,可能會ping不通)

2,ping 192.168.1.X 本機的乙太網地址,則是測試本機的網路介面卡(就是網絡卡啦),一般是乙太網驅動程式。
ping這兩個地址時你會發現,但使用wireshark抓包時,是沒有ICMP的回顯請求發出的,這說明這兩個ping程式是不會發送到網路中的(只在區域網中)。

3,ping 同一網段中的網路地址,不通則說明網路線路出現了故障,如果網路中還存在路由器,則應該先ping路由器在本網路的地址,不通則是本機和路由器之間的線路有問題
通了,則再ping路由器所在目標計算機網路所在網段的埠IP地址,不通則說明了路由器出現了故障,通了就再ping目標主機的IP地址。

4,如果ping www.baidu.com等網路地址ping不通時,則說明本機的DNS伺服器設定錯誤。


二、

ping127.0.0.1和ping本機的過程是不一樣的
ip輸出函式先檢查地址是不是環回地址
1.如果是環回地址 直接交給環回驅動程式處理 返回ip輸入函式
2.如果不是環回地址   檢查是不是廣播或者多播地址
3.如果不是廣播或者多播地址   才檢查是不是本機地址   如果是本機地址 則交給環回驅動程式處理,環回驅動程式返回給ip輸入函式
從上面可以看出 ping127.0.0.1 資料包是不經過網絡卡的 ping本機則是需要經過網絡卡的

三、

ping127.0.0.1 這個資料包不會發送到網路上 用來檢查本機tcp/ip配置 可以這樣理解 這個資料包從cmd的shell發到了kernel的tcp/ip模組,然後從tcp/ip模組返回到cmd下,就看到ping成功了。也表示本機tcp/ip配置沒問題
ping 本機ip地址 這個資料包傳送到區域網上,所有機器都收到了這個資料包 也包括自己的機器 然後自己的機器迴應這個資料包 迴應了就看到cmd下ping成功了 這也表示這個ip地址是正確的 是被其他機器承認的ip

from:  http://hi.baidu.com/anqgqykqilbacnq/item/21a30bc3116c3bc6984aa09e