在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ping是什么?ping背后的邏輯是什么樣的?是如何實現的?

Linux愛好者 ? 來源:未知 ? 作者:易水寒 ? 2018-10-03 12:25 ? 次閱讀

我們在遇到網絡不通的情況,大家都知道去 ping 一下,看一下網絡狀況。

那你知道「ping」命令后背的邏輯是什么嗎?知道它是如何實現的嗎?

一、「ping」命令的作用和原理?

簡單來說,「ping」是用來探測本機與網絡中另一主機之間是否可達的命令,如果兩臺主機之間ping不通,則表明這兩臺主機不能建立起連接。ping是定位網絡通不通的一個重要手段。

ping 命令是基于 ICMP 協議來工作的,「 ICMP 」全稱為 Internet 控制報文協議( Internet Control Message Protocol)。ping 命令會發送一份ICMP回顯請求報文給目標主機,并等待目標主機返回ICMP回顯應答。因為ICMP協議會要求目標主機在收到消息之后,必須返回ICMP應答消息給源主機,如果源主機在一定時間內收到了目標主機的應答,則表明兩臺主機之間網絡是可達的。

舉一個例子來描述「ping」命令的工作過程:

假設有兩個主機,主機A(192.168.0.1)和主機B(192.168.0.2),現在我們要監測主機A和主機B之間網絡是否可達,那么我們在主機A上輸入命令:ping 192.168.0.2

此時,ping命令會在主機A上構建一個 ICMP的請求數據包(數據包里的內容后面再詳述),然后 ICMP協議會將這個數據包以及目標IP(192.168.0.2)等信息一同交給IP層協議。

IP層協議得到這些信息后,將源地址(即本機IP)、目標地址(即目標IP:192.168.0.2)、再加上一些其它的控制信息,構建成一個IP數據包。

IP數據包構建完成后,還不夠,還需要加上MAC地址,因此,還需要通過ARP映射表找出目標IP所對應的MAC地址。當拿到了目標主機的MAC地址和本機MAC后,一并交給數據鏈路層,組裝成一個數據幀,依據以太網的介質訪問規則,將它們傳送出出去。

當主機B收到這個數據幀之后,會首先檢查它的目標MAC地址是不是本機,如果是就接收下來處理,接收之后會檢查這個數據幀,將數據幀中的IP數據包取出來,交給本機的IP層協議,然后IP層協議檢查完之后,再將ICMP數據包取出來交給ICMP協議處理,當這一步也處理完成之后,就會構建一個ICMP應答數據包,回發給主機A

在一定的時間內,如果主機A收到了應答包,則說明它與主機B之間網絡可達,如果沒有收到,則說明網絡不可達。除了監測是否可達以外,還可以利用應答時間和發起時間之間的差值,計算出數據包的延遲耗時。

通過ping的流程可以發現,ICMP協議是這個過程的基礎,是非常重要的,因此下面就把ICMP協議再詳細解釋一下。

二、什么是「 ICMP 」?

我們知道,ping命令是基于ICMP協議來實現的。那么我們再來看下圖,就明白了ICMP協議又是通過IP協議來發送的,即ICMP報文是封裝在IP包中。

IP協議是一種無連接的,不可靠的數據包協議,它并不能保證數據一定被送達,那么我們要保證數據送到就需要通過其它模塊來協助實現,這里就引入的是ICMP協議。

當傳送的IP數據包發送異常的時候,ICMP就會將異常信息封裝在包內,然后回傳給源主機。

將上圖再細拆一下可見:

繼續將ICMP協議模塊細拆:

由圖可知,ICMP數據包由8bit的類型字段和8bit的代碼字段以及16bit的校驗字段再加上選項數據組成。

ICMP協議大致可分為兩類:

查詢報文類型

差錯報文類型

查詢報文類型:

查詢報文主要應用于:ping查詢、子網掩碼查詢、時間戳查詢等等。

上面講到的ping命令的流程其實就對應ICMP協議查詢報文類型的一種使用。在主機A構建ICMP請求數據包的時候,其ICMP的類型字段中使用的是 8 (回送請求),當主機B構建ICMP應答包的時候,其ICMP類型字段就使用的是 0 (回送應答),更多類型值參考上表。

對 查詢報文類型 的理解可參考一下文章最開始講的ping流程,這里就不做贅述。

差錯報文類型:

差錯報文主要產生于當數據傳送發送錯誤的時候。

