Ping程序的實現

Ping程序的實現

在windows系統下進行cmd能夠進行ping操做。html

ping命令是用來肯定本地主機與網絡中其餘主機的網絡通訊狀況,或者查看是不是爲效IPwindows

ping的工做原理:網絡另外一主機發送ICMP報文,經過返回信息判斷網絡鏈接情況。沒有經過運輸層的TCP或者UDP網絡

  

  能夠看到ping的返回信息中有一個值爲TTL(time to live)表示ping程序發送的ICMP數據包的生存週期,沒通過一個網段,TTL減1,當其值被減到0時,改數據包將被丟棄,該數據包的源地址被告知的狀況下,以從新發送數據包。不一樣的操做系統TTL值不一樣,Linux64,Windows??(不肯定)ui

ping的流程:編碼

  •  建立通訊套接字
  •  將地址、端口信息於套接字綁定
  •  構建IP包頭與ICMP包頭
  •  發送構建數據包
  •  接收對方主機迴應
  •  給出程序反饋信息

補充spa

ICMP協議:操作系統

  即網際控制報文協議,可在網絡中實現主機探測,路由維護、路由選擇和流量控制。.net

  因爲IP協議沒有機制來獲取網絡錯誤信息以及對錯誤進行處理,因此須要一個協議—ICMP協議來解決這個問題,ICMP是IP層的一部分,用於傳輸差錯報文及控制報文遇到錯誤時能把錯誤報告給源發送方,ICMP報文是封裝在IP數據報內部。unix

ICMP包頭格式:htm

ICMP報文分爲兩種,一是差錯報告報文,二是查詢報文。每一個ICMP報頭均包含類型(8B)、編碼(8B)、校驗(16B)三項內容。其他選項歲ICMP功能不一樣而不一樣。

    ping命令只適用衆多ICMP報文中的兩種:「回送請求(ICMP_ECHO)」和「回送回答報文(ICMP_ECHOREPLY)」,往返的ICMP報文中都有時間戳。

 

參考:http://blog.csdn.net/petershina/article/details/8571562

   http://blog.chinaunix.net/uid-20321537-id-1966835.html

相關文章
相關標籤/搜索