如何更好地理解廣播路由與鏈路層的廣播之間的區別?


1 本地鏈路上的廣播

1.1 Local limited broadcast

這個大家都很熟悉,比如DHCP discovery 就是,因為不知道DHCP server 在哪裡,所以IP層 destination IP = 255.255.255.255,主機因為還沒有IP地址,不知道自己屬於哪個網段,那ethernet 層 的 destination MAC 自然就是 FF.FF.FF.FF.FF.FF,之所以需要IP層地址,那是因為 DHCP 工作在 UDP Port 67/68,local link DHCP server 會接收到,但是這種廣播路由器不會forwarding,如果local link 上沒有DHCP server,只會 用 unicast 格式relay 到 中心、或遠程DHCP server 。

ARP報文大家也很熟悉,工作在鏈路層,所以只有 MAC地址:FF.FF.FF.FF.FF.FF,local link 上的 host 都能接收到,沒有IP層,路由器直接就 terminated ARP。

1.2 Local directed broadcast

比如一個網段是 10.1.1.0/24,那這個網段的 directed broadcast 就是 10.1.1.255,沒有獲得IP的主機採用 255.255.255.255 做廣播地址;一旦獲得IP,就採用 10.1.1.255做廣播地址,屬於這個網段的 host 會接收到這個廣播消息,到了路由器,路由器知道這是本地的 broadcast,發給上層處理,如果上層不感興趣,那就丟了。

2 非本地廣播(Non-Local directed broadcast )

比如 remote site 有一個網段 20.1.1.0/24,它的廣播地址為 20.1.1.255,如果我在 local site 的 host 上 :

Ping 20.1.1.255

本地的路由器如何處理呢?當然當作一個 Unicast packet 來正常路由,到達remote site router,由 它來抉擇,它知道這是一個廣播地址,如何處理?路由器介面如果配置:

A) no ip directed broadcast

丟棄

B)ip directed broadcast

轉發到 20.1.1.0 /24 網段


鏈路層原理上說因該是屬於只要有MAC地址連接的都能收到FFFFFFFF的廣播,這是在二層設備內,路由器是三層設備,肯定有二層設備的基礎如果一台電腦連接一個路由器,然後此路由器又連接另外2個路由器,那麼按造二層設備轉發所有FFFFFFFF的廣播,路由器是三層設備有二層基礎,它收到FFFFFFFF這類廣播,應該會轉發到該路由其他所有的埠的。不知道這個理解是否正確,路由器實際上是在交換機的二層功能上加上了三層的定址功能,我是這樣認為的,就是說路由並不能隔離FFFFFFFF廣播但是隔離了不同網段的IP廣播,這是基於路由器有定址功能的原因,二層解幀後發現IP,如果是同網段ip問題應該不會再往下面傳下去才對,實際上路由器收到這個廣播幀後,查看了IP地址不會讓幀越過該IP地址介面以外進行鏈路層廣播。也就是說理論上交換機不具備定址功能,所有它不會管幀裡面IP地址是不是一個網段,只要是跟它連接的埠它全部轉發。路由器通過解封裝幀後,發現IP地址在不在同一網段而決定是否轉發,就是說路由器並不能隔絕廣義上的二層廣播,但是可以隔絕帶有同一IP地址段的網路廣播,它不進行二層封裝就能使數據無法轉發


推薦閱讀:

怎麼樣判斷光貓的埠是千兆的還是百兆的?
路由器同時開2.4g和5g輻射會不會很大?具體能大多少?另外家裡有小孩的話整夜不關路由器有危害嗎?
登錄無線路由器管理界面的密碼忘記了,不按reset鍵可以取回密碼嗎?
比較大的屋子使用中繼路由器好還是電力貓好?
路由器的最大並發連接數和每秒新建連接數這兩個性能指標有什麼意義?

TAG:路由器 | 計算機網路 | 網路協議 |