->>Ping命令簡介

ping 命令概述:

  ICMP協議是「Internet Control Message Ptotocol」(因特網控制消息協議)的縮寫。它是TCP/IP協議族的一個子協議,用於在IP主機、路由器之間傳遞控制消息。緩存

  Ping(Packet Internet Groper),因特網包探索器,用於驗證網絡鏈接(TCP/IP)的連通性。使用Ping命令向目標主機或IP地址發送ICMP迴應請求,驗證主機可否鏈接到TCP/IP網絡和網絡資源,也能夠用其隔離網絡硬件和不兼容配置。根據返回的信息,能夠推斷TCP/IP參數是否配置正確,以及運行是否正常、網絡是否通暢等。服務器

  其實,Ping就是一個測試程序,一般用Ping目標主機的IP地址或域名地址,看它是否響應,來判斷網絡的連通性。若是Ping運行正確,大致上就能夠排除網絡訪問層、網卡、MODEM的輸入輸出線路、電纜和路由器等存在的故障,從而縮小問題範圍。但因爲能夠自定義所發數據報的大小及無休止的高速發送,ping也被某些別有用心的做爲DDOS(拒絕服務攻擊)的工具;網絡

ping 命令原理:

  1. 源主機(輸ping命令的主機)向目標主機發送一個ICMP定長的echo數據包,若目標主機存活,會返回一樣大小ICMP協議的echo-reply數據包,若在特定時間內沒有返回,就是「超時」,會被認爲指定的網絡地址不存在。
  2. ICMP協議經過IP協議發送,IP協議是一種無鏈接的,不可靠的數據包協議。在Unix/Linux,序號從0開始計數,依次遞增。而Windows ping程序的ICMP序列號是沒有規律。
  3. ICMP協議在實際傳輸中數據包:20字節IP首部 + 8字節ICMP首部 + 1472字節<數據大小>38字節。
  4. ICMP報文格式:IP首部(20字節) + 8位類型 + 8位代碼 + 16校驗和 + (不一樣類型和代碼,格式也有所不一樣)。

ping 命令參數以及描述:

  命令格式以下:工具

  ping 目標主機地址(IP或者域名)[參數]測試

    • -t:不斷向指定的主機發送報文,直到終止反覆;
    • -a:解析主機名的ip地址;
    • -n:指定要發送的請求報文的數目;
    • -l:設置發送緩衝區的大小;
    • -f:在報文中設置不分段標誌(通常你所發送的數據包都會經過路由分段再發送給對方,加上此參數之後路由就不會再分段處理。);
    • -i:TTL設置報文在網絡中的生存時間(Time to Live);
    • -v:TOS服務類型(Type of Service);
    • -r:記錄指定個數的路由段的路由狀況;
    • -s:指定個數的路由時間戳;
    • -j:host-list由指定的路由發送報文,但不強求一致;
    • -k:host-list嚴格按指定路由發送報文;
    • destination-list:指定要Ping的目標主機名或IP地址

下圖顯示了一些有用的Ping命令選項spa

測試方式:code

出現提示消息以下:blog

  • Destination net unreachable(目標網絡不可到達):響應代表沒有到目標位置的路由。須要檢查在「Destination net unreachable(目標網絡不可到達)」消息的「Reply from(回答來自)」地址中列出的路由器的路由表。
  • Request timed out(請求超時):響應代表在默認的時間期間(1 秒鐘)內沒有對 ping 做出響應。對於「請求超時」能夠檢查如下緣由:
    • 目標主機關閉,或者網絡上根本沒有這個地址;物理驗證主機正在運行或經過其餘協議檢查連通性。
    • 路由器問題,對方與本身不在同一個網段內,經過路由沒法找到對方;要檢查在源和目標之間的路徑中的路由器,請使用 tracert 命令。
    • 對方確實存在,但設置了ICMP數據包過濾(好比防火牆設置)。
    • 響應的等待時間多於一秒。使用 ping 命令上的 -w 選項增長超時。例如,要容許在 5 秒鐘內響應,請使用 ping -w 5000
  • Bad IP address:沒有鏈接到DNS服務器,因此沒法解析這個IP地址,也多是IP地址不存在。
  • Source quench received:表示對方或中途的服務器繁忙沒法迴應。
  • Unknown host:遠程主機的名字不能被域名服務器(DNS)轉換成IP地址。故障緣由多是域名服務器有故障,或者其名字不正確,或者網絡管理員的系統與遠程主機之間的通訊線路有故障。
  • No answer:本地系統有一條通向中心主機的路由,但卻接收不到它發給該中心主機的任何信息。故障緣由多是下列之一:中心主機沒有工做;本地或中心主機網絡配置不正確;本地或中心的路由器沒有工做;通訊線路有故障;中心主機存在路由選擇問題。
  • no rout to host:網卡工做不正常。
  • transmit failed,error code:10043網卡驅動不正常。
  • unknown host name:DNS配置不正確。

ping 示例:

  示例:有A、B、C、D四臺機子(其中A、B的IP分別爲192.168.0.4-192.168.0.5,子網掩碼均爲255.255.255.0;C、D的IP分別爲192.168.1.3-192.168.1.4,子網掩碼均爲255.255.255.0),一臺路由RA鏈接以上兩個子網。進程

  1)、在同一網段ip

  在主機A上運行「Ping 192.168.0.5」後,都發生了些什麼呢? 首先,Ping命令會構建一個固定格式的ICMP請求數據包,而後由ICMP協議將這個數據包連同地址「192.168.0.5」一塊兒交給IP層協議(和 ICMP同樣,其實是一組後臺運行的進程),IP層協議將以地址「192.168.0.5」做爲目的地址,本機IP地址做爲源地址,加上一些其餘的控制信息,構建一個IP數據包,並想辦法獲得192.168.0.5的MAC地址(物理地址,這是數據鏈路層協議構建數據鏈路層的傳輸單元——幀所必需的),以便交給數據鏈路層構建一個數據幀。關鍵就在這裏,IP層協議經過對比機器B的IP地址、本身的IP地址和本身的子網掩碼,發現它跟本身屬同一網絡,就直接在本網絡內查找這臺機器的MAC。若是之前兩機有過通訊,在A機的ARP緩存表應該有B機IP與其MAC的映射關係;若是沒有,就發一個ARP請求廣播,獲得B機的MAC, 一併交給數據鏈路層。後者構建一個數據幀,目的地址是IP層傳過來的物理地址,源地址則是本機的物理地址,還要附加上一些控制信息,依據以太網的介質訪問規則,將它們傳送出去。
  主機B收到這個數據幀後,先檢查它的目的地址,並和本機的物理地址對比,如符合,則接收;不然丟棄。接收後檢查該數據幀,將IP數據包從幀中提取出來,交給本機的IP層協議。一樣,IP層檢查後,將有用的信息提取後交給ICMP協議,後者處理後,立刻構建一個ICMP應答包,發送給主機A,其過程和主機A發送ICMP請求包到主機B如出一轍。

  2)、在不一樣網段

  在主機A上運行「Ping 192.168.1.4」後,開始跟上面同樣,到了怎樣獲得MAC地址時,IP協議經過計算髮現D機與本身不在同一網段內,就直接將交由路由處理,也就是將路由的MAC取過來,至於怎樣獲得路由的MAC,跟上面同樣,先在ARP緩存表找,找不到就廣播吧。路由獲得這個數據幀後,再跟主機D進行聯繫,若是找不到,就向主機A返回一個超時的信息。

相關文章
相關標籤/搜索