日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UDP 组播---基本概念

發(fā)布時間:2023/12/18 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UDP 组播---基本概念 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
 ????? ???????????????????????? 本文章已收錄于: ?????????????????????
  • 先來了解下UDP

UDP 是UserDatagram Protocol的簡稱, 中文名是用戶數(shù)據(jù)報協(xié)議,是OSI(Open System Interconnection開放式系統(tǒng)互聯(lián)) 參考模型中一種無連接的傳輸層協(xié)議,提供面向事務的簡單不可靠信息傳送服務,IETF RFC 768是UDP的正式規(guī)范。UDP在IP報文的協(xié)議號是17。

UDP和TCP的區(qū)別:http://blog.csdn.net/ljheee/article/details/50823050

UDP詳解:http://blog.csdn.NET/ljheee/article/details/51720594


UDP信息傳遞的方式分三類

①? 單播Unicast:是客戶端與服務器之間的點到點連接。

②? 廣播BroadCast:主機之間“一對所有”的通訊模式,廣播者可以向網絡中所有主機發(fā)送信息。廣播禁止在Internet寬帶網上傳輸(廣播風暴)。

③? 多播MultiCast:主機之間“一對一組”的通訊模式,也就是加入了同一個組的主機可以接受到此組內的所有數(shù)據(jù)。

這里需要注意的是:只有UDP才有廣播、組播的傳遞方式;而TCP是一對一連接通信。多播的重點是高效的把同一個包盡可能多的發(fā)送到不同的,甚至可能是未知的設備。但是TCP連接是一對一明確的,只能單播。

?

在Java API中,實現(xiàn)UDP方式的編程,包含客戶端網絡編程和服務器端網絡編程,主要由兩個類實現(xiàn),分別是:DatagramSocket和DatagramPacket。

?

關于UDP使用的詳細例子:https://github.com/ljheee/ChatUDP

?

UDP組播

? ? ? ? ?組播報文的目的地址使用D類IP地址, D類地址不能出現(xiàn)在IP報文的源IP地址字段。單播數(shù)據(jù)傳輸過程中,一個數(shù)據(jù)包傳輸?shù)穆窂绞菑脑吹刂仿酚傻侥康牡刂?#xff0c;利用“逐跳”的原理[路由選擇]在IP網絡中傳輸。

? ? ? ? 然而在ip組播環(huán)中,數(shù)據(jù)包的目的地址不是一個,而是一組,形成組地址。所有的信息接收者都加入到一個組內,并且一旦加入之后,流向組地址的數(shù)據(jù)立即開始向接收者傳輸,組中的所有成員都能接收到數(shù)據(jù)包。組播組中的成員是動態(tài)的,主機可以在任何時刻加入和離開組播組。

? ? ? ? 用同一個IP多播地址接收多播數(shù)據(jù)包的所有主機構成了一個主機組,也稱為多播組。一個多播組的成員是隨時變動的,一臺主機可以隨時加入或離開多播組,多播組成員的數(shù)目和所在的地理位置也不受限制,一臺主機也可以屬于幾個多播組。此外,不屬于某一個多播組的主機也可以向該多播組發(fā)送數(shù)據(jù)包。 ?

