ICMP報文要使用IP頭來發送報文,為什麼ICMP依然與IP在同一層-網路層?

ICMP報文要使用IP頭來發送報文,為什麼ICMP依然與IP在同一層-網路層?


剛學網路的同學,特別喜歡將協議分類,分類的方法就是底層的封裝如果是鏈路層,那麼其上一層就是網路層;底層的封裝是網路層如IP,那麼被IP層封裝的就是傳輸層。一般的情況下,這是對的,但是有些情況是不對的。就好比一些共產國際派來的高級幹部,照搬馬克思列寧主義,容易犯教條主義錯誤。

對於協議的分層,還是要具體問題具體分析,靈活滴根據協議所實現的功能來分層。

ICMP,是IP層的附屬協議,所以屬於網路層協議,用於控制管理,當IP包在傳輸過程中發生了一些錯誤,需要給源主機發送一個出錯信息,這就是ICMP所完成的。

退一步講,ICMP屬於哪層,有那麼重要嗎?只要熟悉其實現的功能,熟悉Type 、Code各個欄位有什麼作用,Ping/Traceroute/MTR 如何利用ICMP,比純粹的邏輯上的分層更有意義!


嚴格來說,不存在一個「應用」單獨運行在哪一層。

ICMP是一個管理IP層運作的「應用層」協議,不能說ICMP是網路層協議。

同樣,以太OAM是承載在以太層傳輸的「應用層」協議,各種路由協議是承載在IP上(有UDP有TCP也有專用協議)的「應用層」協議,DHCP是承載在UDP上的「應用層」協議。

不如我們把他們乾脆叫做「某某層的應用」算了,不要叫協議。


這種問題就跟討論arp是在鏈路層還是在網路層一樣,沒什麼明確的意義,arp封裝在以太幀中,難道就一定屬於網路層?同樣的封裝在IP報頭內的都是傳輸層嗎


有的人把ARP協議放在數據鏈路層的,因為IP要使用ARP地址解析。我學那本教科書上ARP是在網路層的。
感覺這個說法不一,總之明確了誰要用到誰就行。


這個問題沒必要深究啊,例如bgp還是應用層協議呢,照樣在網路層搞事情


按照控制平面,數據平面,管理平面分類才是對的


推薦閱讀:

TCP連接建立後,下行和上行經過的路由器是一樣的嗎?
B類地址第一個可分派的網路號為什麼不是128.0?
ipv9是什麼,是騙局還是真的有其事?
TCP網路編程,從socket到消息包,發送接收都是bit,傳輸中兩端怎麼知道哪些bit組成一個協議?
HTTP協議里的請求頭有什麼用?

TAG:計算機科學 | TCPIP | ICMP |