1 網際控制封包協定 ICMP
ICMP 最典型的用途是差錯報告。如果由于網絡狀況、鍊路不通等資料報無法到達目标主機,ICMP 就會傳回一個差錯封包,讓源主機知道資料沒能正常到達目标主機,接着進行重發或者放棄發送都可以。
ICMP 通常被認為是 IP 的一部分,但從體系結構上講它是位于 IP 之上的,因為 ICMP封包是承載在 IP 資料報中的。這就是說, ICMP 封包是作為 IP 資料報資料區域的(有一些書籍也稱之為有效載荷) ,就像 TCP 與 UDP 封包段作為 IP 資料報資料區域那樣。類似地,當一台主機收到一個指明上層協定為 ICMP 的 IP 資料報時,它将分解出該資料報的内容給ICMP,就像分解出一個資料報的内容給 TCP 或 UDP 一樣,但與 TCP 或 UDP 協定又有所不同, ICMP 出現的目的不是為上層應用程式提供服務,隻是在 IP 層傳遞差錯的封包,依賴于 IP 協定進行傳輸。
1.2 ICMP 封包結構

1.3 ICMP 封包類型
1.4 ICMP 查詢封包
ping 指令使用的就是 ICMP 查詢封包,若能 ping 成功,說明網卡、 IP 層、ICMP 層都能通信正常, 是以能證明 LwIP 已經移植成功了,我們一般在移植完成的時候都會測試一下 ping 指令,檢視一下是否移植成功。