1. 程式人生 > >計算機網路之我見-通俗理解計算機網路(七)

計算機網路之我見-通俗理解計算機網路(七)

本篇主要講解廣播、組播和IGMP協議(寫的比較倉促,質量不好~)

一、廣播

1 廣播的分類

廣播分為本地受限廣播和子網廣播

本地受限廣播的IP地址為255.255.255.255,只能在傳送主機所在的同一網段內進行傳播

子網廣播的IP地址為“網路號+主機號位數全為1”的地址,如C類地址192.168.0.255,會廣播給192.168.0.1到192.168.0.254的所有主機

2 廣播的原理

本質是通過鏈路層廣播地址來發送,鏈路層廣播地址為48位全為1的mac地址,交換機接收到廣播mac地址後會群發給同一網段的全部主機

本地受限廣播的簡要傳送過程:

1 主機某一上層程序構建目的地址為255.255.255.255的廣播地址的IP資料包,交給IP傳送佇列

2 IP層傳送該資料包的時候發現目的地址是本地受限廣播,則構建48位全為1的mac廣播地址,交給鏈路層從本機所有介面傳送出去

3 和本機所有介面連線的交換機收到該幀後,發現目的地址是廣播mac,則向網段內所有主機群發該幀

4 網段內的所有主機接收到廣播幀,交給其上層IP層進行處理

子網廣播發送過程:

1 主機某一上層程序構建目的地址為某子網的廣播地址的IP資料包,交給IP傳送佇列

2 IP層和本機網絡卡的介面的子網掩碼比較,判斷是不是發往本子網的,如果是則下面過程和本地受限廣播一致

3 如果不是發往本子網的,則將資料包交給閘道器路由器,閘道器路由器收到把子網廣播包IP和路由表項比較,判斷是不是屬於某一子網的,進行路由、、、資料包到達目的網路後在目的網路進行廣播

注意(不是所有的路由器都開啟並支援子網廣播轉發,因為廣播風暴問題)~

3 廣播的用途和弊端

用途:廣播通常用在UDP上,對不知道具體目的IP地址,但是提供了在指定埠號上監聽的服務的主機,我們可以傳送目的地址為廣播地址的UDP資料包來訪問服務,如路由交換協議RIP協議就是這樣工作的

弊端:由於廣播的mac層地址全為1,不管上層UDP層是否有相關程序在執行和接收資料包,主機鏈路層收到廣播包後必須都交給上層IP層進行分發,IP層再根據UDP等協議進行分發,此時收到廣播的主機才能發現是不是有相關的UDP socket在接收,如果沒有上層socket在監聽,就白白消耗了資源

二、組播

1 組播的產生

組播主要是解決上面所講的廣播浪費資源的問題而產生的,通過分析上面所講的廣播的弊端,發現浪費資源的癥結主要在mac層不能過濾相應的mac廣播地址(因為mac全是1),組播的解決方案是:

1 給組播組分配組播組號

2 主機要想接收指定組播組收到的組播,必須事先加入指定的組播組號

3 mac層組播地址也繫結組播組號,當收到繫結的組播組號的幀的時候網絡卡才接收,否則就不接受

這樣本質上就是在mac層進行了一次廣播過濾,解決了廣播的缺點~

2 組播組號和加入組播組的過程

組播地址是D類IP地址,由1110的最高4bit和剩餘的所有位組成組播組號。點分十進位制數,範圍從224.0.0.0到239.255.255.255。

加入組播組時,上層socket繫結指定的組播組號,同時核心會修改mac層資料,把組播組號IP地址的後23位繫結到48位mac地址的後23位(這樣就告訴了mac層網絡卡,過濾我指定的組播組號的幀,非我繫結的組號的幀不要接受)

3 組播發送過程

# 某一個主機的指定程序構建一個目的地址為指定組播地址的IP資料包,交給鏈路層

#  鏈路層發現IP地址是組播地址,則構建根據IP地址構建組播繫結的mac地址,然後傳送給交換機

# 交換機發現是組播幀,則網段內廣播

# 網內主機mac層過濾:加入該組播組的機器收下該幀並交給上層,沒有加入該組播組的機器丟棄該幀

這樣就完成了組播通訊的過程~

三、組播路由器和IGMP協議

1 概念

組播路由器是支援組播IP包傳播的路由器;

IGMP協議是組管理協議,主要用來組播路由器下面的主機加入和離開某一組播組時通告給路由器,讓路由器知道我下面的主機都加入了哪些組播組,當有目的地址是路由器負責的組播組的資料包時應不應該轉發

2 IGMP工作原理

# IGMP協議是IP層至上的協議,分為頭域和體域,頭域有相關欄位來區分是IGMP請求還是IGMP響應包

# IGMP體的內容就是一個主機加入的組播號IP地址

# 組播路由器啟動後會在所有介面組播IGMP請求包(目的地址也是組播地址224.0.0.1,這個地址是特殊的組播組地址,代表所支援組播的所有主機或路由,所有的支援組播的裝置都預設加入了改組),詢問下面的主機都加入了哪些組播組

# 路由器下面的主機接收到IGMP詢問組播包後,會給路由器傳送一個IGMP響應組播(也是一個組播,主播號是主機加入的組播地址,路由器預設接收目的地址是任意組播組地址的資料包),路由器收到響應後更新自己的路由表,表示自己應該負責轉發該組播組的組播包

3 組播路由器間如何工作

組播路由器間通過路由協議交換路由表,這樣就知道了全網的組播資訊~ 再詳細我也不懂了~