關於鏈路層協議主機是如何分辨的?
對於tcp和udp這樣的傳輸層協議來說,在ip包中有專門的標誌顯示上層協議是什麼,對於ip層協議,MAC幀中有上層協議標示,那麼對於鏈路層協議是怎麼判斷的呢?比如區別ppp協議和EthernetV2協議。
這個問題可以表達為:一個物理介面如何區分接收到的幀是PPP幀、還是以太幀?這樣就不會引起歧義了,但這個問題是不存在的,就好比三國的呂布與水滸傳的魯智深對打,誰牛逼一點?因為兩人不會出現在同一個時空維度。
PPP幀、以太幀是不可能同時出現在一個物理鏈路上的。
以太幀只會出現在網線上,網卡只會接收以太幀,可能幀格式有區別,有Ethernet II、SNAP、SAP,但網卡根據協議欄位長度、ID有能力區分它們。
PPP幀只會出現串列鏈路上,一端發,另一端接收,因為是點對點,無需鏈路層地址,對端接收到默認就是PPP幀,這最自然不過,如果格式不對,丟棄處理。
但是,我們可以使用隧道技術PPPoE ( PPP over Ethernet),在網線上傳輸PPP協議,但不要忘記,需要使用Ethernet頭部封裝PPPoE,然後PPPoE 再封裝PPP協議,表示為:
Ethernet + PPPoE + PPP
看,PPP協議是不能直接跑在網線上的,需要外層封裝。鏈路層協議大部分會在網卡驅動里,一塊網卡驅動對應一種鏈路層協議。
比如用乙太網卡的話,鏈路層協議就是802.3。用WiFi網卡的話,鏈路層協議就是802.11。寬頻連接有時候用的是pppoe,這時候windows下又會載入相應的驅動。
乙太網,802.3的幀格式裡面有2位元組的以太類型來保存上層協議類型。802.11的幀格式里好像沒有相應的欄位。

https://zh.wikipedia.org/wiki/%E4%BB%A5%E5%A4%AA%E7%BD%91%E5%B8%A7%E6%A0%BC%E5%BC%8F

http://www.studioreti.it/slide/802-11-Frame_E_C.pdf
乙太網卡的話,只會收發乙太網幀
pppoe可以把ppp幀封裝在乙太網幀內,最後傳輸的還是乙太網幀。
查看網卡的屬性 裡面都是驅動
MAC幀不就是鏈路層協議嗎?當然有上層協議號了。
推薦閱讀:
TAG:計算機 | 計算機網路 | 計算機科學 | 乙太網Ethernet | 網路協議 |
