鏈路層解決區域網的通信問題。由於不同的區域網使用不同的技術,導致區域網之間不能互聯。於是需要網路層建立一層統一的抽象層,抹去底層差異。

假設用一台路由器連接兩個區域網,它們的鏈路層協議不同。那麼路由器需要同時支持這兩種鏈路層協議才可以。

問題來了,

1,以上理解有沒有錯誤?

2,如果沒錯,現實當中鏈路層的技術的多樣性怎樣?如果很多的話路由器豈不是要實現一堆?

3,路由器怎麼知道接入的區域網是用什麼技術的?


  1. 理解並沒有什麼錯誤,

2. 如果是家用的小型路由器,其實僅僅支持主流的鏈路層,比如標準的乙太網,WiFi,和光纖,其餘的一些鏈路層協議可以支持,比如openwrt這樣的路由,可以通過打補丁,增設硬體介面擴展支持。家用的小型路由系統是比較輕量級的。如果是商業路由的化,那麼確實是包含了很多鏈路層的協議,不過默認都是關閉的,也就是僅僅支持(太老的也不支持了),並不是被使用狀態的。

3. 要配置的呀,出現這樣場景基本都是線纜已經確定好了,存在異構型,然後做一些配置,比如說路由層面,或者建隧道(tunnel)做轉換之類的。當配置好之後,比如說通過路由方法的化,那麼在二層數據幀中會有一個Type欄位指示上層,二層(即數據鏈路層)採用的是什麼協議,路由器根據協議類型進行運作,這個Type欄位就叫做SAP(service access point),層與層之間的交互都是採用這個機制。

--------------------------------------------------------------------

從這個問題中感覺到,好像對於互聯網這樣的設計,感覺到很冗餘,設計有缺陷的感覺。這裡補充提到一些背景,可以去查查,可能會對網路如何是這樣設計,以及其理念有一些提高(或者說以後越學越多,可能理解會更深一些)

這樣設計的源頭還是在網路分層概念的時候,一開始阿帕網是沒有一個明確分層的,或者說分層概念也是伴隨著阿帕網起來的。這個時候,有一篇paper叫做《END-TO-END ARGUMENT IN SYSTEM DESIGN》,提出了End-To-End這種思考,這種思考對於當下網路架構的形成很有影響,包含了網路分層,協議間的兼容,以及安全部分。在這樣的場景下,RFC 3724實際上比較有代表性,其引導了網路中瘦腰的特性(即網路層只有IP,其餘上下層都往這一層匯總),以及這樣引導出了當下網路的架構。當時IP這種結合這種瘦腰的特性,把當時其他在網路層的協議都打敗了。當時這種瘦腰特性有很多的好處,當然,科技進步到了今日,瘦腰特性也有一些弊端限制了當下網路的發展,所以針對於這一點有很多改進,比如說NDN之類的網路。另外其實也可以讀讀RFC 1958,即然思考到題主這樣的問題,其實可以進一步思考下,網路分層的理念和網路協議設計的理念。


題主的理解犯了個小錯誤。從結果反推原因。

數據鏈路層和網路層,最初可並不是為了抹去差異而存在的。需知,最早的網路,局限於大學實驗室,它就是很小的,這個時候就已經有了諸多的數據鏈路層協議,它存在的意義是——控制物理鏈路上的數據傳輸。因為物理鏈路上傳輸的是電信號光信號,一旦鏈路質量不穩定,就會影響上層的數據傳輸。

以你熟悉的路由器為例,路由器上的乙太網介面的狀態有兩個——物理層狀態和鏈路層狀態,只有鏈路層協議通知路由器,"這條鏈路我試過了,可以用。"路由器才會激活這個介面,數據才能轉發。可以說,設計數據鏈路層,本質上是因為物理鏈路上的電信號,光信號不可控,因而需要一種方式確保數據在物理鏈路上正確傳輸,始終是工作在一條鏈路的兩端的。

至於會有這麼多不同的數據鏈路層標準和協議,也是因為這個東西也是在很長的時間裡慢慢發展的,有很多人和很多公司曾經參與其中,網路層並不是為了屏蔽差異而出現的,這只是一個無奈的結果而已。

數據鏈路層工作在一條鏈路兩端,交換機設備擴展了數據鏈路層的工作範圍,但仍然有力所不能及的地方,數據鏈路層的諸多協議,標準,還是太底層了,碰到範圍比較大的網路,或者多個網路互連,就不行了,比如,你根本不能想像兩台主機直接通過無限擴展的數據鏈路層網路,跨越國家,大洋去通信,數據鏈路層只能照顧到物理鏈路兩端,更遠距離更大範圍的網路,它無能為力。

網路層是為了更遠距離的傳輸而出現的,先行者門最終把網路層設計為一個無狀態的網路,在這之上疊加TCP/UDP來實現遠距離,大範圍的主機/應用之間的可靠或者快速通信

抹去底層差異,只是個結果,而不是出發點。

