當主機A上運行一個“ping 主機B的IP”時,PING命令會構建一個固定格式的ICMP請求報文,然後由ICMP協議把這個數據包和主機B的IP地址一同交給IP層協議,IP層協議把這個數據中的主機A的IP地址定義成源IP地址,把主機B有IP地址定義成目的IP地址,再加上一些其他的控制信息,構建成一個IP數據包,並想辦法得到主機B的MAC地址,(利用ARP請求)以便形成把這個IP數據包封裝成數據幀,當主機B收到這個數據幀時,會從幀中讀出其中的目的MAC地址,如果與自己相符則接收,不同則丟棄,接收到這個數據幀後,就讀出幀中的IP數據包,然後交給本地的IP層協議,同樣IP層協議提出其中 的有用的信息後交給ICMP協議,後者處理後就會回覆 一個ICMP協議給主機A,這時回覆後的過程與ICMP請求包的傳送過程一樣了。
當主機A與主機B不在同一網段下,開始時主機A上的動作和上面一樣,到了IP層協議時,IP協議會通過計算(相與)發現主機B與自己不在同一網段內,需要尋找三層設備(路由器),首先通過 ARP請求知道路由器的MAC地址,即形成一個數據幀後,這個數據幀會傳送到路由器上,路由器收到這個幀後就會讀出其中 的目的IP是主機B的,於是,再次利用 ARP查詢後得到主機B的MAC地址,然後形成一個以目的MAC爲主機B的數據幀後,交給主機B,主機B和上面過程一樣,會回覆一個ICMP迴應包,然後原路返回,過程,又和這次的傳輸一樣了。(再數據到達路由器時有可能會出現PING命令超時,於是,在PING的過程中,不可能一次性就通的,默認情況下,PING四次後,再去判斷是否能通才行)!