udp 廣播與組播

2021-06-20 18:55:58 字數 1909 閱讀 1693

udp組播是採用的無連線,資料報的連線方式,所以是不可靠的.也就是資料能不能到達接受端和資料到達的順序都是不能保證的.但是由於udp不用保證資料的可靠性,所有資料的傳送速度是很快的.

1. 組播的「根」

組播從概念上來講分為兩部分:控制部分和資料部分。控制部分決定著組播的物件的組織方式。而資料部分決定了資料的傳輸方式。

控制層有「有根」,「無根」兩種情況。對於有根的控制層,存在著乙個root和若干個leaf. root負責管理這個組播組,只有他能邀請乙個leaf加入乙個組播組(atm就是有根控制的乙個典型的例子)。對於無根的控制層,沒有root,只有若干的leaf. 每乙個leaf都能自己加入乙個組播組(ip就是無根控制的典型例子)

資料層也有「有根」,「無根」兩種情況。對於有根資料層,從root發出的資料能到達每乙個leaf,而從leaf發出的資料只能到達root.對於無根資料層,每乙個leaf發出的資料能到達組播組中的每乙個leaf(甚至包括他自己)。每乙個leaf也能接受組播組裡的任何資料報。

二.ip組播位址

ip組播通訊需要乙個特殊的組播位址.ip組播位址是一組d類ip位址,範圍從224.0.0.0 到 239.255.255.255。其中還有很多位址是為特殊的目的保留的。224.0.0.0到224.0.0.255的位址最好不要用,因為他們大多是為了特殊的目的保持的(比如igmp協議)

三.igmp協議

igmp(internet閘道器管理協議)是ip組播的基礎.在ip協議出現以後,為了加入對組播的支援,igmp產生了。igmp所做的實際上就是告訴路由器,在這個路由器所在的子網內有人對傳送到某乙個組播組的資料感興趣,這樣當這個組播組的資料到達後面,路由器就不會拋棄它,而是把他轉送給所有感興趣的客戶。假如不同子網內的a,b要進行組播通訊,那麼,位與a,b之間的所有路由器必須都要支援igmp協議,否則a,b之間不能進行通訊。

當乙個應用加入乙個組播組後,就會向這個子網的所有路由器傳送乙個igmp加入命令,告訴他子網內有人對傳送到某乙個組播組的資料感興趣.路由器也會定時向子網內的所有終端傳送一條查詢訊息,用於詢問是否還有人對某個組播組的資料感興趣。如果有的話,終端就會回應一條igmp訊息,路由器則繼續**這個組播組的資料。如果沒有人回應這條訊息,那麼路由器就認為已經沒有終端對這個組播組的資料感興趣,就不會在**關於這個組播組的資料了。在igmp第二版中,乙個終端推出組播組以後,會向路由器傳送乙個推出訊息,路由器也會通過這個訊息來判斷是否還要繼續**關於這個組播組的資料了(igmp第一版中沒有這個功能)[這些事情都是底層的系統做的,你只要坐享其成就好了]

四. winsock 1組播

winsock 1的組播主要有以下幾個步驟:

1. 建立支援資料報的scoket

2. 把socket和本地的乙個埠繫結(以後會通過這個埠進行資料的收發)

3. 通過setsockopt  ip_add_membership加入乙個組播組

4. 然後就能通過sendto / recvfrom進行資料的收法

5. 通過 setsockopt ip_drop_membership離開乙個組播組

6. 關閉socket

如果你僅僅是想向乙個組播組傳送資料,而不要接受資料,那麼可不用加入組播組,而直接通過sendto向組播組傳送資料

五.winsock 2組播

winsock 2組播主要是通過wsajoinleaf來實現的(wsajoinleaf的行為,返回值根據socket的模式,組播的實現構架有很大的關係)

winsock 2組播的主要有以下幾個步驟

1. 建立支援資料報的socket(用wsasocket建立socket,同2. 時設定組播的一些屬性)

3. 把socket和本地的乙個埠繫結(以後會通過這個埠進行資料的收發)

4. 通過wsajoinleaf加入乙個組播組

5. 通過sendto / recvfrom進行資料的收發

6. 直接關閉socket,

7. 退出組播組

UDP通訊的點播 組播與廣播

一 點播客戶端 傳送方 標頭檔案 ifndef mainwindow h define mainwindow h include include namespace ui class mainwindow public qmainwindow endif mainwindow h點播客戶端 傳送方 ...

UDP的組播與多播

在前面已經記錄過udp的單播模式,即客戶端只能與服務端單獨對接。接下來介紹udp的另外兩種通訊方式 udpsocket newqudpsocket this udpsocket bind qhostaddress 192.168.1.100 45454 qbytearray datagram mul...

組播和廣播

組播 組 播 multicast 是一種允許乙個或多個傳送者 組播源 傳送單一的資料報到多個接收者 一次的,同時的 的網路技術。組播源把資料報傳送到特定組播組,而只有屬於該組播 組的位址才能接收到資料報。實現ip組播傳輸,則組播源和接收者以及兩者之間的下層網路都必須支援組播。ip位址方案專門為組播劃...