ping是 基于 ICMP協定 工作的
ICMP協定
ICMP協定(Internet Control Message Protocol), 又稱網際網路控制封包協定
主要工作:
- 确認IP資料包是否成功發送到目的位址
- 報告發送過程 IP包被廢棄的原因
- 改善網絡設定(比如通過ICMP協定擷取MTU, 可以控制發送包的大小)
ICMP封包封裝在 IP包中, 工作在網絡層 , 是IP協定的助手
主機A192.168.1.1 ping -> 主機B 192.168.1.2
192.168.1.1:
- 主機A ICMP協定建構 ICMP回送請求消息資料包(類型:8, 序号:1, 發送時間)
- ICMP将資料包連同目的位址192.168.1.2, IP層 加上 IP頭(源IP位址, 目的ip位址, 協定 1 表示ICMP協定)
- 加上MAC頭(從本機ARP映射表中找尋 目的IP位址的MAC位址,如果找不到,發送ARP協定,找到 目的MAC位址後,資料鍊路層建構資料幀, 源MAC位址 即本機MAC位址)
192.168.1.2:
- 主機B接收 資料幀後, 首先 檢查該封包的目的MAC位址 是否與 本機MAC位址相同, 相同則接受,不同則丢棄
- 從資料幀中提取IP資料包,交給本機IP層,IP層 檢查後将有用資訊交給ICMP協定, 由ICMP協定 建構 ICMP回送響應消息資料包
192.168.1.1:
- 主機A在規定時間内沒有接收到 ICMP的應答包,說明目标主機不可達
- 由目前時間 -最初源主機 發送時間 = ICMP請求延遲時間
總結自小林coding的計算機網絡