組播地址

  • 組播組可以是永久的也可以是臨時的。組播組地址中,有一部分由官方分配的,稱為永久組播組。永久組播組保持不變的是它的ip地址,組中的成員構成可以發(fā)生變化。永久組播組中成員的數(shù)量都可以是任意的,甚至可以為零。那些沒有保留下來供永久組播組使用的ip組播地址,可以被臨時組播組利用。
  • 224.0.0.0~224.0.0.255為預留的組播地址(永久組地址),地址224.0.0.0保留不做分配,其它地址供路由協(xié)議使用;
  • 224.0.1.0~224.0.1.255是公用組播地址,可以用于Internet;
  • 224.0.2.0~238.255.255.255為用戶可用的組播地址(臨時組地址),全網范圍內有效;
  • 239.0.0.0~239.255.255.255為本地管理組播地址,僅在特定的本地范圍內有效。
  • ? ? ? ? 組播是一對多的傳輸方式,其中有個組播組的 概念,發(fā)送端將數(shù)據(jù)向一個組內發(fā)送,網絡中的路由器通過底層的IGMP協(xié)議自動將數(shù)據(jù)發(fā)送到所有監(jiān)聽這個組的終端。至于廣播則和組播有一些相似,區(qū)別是路由器向子網內的每一個終端都投遞一份數(shù)據(jù)包,不論這些終端是否樂于接收該數(shù)據(jù)包。UDP廣播只能在內網(同一網段)有效,而組播可以較好實現(xiàn)跨網段群發(fā)數(shù)據(jù)。

    ? ? ? ?UDP組播是采用的無連接,數(shù)據(jù)報的連接方式,所以是不可靠的。也就是數(shù)據(jù)能不能到達接受端和數(shù)據(jù)到達的順序都是不能保證的。但是由于UDP不用保證數(shù)據(jù) 的可靠性,所有數(shù)據(jù)的傳送效率是很快的。


    IGMP協(xié)議

    ? ? ? IGMP是IP組播的基礎。在IP協(xié)議出現(xiàn)以后為了加入對組播的支持,IGMP產生了。IGMP所做的實際上就是告訴路由器,在這個路由器所在的子網內有人對發(fā)送到某一個組播組的數(shù)據(jù)感興趣,這樣當這個組播組的數(shù)據(jù)到達后面,路由器就不會拋棄它,而是把他轉送給所有感興趣的客戶。假如不同子網內的A和B要 進行組播通信,那么位于AB之間的所有路由器必須都要支持IGMP協(xié)議,否則AB之間不能進行通信。

    組播的原理:

    ? ? ? 組播首先由一個用戶申請一個組播組,這個組播組被維護在路由器中,其他用戶申請加入組播組,這樣當一個用戶向組內發(fā)送消息時,路由器將消息轉發(fā)給組內的所有成員。如果申請加入的組不在本級路由中,如果路由器和交換機允許組播協(xié)議通過,路由器將申請加入的操作向上級路由提交。廣域網通信要經過多級路由器和交換機,幾乎所有的網絡設備都默認阻止組播協(xié)議通過(只允許本網段內,不向上級提交),這使得廣域網上實現(xiàn)組播有一定局限。

    UDP組播的基本步驟

  • 建立socket
  • socket和端口綁定
  • 加入一個組播組
  • 通過sendto / recvfrom進行數(shù)據(jù)的收發(fā)
  • 關閉socket
  • 服務器和客戶端必須都要加入相同的組播地址才可以

    多播數(shù)據(jù)報套接字類用于發(fā)送和接收 IP 多播包。MulticastSocket 是一種 (UDP) DatagramSocket,它具有加入 Internet 上其他多播主機的“組”的附加功能。

    多播組通過 D 類 IP 地址和標準 UDP 端口號指定。可以通過首先使用所需端口創(chuàng)建 MulticastSocket,然后調用?joinGroup(InetAddress groupAddr)?方法來加入多播組。

    ? ? ? ? 在Java中,多播一樣十分好實現(xiàn),要實現(xiàn)多播,就要用到MulticastSocket類,其實該類就是DatagramSocket的子類,在使用時除了多播自己的一些特性外,把它當做DatagramSocket類使用就可以了。

    ? ? ? ? 默認我們知道IP(UDP和TCP一樣)可以把數(shù)據(jù)包在一個網絡中發(fā)到另一個設備。更準確點就是IP把數(shù)據(jù)包從一個IP地址發(fā)到另一個IP地址。多播的決竅就是在同一時間把一個數(shù)據(jù)包發(fā)送到多個設備,可以把一個特定的IP地址指定為多播地址,并同時發(fā)送到多個設備。

    ? ? ? ? IP多播首先要知道的是只有UDP有多播,沒有TCP多播這樣的東西,為什么呢?多播的重點是高效的把同一個包盡可能多的發(fā)送到不同的,甚至可能是未知的設備。但是TCP連接可能要求丟包重發(fā)或者延時或重組順序,這些操作可能非常消耗資源,不適于許多使用多播的應用場景。(同時多播不知道發(fā)出的包是不是已經到達,這個也導致不能使用TCP)。

    ?最后給出一個實例:https://github.com/ljheee/Multicast_UDP

    總結

    以上是生活随笔為你收集整理的UDP 组播---基本概念的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。