它包括:目標不可達(網絡不可達、主機不可達、協議不可達、端口不可達、禁止分片等)、超時、參數問題、重定向(網絡重定向、主機重定向等)等等。

差錯報文通常包含了引起錯誤的IP數據包的第一個分片的IP首部,加上該分片數據部分的前8個字節。

當傳送IP數據包發生錯誤的時候(例如 主機不可達),ICMP協議就會把錯誤信息封包,然后傳送回源主機,那么源主機就知道該怎么處理了。

那是不是只有遇到錯誤的時候才能使用 差錯報文類型 呢?也不一定。

Traceroute 就是一個例外,Traceroute是用來偵測源主機到目標主機之間所經過路由情況的常用工具。Traceroute 的原理就是利用ICMP的規則,制造一些錯誤的事件出來,然后根據錯誤的事件來評估網絡路由情況。

具體做法就是:

Traceroute會設置特殊的TTL值,來追蹤源主機和目標主機之間的路由數。首先它給目標主機發送一個 TTL=1 的UDP數據包,那么這個數據包一旦在路上遇到一個路由器,TTL就變成了0(TTL規則是每經過一個路由器都會減1),因為TTL=0了,所以路由器就會把這個數據包丟掉,然后產生一個錯誤類型(超時)的ICMP數據包回發給源主機,也就是差錯包。這個時候源主機就拿到了第一個路由節點的IP和相關信息了。

接著,源主機再給目標主機發一個 TTL=2 的UDP數據包,依舊上述流程走一遍,就知道第二個路由節點的IP和耗時情況等信息了。

如此反復進行,Traceroute就可以拿到從主機A到主機B之間所有路由器的信息了。

但是有個問題是,如果數據包到達了目標主機的話,即使目標主機接收到TTL值為1的IP數據包,它也是不會丟棄該數據包的,也不會產生一份超時的ICMP回發數據包的,因為數據包已經達到了目的地嘛。那我們應該怎么認定數據包是否達到了目標主機呢?

Traceroute的方法是在源主機發送UDP數據包給目標主機的時候,會設置一個不可能達到的目標端口號(例如大于30000的端口號),那么當這個數據包真的到達目標主機的時候,目標主機發現沒有對應的端口號,因此會產生一份“端口不可達”的錯誤ICMP報文返回給源主機。

可見Traceroute的原理確實很取巧,很有趣。

以上,就是對ping的基本原理以及ICMP協議的基本講解了,歡迎大家一起交流。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 以太網
    +關注

    關注

    40

    文章

    5426

    瀏覽量

    171733
  • ICMP
    +關注

    關注

    0

    文章

    52

    瀏覽量

    14931
  • Ping
    +關注

    關注

    0

    文章

    69

    瀏覽量

    15982