回到題主的問題上來——

第一個問題,上面回答了。

第二個問題,是的,沒辦法,實際上路由器就是支持很多很多的鏈路層協議。但實際上,隨著時間的推移,市場的力量會淘汰掉大部分技術,只留下幾個,比如乙太網。

第三個問題,任何鏈路在激活之前,鏈路層協議都會有控制信令交互,符合協議規定的交互過程結束之後,路由器自然就知道數據鏈路層是什麼

最後,區域網不等於數據鏈路層,區域網只是個網路範圍名詞。


你的理解沒有錯。

首先我們分析下物理層,數據鏈路層,網路層:

物理層發送電信號或者光信號;

數據鏈路層是幀封裝;

網路層是是包封裝;

1.在數據鏈路層,協商不同的協議,需要不同的方式。

因為這些幀頭都會有個協商溝通過程,告知對端我們是什麼樣的數據封裝方式調製解調。如雙方需要一致的速率,雙工模式,才能準確同步,之後才能成功交互信息。

幀中繼的幀:

PPP幀:

在互聯網起初,真的是一種協議一種卡。插的滿噹噹的,後面大家為了節能減排,統一江湖,就將這些協議整合起來了。如思科的E1介面卡,可以支持PPP,幀中繼,X.25等鏈路協議。一卡通用,只要打個命令可以告知路由器用什麼鏈路協議發送了。

2.如果沒錯,現實當中鏈路層的技術的多樣性怎樣?如果很多的話路由器豈不是要實現一堆?

鏈路層的多樣性還是很多的,但是在常見的路由器只管IP網路層是統一的,下面的鏈路層協議你想用哪個就哪個。

因為OSI模型裡面,數據不僅可以由下到上,也可以由上到下,比如不一定用IP方式來實現也是可以啊,只要大家遵守相應的規則協議,一樣可以向上向下傳輸數據,相當於再做一種新的OSI方案。只是這個坑要填很久。

3.路由器怎麼知道接入是什麼技術?

這個問題查看路由器的運行配置就知道。像這些指定數據鏈路層工作的路由器,是有相應的配置的命令的。畢竟這種東西不像MAC一樣可以自動協商。實在不行,可以查詢它的介面卡是什麼類型的就可知道。

題外話:現在的網路技術基本都是管控MAC二層和IP層,但是在工業的網路上,如can匯流排,通過IP去控制,就需要相應的協議轉換。這樣的協議就是IP包進來,然後將IP包payload取出來,然後將payload換成CAN數據幀,再通過物理層發送出去,這樣就完成單向的協議轉換。反之也是可以的。

##刪除了一些錯別字。


1,沒有錯誤

2,當今鏈路層有乙太網,有pon網,有sdh網等等

3,路由器根據自己的硬體板卡知道自己接入了哪種網路。網路層的數據包下發到相應板卡的相應介面上,鏈路層就將數據包封裝成自己的幀格式發送出去。


1 有錯誤,數據的流向是從下向上的,路由器屬於三層設備,最重要的是IP的特性,只要數據鏈路通了,才能使用,舉個例子,你用WIFI,網線,手機流量是不同的物理層,但是不影響數據鏈路和網路層

2、數據鏈路層主要有(1)Point-to-Point Protocal; PPP點到點、(2) Ethernet; 乙太網、(3) High-Level Data Link Control Protocal;HDLC高級鏈路控制協議 、(4) Frame Relay; 幀中繼、(5) Asynchronous Transfer Mode;ATM

3、路由器是網路層設備,他的功能就是根據路由錶轉發數據包,通常就是RIP OSPF.


1. 理解沒錯,或者說我也是這麼理解,哈哈

2. 鏈路層的多樣性還是存在的,舉個例子。公司里思科路由器2911和2811,機框是就兩三個網口,另外就是四個板塊介面。

我接的板卡,一個是八爪線(就是8根console線組成的板卡),一個是交換板塊(用來接ethernet),一個是e1板卡(接普通電話機),一個是t1板塊(也是接普通電話),e1/t1適用國家不一樣,不過都是接普通電話的,非ip電話。

3. 如果對voice稍微了解的話,就知道電話通信技術的幾個標準,pstn—isdn—voip,對應三個時代。

其中pstn、isdn物理上都是使用e1/t1口,但我可以通過命令改變它們鏈路層協議為pstn或者isdn。

另外路由器上那麼多板卡,怎麼知道使用哪種鏈路層協議?

比如交換板塊和e1板卡,路由器既然支持,通過板卡與路由器介面交換數據是可以識別的。

就像你的電腦usb口接的是硬碟,手機,還是其他啥。


你的理解本質有錯誤,模型只是供我們理解而不是規定。

路由器是三層設備,交換機是二層設備那麼它們怎麼能相提並論呢?

三層包括二層,所以就相當於路由器本來就有二層功能所以沒必要鑽牛角尖。


推薦閱讀:
相关文章