
一、UDP廣播
廣播UDP與單播UDP的區別就是IP地址不同,廣播使用廣播地址255.255.255.255,將消息發送到在同一廣播網絡上的每個主機。值得強調的是:本地廣播信息是不會被路由器轉發。當然這是十分容易理解的,因為如果路由器轉發了廣播信息,那么勢必會引起網絡癱瘓。這也是為什么IP協議的設計者故意沒有定義互聯網范圍的廣播機制。
廣播地址通常用於在網絡游戲中處於同一本地網絡的玩家之間交流狀態信息等。
其實廣播顧名思義,就是想局域網內所有的人說話,但是廣播還是要指明接收者的端口號的,因為不可能接受者的所有端口都來收聽廣播。
二、UDP多播
1、多播(組播)的概念
多播,也稱為“組播”,將網絡中同一業務類型主機進行了邏輯上的分組,進行數據收發的時候其數據僅僅在同一分組中進行,其他的主機沒有加入此分組不能收發對應的數據。
在廣域網上廣播的時候,其中的交換機和路由器只向需要獲取數據的主機復制並轉發數據。主機可以向路由器請求加入或退出某個組,網絡中的路由器和交換機有選擇地復制並傳輸數據,將數據僅僅傳輸給組內的主機。多播的這種功能,可以一次將數據發送到多個主機,又能保證不影響其他不需要(未加入組)的主機的其他通 信。
相對於傳統的一對一的單播,多播具有如下的優點:
1、具有同種業務的主機加入同一數據流,共享同一通道,節省了帶寬和服務器的優點,具有廣播的優點而又沒有廣播所需要的帶寬。
2、服務器的總帶寬不受客戶端帶寬的限制。由於組播協議由接收者的需求來確定是否進行數據流的轉發,所以服務器端的帶寬是常量,與客戶端的數量無關。
3、與單播一樣,多播是允許在廣域網即Internet上進行傳輸的,而廣播僅僅在同一局域網上才能進行。
組播的缺點:
1、多播與單播相比沒有糾錯機制,當發生錯誤的時候難以彌補,但是可以在應用層來實現此種功能。
2、多播的網絡支持存在缺陷,需要路由器及網絡協議棧的支持。
3、多播的應用主要有網上視頻、網上會議等。
2、廣域網的多播
多播的地址是特定的,D類地址用於多播。D類IP地址就是多播IP地址,即224.0.0.0至239.255.255.255之間的IP地址,並被划分為局部連接多播地址、預留多播地址和管理權限多播地址3類:
1、局部多播地址:在224.0.0.0~224.0.0.255之間,這是為路由協議和其他用途保留的地址,路由器並不轉發屬於此范圍的IP包。
2、預留多播地址:在224.0.1.0~238.255.255.255之間,可用於全球范圍(如Internet)或網絡協議。
3、管理權限多播地址:在239.0.0.0~239.255.255.255之間,可供組織內部使用,類似於私有IP地址,不能用於Internet,可限制多播范圍。
多播的程序設計使用setsockopt()函數和getsockopt()函數來實現,組播的選項是IP層的,其選項值和含義參見11.5所示。
表11.5 多播相關的選項
| getsockopt()/setsockopt()的選項 |
含 義 |
| IP_MULTICAST_TTL |
設置多播組數據的TTL值 |
| IP_ADD_MEMBERSHIP |
在指定接口上加入組播組 |
| IP_DROP_MEMBERSHIP |
退出組播組 |
| IP_MULTICAST_IF |
獲取默認接口或設置接口 |
| IP_MULTICAST_LOOP |
禁止組播數據回送 |
3、多播程序設計的框架
要進行多播的編程,需要遵從一定的編程框架。多播程序框架主要包含套接字初始化、設置多播超時時間、加入多播組、發送數據、接收數據以及從多播組中離開幾個方面。其步驟如下:
(1)建立一個socket。
(2)然后設置多播的參數,例如超時時間TTL、本地回環許可LOOP等。
(3)加入多播組。
(4)發送和接收數據。
(5)從多播組離開。
三、UDP廣播與單播
廣播與單播的比較
廣播和單播的處理過程是不同的,單播的數據只是收發數據的特定主機進行處理,而廣播的數據整個局域網都進行處理。
例如在一個以太網上有3個主機,主機的配置如表11.4所示。
表11.4 某局域網中主機的配置情況
| 主 機 |
A |
B |
C |
| IP地址 |
192.168.1.150 |
192.168.1.151 |
192.168.1.158 |
| MAC地址 |
00:00:00:00:00:01 |
00:00:00:00:00:02 |
00:00:00:00:00:03 |
單播流程:主機A向主機B發送UDP數據報,發送的目的IP為192.168.1.151,端口為 80,目的MAC地址為00:00:00:00:00:02。此數據經過UDP層、IP層,到達數據鏈路層,數據在整個以太網上傳播,在此層中其他主機會 判斷目的MAC地址。主機C的MAC地址為00:00:00:00:00:03,與目的MAC地址00:00:00:00:00:02不匹配,數據鏈路層 不會進行處理,直接丟棄此數據。
主機B的MAC地址為00:00:00:00:00:02,與目的MAC地址00:00:00:00:00:02一致,此數據會經過IP層、UDP層,到達接收數據的應用程序。
廣播的流程:主機A向整個網絡發送廣播數據,發送的目的IP為192.168.1.255,端口為 80,目的MAC地址為FF:FF:FF:FF:FF:FF。此數據經過UDP層、IP層,到達數據鏈路層,數據在整個以太網上傳播,在此層中其他主機會 判斷目的MAC地址。由於目的MAC地址為FF:FF:FF:FF:FF:FF,主機C和主機B會忽略MAC地址的比較(當然,如果協議棧不支持廣播,則 仍然比較MAC地址),處理接收到的數據。
主機B和主機C的處理過程一致,此數據會經過IP層、UDP層,到達接收數據的應用程序。
