ping是我們在linux中測試網路連線的常用指令。首先ping是應用程式,而不是協議,它利用icmp【internet control message protocol 網際網路控制報文協議】報文檢測網路連線。
首先假設a ping b
1.ping通知系統建立乙個固定格式的icmp請求資料報。
2.icmp協議打包這個資料報和b的ip位址轉交給ip協議層
3.ip層協議將機器b的ip位址為目的位址,本機的ip位址為源位址,加上一些頭部必要的控制資訊,構建乙個ip資料報
4.獲取b的mac位址,做這個操作首先機器a會判斷b是否在同一網段內,若ip層協議通過b的ip位址和自己的子網掩碼,發現它跟自己屬於同一網路,就直接在本網路查詢這台機器的mac,否則則通過路由器進行類似查詢。
接下來是arp協議根據ip位址查詢mac位址的過程:
若兩台機器之前有過通訊,在機器a的arp快取表裡應該存有b的ip與其mac位址的對映關係。
若沒有,則通過傳送arp請求廣播,得到回應的b機器mac位址,並交給資料鏈路層
6.機器b收到這個資料幀後,先檢查目的位址,和本機mac位址對比:
符合,接受。接收後檢查該資料幀。將ip資料報從幀中提取出來,交給本機的的ip位址協議層協議,ip協議層檢查之後,將有用的資訊提取給icmp協議,後者處理,馬上構建乙個icmp應答包,傳送給a,其過程和主機a傳送icmp請求包到b的過程類似,但不用arp廣播收取a的資訊,因為請求包中已經有足夠的資訊用於b回應a。
若不符合,丟棄。
可以知道ping的過程即一段傳送報文和接受確認報文的過程,在來回直接可以計算時延。其過程簡單,但其中還包括了一步arp協議請求,廣播請求,單播回應的過程。其他都是正常ip資料報的傳送和接受
**:
Ping的詳細過程
ping過程詳解 ping命令的主要作用的是檢查網路的連通情況和檢測網路的速度。相信大家都用過ping命令,下面主要介紹一下ping命令是怎樣乙個執行過程。主要的ping有兩種情況,一種是同一網段,一種是跨網段的。首先看乙個拓撲圖 首先,如果主機a要ping主機b,那麼主機a就要封裝二層報文,他會先...
ping的詳細過程學習筆記
pc1 ping pc2 也就是pc1 192.168.1.1 ping pc2 192.168.1.2 屬於同一網段的ping過程 步驟1 ping開始 即後台執行192.168.1.1 ping 192.168.1.2 解釋 ping過程是源主機icmp協議傳送乙個icmp協議報文給目的主機的i...
Ping命令的過程
同一網段 1.ping通知系統建立乙個固定格式的icmp請求資料報 2.icmp協議打包這個資料報和機器b的ip位址轉交給ip協議層 一組後台執行的程序,與icmp類似 3.ip層協議將以機器b的ip位址為目的位址,本機ip位址為源位址,加上一些其他的控制資訊,構建乙個 ip資料報獲取機器b的mac...