程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 利用UDP Socket技術實現IP多點傳送詳解

利用UDP Socket技術實現IP多點傳送詳解

編輯:關於JAVA

IP多點傳送(MulticastSocket)類IP多點傳送(multicast delivery)是針對點到點的傳送和廣播傳送兩種方式而言的,它是指在一定的組內對其成員進行的廣播,是一種有限的廣播。組中的某個成員發出的信息,組中的其它所有成員都能收到。它是UDP Sockets的一個分支。

IP多點傳送特別適合與高帶寬的應用,例如在網絡上發送視頻和音頻。隨著網絡帶寬的不斷提高和網絡通訊質量的不斷改善,IP多點傳送還將廣泛地被應用於網上聊天及網上會議,分布式數據存儲,聯機事務處理,交互式游戲等方面。另外,多點傳送還可以被客戶機用於在網絡上尋找相應的服務器,客戶機發送一個多點傳送的請求,任何監聽服務器都可以與客戶機連接並開始一個事務。

UDP Socket基礎

使用用戶數據報協議(User Datagram Protocol,簡稱UDP)進行會話必須將信息裝配成一定尺寸的小報文,當發送一條信息,接收方能否收到並返回信息永遠是不確定的,如果無法收到返回信息,我們就無法確定我們發送的信息是否被接收——它可能在途中丟失,接收者返回的響應信息也可能丟失,另外,接收者也可能忽略我們的信息,因此,UDP被描述為不可靠的、無連接的和面向消息的。

創建UDP sockets非常象創建一個郵箱。郵箱是使用地址來識別的,但是,我們不需要為每個發送信息的人構造一個新的郵箱,可以在含有發送信息的明信片上寫上目的地址,將其放在郵箱中並發送出去。接收者可能會長久的等待,直到含有信息的明信片到達它的郵箱,而明信片上標識了發送者的返回地址。

IP多點傳送的原理

為了支持IP多點傳送,某些范圍的IP地址被單獨留出專門用於這個目的,這些IP地址是D類地址,其地址的最高四比特的位模式為“1110”,即IP地址的范圍在224.0.0.0和239.255.255.255之間。它們中的每一個IP地址都可以被引用作為一個多點傳送組,任何以該IP地址編址的IP報文將被該組中的其它所有機器接收,也就是說,一個IP地址就相當於一個郵箱。另外,組中的成員是動態的並隨時間而改變。

對於IP多點傳送,網間網組管理協議(Internet Group Management Protocol,簡稱IGMP),用於管理多點傳送組中的成員。支持多點傳送的路由可以使用IGMP決定本地的機器是否贊成加入某個組,一個多點傳送路由可以決定是否轉發一個多點傳送報文。

影響多點傳送報文的一個重要參數是time-to-live(TTL)。TTL用於描述發送者希望傳送的信息能通過多少不同的網絡。當報文被路由器轉發,報文中的TTL將減一,當TTL為零時,報文將不再向前發送。

在實際使用中,我們必須注意下面幾點:

1.這些IP地址只能作為信宿地址使用,絕對不能出現在任何信源地址域中,也不能出現在源路徑或記錄路徑選項中:

2.由於IP多點傳送是一對多的傳送,因此,不能利用差錯與控制報文協議(Internet Control Message Protocol,簡稱ICMP)產生出錯報文。

3.發送一個信息到一個組,發送主機可以不是組中的成員;

4.一些組被Internet Assigned Numbers Authority(IANA)分配,保留用於特殊的目的,詳情參見:ftp://ftp.internic.net/rfc/rfc1700.txt。另外,避免使用一些保留組,從224.0.0.0到224.0.0.225僅限於本地子網使用。建議在224.0.1.27和224.0.1.225之間任意選取一個IP地址。

5.如果我們選取的組已經被使用,與其他機器的通訊將會混亂,一旦發生,可以退出應用,試試其他的地址。

6.當一個機器加入一個多點傳送組,它將開始接收該IP多點傳送地址的信息。如果多點傳送報文分發到網絡上,任何監聽該信息的機器都會有機會接收它。對於IP多點傳送,沒有一個機制對相同網絡上的機器能否加入該多點傳送組加以限制。因此,安全性是我們必須考慮的問題之一。

7.選擇的TTL參數應盡可能小。一個大的TTL值會不必要地占用Internet帶寬。此外,還可能破壞不同區域使用相同組的其它的多點傳送通訊。

Java中與IP多點傳送相關的類

java.net包中含有UDP通訊所需要的工具,其中包括IP多點傳送。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved