UDP 單播 廣播和多播

2021-09-08 12:06:55 字數 2380 閱讀 4660

閱讀目錄(content)

三、udp廣播與單播

使用udp協議進行資訊的傳輸之前不需要建議連線。換句話說就是客戶端向伺服器傳送資訊,客戶端只需要給出伺服器的ip位址和埠號,然後將資訊封裝到乙個待傳送的報文中並且傳送出去。至於伺服器端是否存在,或者能否收到該報文,客戶端根本不用管。     

單播用於兩個主機之間的端對端通訊,廣播用於乙個主機對整個區域網上所有主機上的資料通訊。單播和廣播是兩個極端,要麼對乙個主機進行通訊,要麼對整個區域網上的主機進行通訊。實際情況下,經常需要對一組特定的主機進行通訊,而不是整個區域網上的所有主機,這就是多播的用途。

通常我們討論的udp的程式都是一對一的單播程式。本章將討論一對多的服務:廣播(broadcast)、多播(multicast)。對於廣播,網路中的所有主機都會接收乙份資料副本。對於多播,訊息只是傳送到乙個多播位址,網路知識將資料分發給哪些表示想要接收傳送到該多播位址的資料的主機。總得來說,只有udp套接字允許廣播或多播。

回到頂部(go to top)

廣播udp與單播udp的區別就是ip位址不同,廣播使用廣播位址255.255.255.255,將訊息傳送到在同一廣播網路上的每個主機。值得強調的是:本地廣播資訊是不會被路由器**。當然這是十分容易理解的,因為如果路由器**了廣播資訊,那麼勢必會引起網路癱瘓。這也是為什麼ip協議的設計者故意沒有定義網際網路範圍的廣播機制。

廣播位址通常用於在網路遊戲中處於同一本地網路的玩家之間交流狀態資訊等。

其實廣播顧名思義,就是想區域網內所有的人說話,但是廣播還是要指明接收者的埠號的,因為不可能接受者的所有埠都來收聽廣播。

udp服務端**:

1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include10 using namespace std;

11 int main()

12 這五個資料表示,該套接字在傳送資料報時,本地使用埠8888,本地可以使用任意乙個網路裝置介面,發往的目的位址不指定。在接收資料時,只接收發往ip位址224.0.0.88的埠為8888的資料。

我的疑問???

為什麼要廣播方和接受方的埠號相同才能收到廣播?我試了在一台linux機子上開兩個客戶端其中乙個和廣播方的埠號不同,這個客戶端結果收不到廣播,哪位網友知道懇請告之。

程式中,緊接著bind有乙個setsockopt操作,它的作用是將socket加入乙個組播組,因為socket要接收組播位址224.0.0.1的資料,它就必須加入該組播組。

回到頂部(go to top)

廣播和單播的處理過程是不同的,單播的資料只是收發資料的特定主機進行處理,而廣播的資料整個區域網都進行處理。

例如在乙個乙太網上有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層,到達接收資料的應用程式。

no pains ,no gains. 給自己加油,為未來奮鬥。

UDP 單播 廣播和多播

閱讀目錄 content 三 udp廣播與單播 使用udp協議進行資訊的傳輸之前不需要建議連線。換句話說就是客戶端向伺服器傳送資訊,客戶端只需要給出伺服器的ip位址和埠號,然後將資訊封裝到乙個待傳送的報文中並且傳送出去。至於伺服器端是否存在,或者能否收到該報文,客戶端根本不用管。單播用於兩個主機之間...

UDP單播 廣播 多播

單播 就是我們常見的包含s端和c端的一對一方式,要c端向s端發生前要先明確指明s端的ip及port 程式設計說明 略 廣播 又叫分有限廣播和和直接廣播。有限廣播 使用的位址是255.255.255.255,即向該ip的任何乙個埠發生資料,資料將發生給該區域網內的所有主機的同一埠,因為廣播位址 255...

UDP單播 多播 廣播

廣播udp與單播udp的區別就是ip位址不同,廣播使用廣播位址255.255.255.255,將訊息傳送到在同一廣播網路上的每個主機。值得強調的是 本地廣播資訊是不會被路由器 當然這是十分容易理解的,因為如果路由器 了廣播資訊,那麼勢必會引起網路癱瘓。這也是為什麼ip協議的設計者故意沒有定義網際網路...