原文標題:當你「ping 一下」的時候,你知道它背后的邏輯嗎?

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    三種不同的“防 Ping”技巧

    三種不同的“防 Ping”技巧 淺析三種不同的“防 Ping”方法   眾所周知,Ping命令是一個非常有用的網絡命令,大家常用它
    發表于 04-14 13:53 ?1127次閱讀

    Ping程序的C語言編程

      大部分人用ping命令只是作為查看另一個系統的網絡連接是否正常的一種簡單方法。在這篇文章中,作者將介紹如何用C語言編寫一個模擬ping命令功能的程序。   ping
    發表于 08-18 15:36 ?1133次閱讀

    如何實現Ping操作_Delphi教程

    Delphi教程如何實現Ping操作,很好的Delphi學習資料。
    發表于 03-16 14:59 ?5次下載

    ping命令的使用方法及功能

    ping是Windows、Unix和Linux系統下的一個命令。ping也屬于一個通信協議,是TCP/IP協議的一部分。利用“ping”命令可以檢查網絡是否連通,可以很好地幫助我們分析和判定網絡故障。應用格式:
    發表于 11-23 15:22 ?7.2w次閱讀
    <b class='flag-5'>ping</b>命令的使用方法及功能

    ping命令的使用大全(Windows下ping命令的使用)

    ping命令相信大家已經再熟悉不過了,但是能把ping的功能發揮到最大的人卻并不是很多,下面就給大家講一些ping命令的運用。
    的頭像 發表于 02-24 10:29 ?1.4w次閱讀

    ping命令入門詳解

    Ping是潛水艇人員的專用術語,表示回應的聲納脈沖,在網絡中Ping 是一個十分好用的TCP/IP工具。它主要的功能是用來檢測網絡的連通情況和分析網絡速度。 Ping有好的善的一面也有惡的一面。先說
    發表于 10-06 14:09 ?3398次閱讀

    ping原理及應用介紹

    Ping程序的實質是利用了ICMP請求回顯和回顯應答報文,但ARP請求和應答報文也在其中起了非常重要的作用。 Ping邏輯過程以從PC1 ping PC2(命令:
    發表于 10-06 14:25 ?8323次閱讀

    ping值和網速有關系嗎?ping值多少算正常

    PING值--代表你的電腦跟服務器的連接速度,即:客戶端數據傳送至服務器后再將命令反饋到客戶端所需的時長,單位為毫秒(ms),PING值越小速度越快。 主要還要看是用“光纖寬帶”還是“普通寬帶
    發表于 10-06 15:27 ?11.9w次閱讀

    說說PING命令涉及端到端的理論

    任何靠 IT 行業討飯吃的人,無論在哪個范疇工作,都一定懂得 Ping 這個指令。差不多任何作業系統都具備 Ping 這命令,用來做簡單的 Troubleshooting。但究竟 Ping
    的頭像 發表于 01-01 17:26 ?3169次閱讀

    ping命令的作用和原理是什么?

    在測試和部署網絡通信應用時,我們經常會遇到網絡不通的問題。一般都會想到ping一下。那么ping命令的作用和原理到底是什么呢? ping 命令是基于 ICMP 協議來工作的,要明白ping
    的頭像 發表于 03-18 17:21 ?9638次閱讀

    嵌入式linux實現ping域名

    1.前言? ? 編寫這篇文章主要目的如何實現ping外網域名,前提情況是可以ping外網IP(這里不詳細說明網絡IP等的配置)2.問題重現? ? 首先使用電腦ping www.baid
    發表于 11-01 17:38 ?11次下載
    嵌入式linux<b class='flag-5'>實現</b><b class='flag-5'>ping</b>域名

    ping和tcp協議走的網絡路徑是一的嗎

    一般對于狀況良好的網絡來說,你能看到它對應的loss丟包率為0%,也就是所謂的能ping通。如果看到丟包率100%,也就是ping不通。
    的頭像 發表于 09-02 09:34 ?1192次閱讀

    ping和tcp協議走的網絡路徑是一的嗎?

    一般對于狀況良好的網絡來說,你能看到它對應的loss丟包率為0%,也就是所謂的能ping通。如果看到丟包率100%,也就是ping不通。
    的頭像 發表于 11-03 09:06 ?1162次閱讀

    PING命令還能這么用?

    今天和你聊聊PING命令。 一般來說,網工們通常會用它來直接ping ip地址,來測試網絡的連通情況。 類似這種,ping ip地址或網關,然后ping通后會顯示出以上數據。 再通過
    的頭像 發表于 05-18 16:43 ?1132次閱讀
    <b class='flag-5'>PING</b>命令還能這么用?

    你知道ping命令是如何工作的嗎?

    我們用來測試一臺機器與另一臺機器的網絡連通性一般會使用ping命令,那么你知道ping命令是如何工作的嗎?ping命令是基于ICMP協議工作的。
    的頭像 發表于 05-31 11:40 ?1082次閱讀
    你知道<b class='flag-5'>ping</b>命令是如何工作的嗎?
    主站蜘蛛池模板: 亚州1区2区3区4区产品乱码2021| 天堂资源在线中文| 日本大黄视频| 中国理论片| 啪啪免费网站视频观看| 亚洲一级毛片免观看| 久久伊人网站| 欧美一级免费看| 国产在线99| 看全色黄大色大片免费久久怂| 偷偷操不一样的久久| 国产黄色片网站| 色播久久| 午夜在线免费观看| 亚洲欧美视频在线播放| 拍拍拍交性免费视频| 天天干干| 扒开双腿猛进入jk校视频| 欧美色香蕉| 日韩一级黄| 一级片成人| 成年免费大片黄在线观看免费| 日本人69xxx| 日韩一区二区视频在线观看| 亚洲操| 一区二区三区高清视频在线观看| 国产美女久久久久| 亚洲一级毛片免费在线观看| 国产精品二区三区免费播放心| 手机看片神马午夜片| 色中文字幕| 色天天天天| 亚洲婷婷综合网| 永久免费在线播放| 色女人综合| 国产性片在线| 黄色在线播放视频| 女人张开腿等男人桶免费视频| 精品乱人伦一区二区三区| 亚洲video| 天天夜约|