不知道題主怎麼會有這個錯誤的想法,不同層協議為什麼要相互通信?

網路中,只是同層協議間通信,不存在網路層和數據鏈路層相互通信的事,不存在雞同鴨講的事。

同一機器上,不同層協議通過軟體或硬體封包和解包,與協議無關,僅此而已。


現在的教科書都不提這事了么?以下內容來自維基百科:A layer serves the layer above it and is served by the layer below it. For example, a layer that provides error-free communications across a network provides the path needed by applications above it, while it calls the next lower layer to send and receive packets that comprise the contents of that path. Two instances at the same layer are visualized as connected by a horizontal connection in that layer.


同一個機器上,或者說同一個操作系統上,不同層之間,主要是數據拷貝和內存指針傳遞。不同層之間就像一個俄羅斯套娃,上一層處理好之後,直接打包給下一層接著去接著封裝,最後越封越大。解析也是一樣,數據鏈路層處理完之後,直接提示網路層,我這好了,這是你的數據起始指針,去努力吧,剩下的我不管了,這個過程沒有協議,否則N層網路模型怎麼解耦。


首先相鄰的兩個層不存在通信,只存在通過介面傳遞數據(是幀還是報文,就看你是接收方還是發送方)。

同一機器不同層的溝通,請了解一下protocol id, 以及TCP/UDP 埠號

諸位大神勿噴,誰都是從小白開始的。

補一句,而且你噴的都沒在點上。


綜合版5層,物理層,鏈路層,網路層,傳輸層,應用層,這樣好學點


同一個機器不同層消息傳遞一般就是內存拷貝/引用。

同一節點內相鄰層次間通過介面通信,介面是由協議定義的。


網路層和鏈路層通信不是協議問題,是解封裝幀頭改寫問題


1 如果是具體工程問題,數據鏈路之上自己加上網路層,傳輸層,然後使之與其他網路層應用通信

2 如果是理論問題,再看看《TCP/IP詳解》


推薦閱讀:
相关文章