使用UDP Sockets技術(shù)完成IP多點(diǎn)傳送1(轉(zhuǎn)中華技術(shù)網(wǎng))
發(fā)表時(shí)間:2023-08-17 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]楊紹方 摘 要 本文介紹了UDP Sockets的基本概念和IP多點(diǎn)傳送的原理,詳細(xì)討論了Java中的相關(guān)類及使用方法,提供了一個(gè)IP多點(diǎn)傳送的開發(fā)流程。 關(guān)鍵詞 Java UDP Sockets ...
楊紹方
摘 要 本文介紹了UDP Sockets的基本概念和IP多點(diǎn)傳送的原理,詳細(xì)討論了Java中的相關(guān)類及使用方法,提供了一個(gè)IP多點(diǎn)傳送的開發(fā)流程。
關(guān)鍵詞 Java UDP Sockets
IP 多點(diǎn)傳送 MulticastSocket 類IP多點(diǎn)傳送(multicast delivery)是針對(duì)點(diǎn)到點(diǎn)的傳送和廣播傳送兩種方式而言的,它是指在一定的組內(nèi)對(duì)其成員進(jìn)行的廣播,是一種有限的廣播。組中的某個(gè)成員發(fā)出的信息,組中的其它所有成員都能收到。它是UDP Sockets的一個(gè)分支。
IP多點(diǎn)傳送特別適合與高帶寬的應(yīng)用,例如在網(wǎng)絡(luò)上發(fā)送視頻和音頻。隨著網(wǎng)絡(luò)帶寬的不斷提高和網(wǎng)絡(luò)通訊質(zhì)量的不斷改善,IP多點(diǎn)傳送還將廣泛地被應(yīng)用于網(wǎng)上聊天及網(wǎng)上會(huì)議,分布式數(shù)據(jù)存儲(chǔ),聯(lián)機(jī)事務(wù)處理,交互式游戲等方面。另外,多點(diǎn)傳送還可以被客戶機(jī)用于在網(wǎng)絡(luò)上尋找相應(yīng)的服務(wù)器,客戶機(jī)發(fā)送一個(gè)多點(diǎn)傳送的請(qǐng)求,任何監(jiān)聽服務(wù)器都可以與客戶機(jī)連接并開始一個(gè)事務(wù)。
UDP Socket基礎(chǔ)
使用用戶數(shù)據(jù)報(bào)協(xié)議(User Datagram Protocol,簡(jiǎn)稱UDP)進(jìn)行會(huì)話必須將信息裝配成一定尺寸的小報(bào)文,當(dāng)發(fā)送一條信息,接收方能否收到并返回信息永遠(yuǎn)是不確定的,如果無法收到返回信息,我們就無法確定我們發(fā)送的信息是否被接收——它可能在途中丟失,接收者返回的響應(yīng)信息也可能丟失,另外,接收者也可能忽略我們的信息,因此,UDP被描述為不可靠的、無連接的和面向消息的。
創(chuàng)建UDP sockets非常象創(chuàng)建一個(gè)郵箱。郵箱是使用地址來識(shí)別的,但是,我們不需要為每個(gè)發(fā)送信息的人構(gòu)造一個(gè)新的郵箱,可以在含有發(fā)送信息的明信片上寫上目的地址,將其放在郵箱中并發(fā)送出去。接收者可能會(huì)長(zhǎng)久的等待,直到含有信息的明信片到達(dá)它的郵箱,而明信片上標(biāo)識(shí)了發(fā)送者的返回地址。
IP多點(diǎn)傳送的原理
為了支持IP多點(diǎn)傳送,某些范圍的IP地址被單獨(dú)留出專門用于這個(gè)目的,這些IP地址是D類地址,其地址的最高四比特的位模式為“1110”,即IP地址的范圍在224.0.0.0和239.255.255.255之間。它們中的每一個(gè)IP地址都可以被引用作為一個(gè)多點(diǎn)傳送組,任何以該IP地址編址的IP報(bào)文將被該組中的其它所有機(jī)器接收,也就是說,一個(gè)IP地址就相當(dāng)于一個(gè)郵箱。另外,組中的成員是動(dòng)態(tài)的并隨時(shí)間而改變。
對(duì)于IP多點(diǎn)傳送,網(wǎng)間網(wǎng)組管理協(xié)議(Internet Group Management Protocol,簡(jiǎn)稱IGMP),用于管理多點(diǎn)傳送組中的成員。支持多點(diǎn)傳送的路由可以使用IGMP決定本地的機(jī)器是否贊成加入某個(gè)組,一個(gè)多點(diǎn)傳送路由可以決定是否轉(zhuǎn)發(fā)一個(gè)多點(diǎn)傳送報(bào)文。
影響多點(diǎn)傳送報(bào)文的一個(gè)重要參數(shù)是time-to-live(TTL)。TTL用于描述發(fā)送者希望傳送的信息能通過多少不同的網(wǎng)絡(luò)。當(dāng)報(bào)文被路由器轉(zhuǎn)發(fā),報(bào)文中的TTL將減一,當(dāng)TTL為零時(shí),報(bào)文將不再向前發(fā)送。
在實(shí)際使用中,我們必須注意下面幾點(diǎn):
1.這些IP地址只能作為信宿地址使用,絕對(duì)不能出現(xiàn)在任何信源地址域中,也不能出現(xiàn)在源路徑或記錄路徑選項(xiàng)中:
2.由于IP多點(diǎn)傳送是一對(duì)多的傳送,因此,不能利用差錯(cuò)與控制報(bào)文協(xié)議(Internet Control Message Protocol,簡(jiǎn)稱ICMP)產(chǎn)生出錯(cuò)報(bào)文。
3.發(fā)送一個(gè)信息到一個(gè)組,發(fā)送主機(jī)可以不是組中的成員;
4.一些組被Internet Assigned Numbers Authority(IANA)分配,保留用于特殊的目的,詳情參見:ftp://ftp.internic.net/rfc/rfc1700.txt。另外,避免使用一些保留組,從224.0.0.0到224.0.0.225僅限于本地子網(wǎng)使用。建議在224.0.1.27和224.0.1.225之間任意選取一個(gè)IP地址。
5.如果我們選取的組已經(jīng)被使用,與其他機(jī)器的通訊將會(huì)混亂,一旦發(fā)生,可以退出應(yīng)用,試試其他的地址。
6.當(dāng)一個(gè)機(jī)器加入一個(gè)多點(diǎn)傳送組,它將開始接收該IP多點(diǎn)傳送地址的信息。如果多點(diǎn)傳送報(bào)文分發(fā)到網(wǎng)絡(luò)上,任何監(jiān)聽該信息的機(jī)器都會(huì)有機(jī)會(huì)接收它。對(duì)于IP多點(diǎn)傳送,沒有一個(gè)機(jī)制對(duì)相同網(wǎng)絡(luò)上的機(jī)器能否加入該多點(diǎn)傳送組加以限制。因此,安全性是我們必須考慮的問題之一。
7.選擇的TTL參數(shù)應(yīng)盡可能小。一個(gè)大的TTL值會(huì)不必要地占用Internet帶寬。此外,還可能破壞不同區(qū)域使用相同組的其它的多點(diǎn)傳送通訊。
Java中與IP多點(diǎn)傳送相關(guān)的類
java.net包中含有UDP通訊所需要的工具,其中包括IP多點(diǎn)傳送。