国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ⅠCE 框架的P2P 技術(shù)在通訊領(lǐng)域的研究

2022-08-08 15:23袁永勝YUANYongsheng趙魁元ZHAOKuiyuan肖崢瑜XAOZhengyu趙搏ZHAOBo王春艷WANGChunyan
價(jià)值工程 2022年23期
關(guān)鍵詞:管理器信令端口

袁永勝YUAN Yong-sheng;趙魁元ZHAO Kui-yuan;肖崢瑜XⅠAO Zheng-yu;趙搏ZHAO Bo;王春艷WANG Chun-yan

(河南科技大學(xué)軟件學(xué)院,洛陽(yáng) 471000)

0 引言

隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,人們對(duì)網(wǎng)絡(luò)服務(wù)的要求也在不斷提高。在傳統(tǒng)的C/S 或B/S 模式中,網(wǎng)絡(luò)服務(wù)主要由服務(wù)器提供,用戶(hù)的一切交互行為都要經(jīng)過(guò)服務(wù)器。隨著用戶(hù)的大量增加,這種模式不僅加重了服務(wù)器所需要的資源,而且用戶(hù)在交互過(guò)程中產(chǎn)生的一切個(gè)人信息也都可能會(huì)保存到服務(wù)器中,尤其是在通訊領(lǐng)域中,我們的信息都有可能在不經(jīng)意間泄露。因此,本文提出了P2P 內(nèi)網(wǎng)穿透技術(shù)在通訊領(lǐng)域的研究,相比于傳統(tǒng)的C/S 架構(gòu),P2P模式不依賴(lài)于中心服務(wù)器,各個(gè)節(jié)點(diǎn)之間都是平等的,有著較高的容錯(cuò)性和節(jié)點(diǎn)可擴(kuò)展性,能夠極大緩解傳統(tǒng)架構(gòu)中服務(wù)器端的壓力過(guò)大,單點(diǎn)失效等問(wèn)題,同時(shí)更好地保護(hù)了用戶(hù)的信息安全。

1 研究?jī)?nèi)容

本文主要對(duì)P2P 技術(shù)在通訊領(lǐng)域中的應(yīng)用展開(kāi)研究。當(dāng)前互聯(lián)網(wǎng)中的應(yīng)用普遍采用的是B/S 或C/S 模式。在這種傳統(tǒng)的模式中,信息的資源共享都是以一個(gè)服務(wù)器為中心,用戶(hù)之間的所有通信都需要中心服務(wù)器進(jìn)行請(qǐng)求轉(zhuǎn)發(fā)。這種方式對(duì)于共享資源的查找、更新較為容易,但是會(huì)加重服務(wù)器的負(fù)載量,因?yàn)橛脩?hù)的上行寬帶在大部分時(shí)間中都是空閑的,這不僅造成了資源的浪費(fèi)而且速度也會(huì)降低。另外,這種方式應(yīng)用在通訊領(lǐng)域中,由于所有數(shù)據(jù)都要經(jīng)過(guò)中心服務(wù)器進(jìn)行存儲(chǔ)轉(zhuǎn)發(fā),因此會(huì)對(duì)用戶(hù)的信息安全造成極大威脅,極有可能造成用戶(hù)數(shù)據(jù)泄露。而在P2P 體系結(jié)構(gòu)中,中心服務(wù)器的作用得到了淡化,每個(gè)用戶(hù)既可以是客戶(hù)端也可以是服務(wù)端。在這種模式中,系統(tǒng)會(huì)將用戶(hù)端也當(dāng)做服務(wù)端,利用終端用戶(hù)的上行寬帶來(lái)輔助數(shù)據(jù)的轉(zhuǎn)發(fā)、交換。通過(guò)這種方式,用戶(hù)之間可以直接進(jìn)行通信而不需要依賴(lài)于同一個(gè)中心服務(wù)器,速度得到了很大提升,也充分利用了網(wǎng)絡(luò)資源。其次,采用這種方式,用戶(hù)的數(shù)據(jù)都保存在本地而不是服務(wù)器,因此用戶(hù)的信息安全性得到了極大的改善。但是,這種方式在打洞時(shí)通常都是基于UDP 的,由于UDP 是一種不可靠的傳輸協(xié)議,因此需要在數(shù)據(jù)傳輸過(guò)程中解決不可靠傳輸問(wèn)題,使數(shù)據(jù)能夠安全傳輸。另外,除卻在用戶(hù)信息交流方面的應(yīng)用,P2P 還可以應(yīng)用于目前比較流行的音視頻類(lèi)的物聯(lián)網(wǎng)中,例如車(chē)機(jī)系統(tǒng)、智能攝像頭、可視化門(mén)鎖、門(mén)鈴等,利用這種技術(shù)會(huì)極大地節(jié)省云端服務(wù)器所消耗的巨大成本,并使用戶(hù)得到快速、安全的體驗(yàn)。

2 穿透原理

2.1 NAT 端口

NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換)是為了解決IP 地址不夠用而產(chǎn)生的一種路由器解決方案。它可以給用戶(hù)分配本地網(wǎng)絡(luò)IP,在用戶(hù)上網(wǎng)時(shí)NAT 路由器會(huì)自動(dòng)將用戶(hù)本地IP 轉(zhuǎn)換成公網(wǎng)IP 與外部通信。NAT 端口主要分為兩大類(lèi):錐型NAT 和對(duì)稱(chēng)型NAT。而錐形又分為全錐形、受限錐形和端口受限錐形。對(duì)于處于不同端口類(lèi)型后的網(wǎng)絡(luò),其穿透方式也不盡相同。

2.2 ICE 穿透

ICE 全稱(chēng)為交互式連接建立,它主要集成了STUN[1]和TURN[2]協(xié)議。因?yàn)橛脩?hù)網(wǎng)絡(luò)基本上都位于不同的內(nèi)網(wǎng)之中,如果采用P2P 技術(shù)的話(huà),就必須以某種方式讓兩端用戶(hù)能夠互相發(fā)現(xiàn)對(duì)方,因此ICE 穿透技術(shù)便是整個(gè)系統(tǒng)能夠正常工作的核心。其工作原理如圖1 所示。其中,TURN服務(wù)器是STUN 服務(wù)器的備用。

圖1 穿透服務(wù)器工作原理

然而在日常生活中,用戶(hù)網(wǎng)絡(luò)所處的NAT 設(shè)備類(lèi)型多種多樣,因此ICE 在工作之初會(huì)先對(duì)用戶(hù)雙方的NAT類(lèi)型進(jìn)行判定。對(duì)于處于非對(duì)稱(chēng)型NAT 設(shè)備后的用戶(hù),STUN 服務(wù)器將會(huì)檢查用戶(hù)所請(qǐng)求的IP 地址(位于端口后的用戶(hù)應(yīng)用程序所發(fā)出的請(qǐng)求IP),并將這個(gè)地址通過(guò)信令服務(wù)器傳遞給位于另外一個(gè)端口后的客戶(hù)端從而使兩個(gè)客戶(hù)端直接建立連接。而對(duì)于存在對(duì)稱(chēng)型設(shè)備的網(wǎng)絡(luò),有兩種情況STUN 協(xié)議將不能進(jìn)行NAT 穿越,一種是用戶(hù)分別處于端口限制型NAT 和對(duì)稱(chēng)型NAT 后,一種是雙方都處于對(duì)稱(chēng)型NAT 后,因?yàn)槊慨?dāng)客戶(hù)機(jī)發(fā)出一次請(qǐng)求,對(duì)稱(chēng)型NAT 都會(huì)重新給用戶(hù)分配一個(gè)端口。那么此時(shí)ICE 會(huì)使用TURN 服務(wù)器進(jìn)行中繼轉(zhuǎn)發(fā)[3]。值得一提的是,在穿透的幾種類(lèi)型中,ICE 會(huì)優(yōu)先使用STUN 建立一個(gè)基于UDP 的連接,如果建立失敗,將會(huì)去嘗試進(jìn)行TCP 連接,仍然打洞失敗時(shí)才會(huì)使用TURN 服務(wù)器進(jìn)行中繼轉(zhuǎn)發(fā)。因此,TURN 服務(wù)器所產(chǎn)生的relay 候選地址的優(yōu)先級(jí)是最低的,因?yàn)橹欣^雖可靠但是也是效率最低的一種P2P通信方式,ICE 協(xié)議會(huì)在多個(gè)candidate 中選取最合適的地址進(jìn)行通訊[4]。其工作流程如圖2 所示。

圖2 ⅠCE 框架工作流程

3 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

本系統(tǒng)前端采用安卓端的原生開(kāi)發(fā)策略,后端采用Spring Boot 開(kāi)發(fā),保證了數(shù)據(jù)的安全可靠性,運(yùn)行速度快、性能高,用戶(hù)體驗(yàn)最佳。

3.1 整體功能分析

3.1.1 注冊(cè)與登錄

客戶(hù)端將用戶(hù)名以及輸入的密碼進(jìn)行加密,發(fā)送給服務(wù)器,以用戶(hù)名為主鍵在數(shù)據(jù)庫(kù)中搜索用戶(hù)的信息,如果沒(méi)有搜索到將會(huì)返回給客戶(hù)端登錄失敗信息,搜索到后,系統(tǒng)會(huì)對(duì)密碼進(jìn)行二次加密,再進(jìn)行密碼的校驗(yàn),放入數(shù)據(jù)庫(kù)的密碼進(jìn)行了兩次加密(注冊(cè)也是如此),即使數(shù)據(jù)庫(kù)的權(quán)限被盜取也很難破解出密碼,校驗(yàn)成功后將token 返回給客戶(hù)端進(jìn)行登錄后的權(quán)限驗(yàn)證。注冊(cè)用郵箱作為賬號(hào),輸入郵箱,點(diǎn)擊獲取驗(yàn)證碼,服務(wù)器端隨機(jī)生成驗(yàn)證碼并保存,一定時(shí)間后會(huì)自動(dòng)刪除,將驗(yàn)證碼發(fā)送到注冊(cè)的郵箱中,點(diǎn)擊登錄按鈕,后臺(tái)先進(jìn)行驗(yàn)證碼的校驗(yàn),通過(guò)校驗(yàn),將注冊(cè)信息存入數(shù)據(jù)庫(kù),注冊(cè)成功。

3.1.2 消息同步

網(wǎng)絡(luò)通訊的主要是在兩端進(jìn)行的,消息同步機(jī)制在兩端之間交互。消息分為索引和內(nèi)容兩部分進(jìn)行存儲(chǔ),雙端在進(jìn)行同步時(shí)將會(huì)對(duì)比雙方持有的索引鏈表,并將對(duì)方需要的消息內(nèi)容根據(jù)索引發(fā)送給對(duì)方,從而使雙方的消息記錄保持一致。在消息發(fā)送時(shí),發(fā)送方將會(huì)向信令服務(wù)器發(fā)送一個(gè)請(qǐng)求,請(qǐng)求中僅包含接收方的用戶(hù)ID 和發(fā)送方用戶(hù)ID,然后信令服務(wù)器會(huì)向接收方發(fā)送一個(gè)消息提醒,并將其存儲(chǔ)在緩存中,如果接收方離線(xiàn),接收方上線(xiàn)后會(huì)主動(dòng)向信令服務(wù)器發(fā)起詢(xún)問(wèn)是否有新的消息,信令服務(wù)器會(huì)將緩存中的數(shù)據(jù)重新發(fā)送給接收方并清理緩存。

3.1.3 局域網(wǎng)中的數(shù)據(jù)傳輸

如果用戶(hù)處于同一局域網(wǎng)內(nèi),則不需要通過(guò)穿透服務(wù)器進(jìn)行內(nèi)網(wǎng)穿透,用戶(hù)登錄后向局域網(wǎng)廣播用戶(hù)信息,局域網(wǎng)內(nèi)其他在線(xiàn)用戶(hù)可同步收到該廣播信息并將其加入在線(xiàn)用戶(hù)。如果用戶(hù)A 要和用戶(hù)B 通信,用戶(hù)A 會(huì)向用戶(hù)B 發(fā)送一個(gè)Socket 請(qǐng)求,用戶(hù)B 收到A 發(fā)來(lái)的Socket 請(qǐng)求后會(huì)將其暫存并向A 也發(fā)送一個(gè)Socket。雙方都擁有一個(gè)對(duì)方的Socket 后就建立起了局域網(wǎng)內(nèi)的連接,可進(jìn)行文件傳輸、信息交流。其中Socket 會(huì)保存一段時(shí)間,下一次通信時(shí)則不需要重新建立連接而直接進(jìn)行信息傳輸。

3.1.4 不同內(nèi)網(wǎng)間數(shù)據(jù)傳輸

當(dāng)兩個(gè)客戶(hù)端處于非轉(zhuǎn)發(fā)方案中的情況時(shí),用戶(hù)首先要連接服務(wù)器,注冊(cè)自己的信息,這個(gè)信息包括用戶(hù)公網(wǎng)映射IP 地址和端口以及用戶(hù)的信息,以供客戶(hù)端A 和B在自行連接的時(shí)候在公網(wǎng)上找到對(duì)方進(jìn)行信息的傳輸,當(dāng)客戶(hù)端A 想要和某個(gè)用戶(hù)(已經(jīng)在服務(wù)器端注冊(cè)的用戶(hù))進(jìn)行連接時(shí),點(diǎn)擊注冊(cè)用戶(hù)列表中的用戶(hù)就可以實(shí)現(xiàn)兩端的信息交互。注冊(cè)后,客戶(hù)端命令服務(wù)器呼叫客戶(hù)端B,驗(yàn)證網(wǎng)絡(luò)連接是否暢通,如果此時(shí)用戶(hù)已經(jīng)下線(xiàn),服務(wù)器端會(huì)給客戶(hù)端A 回復(fù)客戶(hù)端B 不在線(xiàn),否則客戶(hù)端會(huì)根據(jù)注冊(cè)的IP 和端口自行連接,實(shí)現(xiàn)端到端的通訊,但當(dāng)一方下線(xiàn)時(shí),會(huì)給服務(wù)器發(fā)送下線(xiàn)消息,服務(wù)器會(huì)通知對(duì)方下線(xiàn),通訊回話(huà)結(jié)束。

3.1.5 安全傳輸

為了加強(qiáng)端對(duì)端傳輸之間的安全性,采用證書(shū)以及非對(duì)稱(chēng)加密算法對(duì)通訊雙方的內(nèi)容進(jìn)行加密,以防止中間人攻擊。通訊雙方在通訊建立時(shí)將會(huì)向?qū)Ψ桨l(fā)送自己的證書(shū)以驗(yàn)證身份,然后會(huì)使用證書(shū)中的公鑰加密一個(gè)隨機(jī)數(shù)并返回對(duì)方。雙方在收到隨機(jī)數(shù)后使用自己的私鑰解密,并用對(duì)方的公鑰重新加密后重新發(fā)送給對(duì)方。雙方接收到后用自己的私鑰解密,然會(huì)對(duì)比是否為自己之前生成的隨機(jī)數(shù),若正確,則可以保證雙方之間的通訊沒(méi)有被第三人篡改,而后再使用對(duì)方的公鑰進(jìn)行通訊。證書(shū)是由信令服務(wù)器提供方頒發(fā),雙方可以通過(guò)信令服務(wù)器方驗(yàn)證證書(shū)的合法性。

3.2 穿透服務(wù)器

Coturn 服務(wù)器是一個(gè)開(kāi)源的穿透服務(wù)器,它完整地集成了STUN/TURN/ICE 協(xié)議并支持P2P 防火墻穿透技術(shù)。在本次研究測(cè)試中,穿透服務(wù)器采用的是在Ubuntu 云服務(wù)器中安裝Coturn,在安全組中開(kāi)放了3478 等相關(guān)端口,并在Trickle ICE 中測(cè)試通過(guò),能夠成功收集到STUN 協(xié)議獲得的srflx 地址和TURN 協(xié)議獲得的relay 地址(統(tǒng)稱(chēng)為候選列表)。

3.3 信令服務(wù)器

信令服務(wù)器使用了SpringBoot 框架[5]進(jìn)行開(kāi)發(fā),采用WebSocket 通訊協(xié)議與客戶(hù)端交互。

3.3.1 信令協(xié)議

信令服務(wù)器與客戶(hù)端之間的通訊使用了自定義的WSTP(WebSocket Signaling Transport Protocol)信令傳輸協(xié)議,協(xié)議規(guī)定了一個(gè)信令是由一個(gè)20 字節(jié)的信令頭以及數(shù)據(jù)組成。信令頭的組成如表1 所示。

表1 信令頭設(shè)計(jì)

版本號(hào)根據(jù)高低4 位分為不兼容版本號(hào)和兼容性版本號(hào),代表當(dāng)前協(xié)議數(shù)據(jù)包服務(wù)器可處理程度;魔數(shù)是一個(gè)用于保證完整性的簡(jiǎn)易校驗(yàn)方式,是一個(gè)固定的數(shù);標(biāo)識(shí)位用于控制一些選項(xiàng)(IE、CT、HB、BIN、RESP 等);類(lèi)標(biāo)識(shí)符是用于指示該協(xié)議包要訪問(wèn)哪個(gè)信令類(lèi);數(shù)據(jù)長(zhǎng)度即為攜帶數(shù)據(jù)的總長(zhǎng)度。信令協(xié)議可攜帶的數(shù)據(jù)有兩種,JSON 和二進(jìn)制。

3.3.2 信令管理器

信令服務(wù)器中的所有信令都定義在信令類(lèi)中,服務(wù)器在啟動(dòng)時(shí), 信令管理器會(huì)使用SpringBoot 中的ResourceLoaderAware 掃描特定的包,并將所有擁有@Signaling 注解的信令類(lèi)注冊(cè)到管理器中,并由信令管理器管理它們的生命周期,此后,信令管理器將會(huì)根據(jù)信令類(lèi)中帶有Mount 的注解的屬性類(lèi)型從Spring Bean 管理器中獲取Bean,并掛載在這些屬性中。當(dāng)WebSocket 服務(wù)器接收到數(shù)據(jù)時(shí),會(huì)先將數(shù)據(jù)按照WSTP 協(xié)議處理為Protocal 對(duì)象,并傳入到信令管理器中,信令管理器會(huì)根據(jù)Protocal 對(duì)象中的標(biāo)識(shí)符以及數(shù)據(jù)訪問(wèn)對(duì)應(yīng)得信令方法執(zhí)行,并取得結(jié)果封裝為ResponseProtocal 返回給客戶(hù)端。

3.4 安卓端的實(shí)現(xiàn)

本系統(tǒng)最終在安卓端完成編寫(xiě)與測(cè)試,使用Android Studio 進(jìn)行開(kāi)發(fā),使用了開(kāi)源的原生UI 框架XUI 進(jìn)行界面開(kāi)發(fā),采用WebSocket 通信協(xié)議與后端進(jìn)行交互,調(diào)用信令服務(wù)器提供的各接口以實(shí)現(xiàn)整體功能。其中主要使用了重寫(xiě)后的WebSocketClient,使其可以直接發(fā)送信令數(shù)據(jù),并且可以直接發(fā)送Java 對(duì)象。 重寫(xiě)后的WebSocektClient 需要在發(fā)送時(shí)設(shè)置一個(gè)回調(diào),在執(zhí)行成功、失敗、超時(shí)時(shí)會(huì)自動(dòng)調(diào)用回調(diào)。重寫(xiě)后的WebSocketClient 可以自管理Token 信息。

4 結(jié)語(yǔ)

綜上所述,在如今互聯(lián)網(wǎng)高速發(fā)展的時(shí)代,大量的網(wǎng)絡(luò)資源造成浪費(fèi),人們的信息安全也亟需加強(qiáng)。本文通過(guò)對(duì)基于ICE 框架的P2P 技術(shù)的原理分析,闡述了P2P 技術(shù)在如今互聯(lián)網(wǎng)中的發(fā)展方向和潛力,尤其在通訊領(lǐng)域中,P2P 技術(shù)就顯得尤為重要。本文提出了P2P 技術(shù)在通訊領(lǐng)域的研究應(yīng)用,旨在為通訊領(lǐng)域提供一個(gè)不同于傳統(tǒng)C/S 模式的方法,能夠讓用戶(hù)更加重視自己的信息安全,具有一定的參考價(jià)值。

猜你喜歡
管理器信令端口
SLS字段在七號(hào)信令中的運(yùn)用
移動(dòng)信令在交通大數(shù)據(jù)分析中的應(yīng)用探索
Windows文件緩沖處理技術(shù)概述
基于信令分析的TD-LTE無(wú)線(xiàn)網(wǎng)絡(luò)應(yīng)用研究
端口阻塞與優(yōu)先級(jí)
LTE網(wǎng)絡(luò)信令采集數(shù)據(jù)的分析及探討
初識(shí)電腦端口
高集成度2.5A備份電源管理器簡(jiǎn)化鋰離子電池備份系統(tǒng)
8端口IO-Link參考設(shè)計(jì)套件加快開(kāi)發(fā)速度
在Win 7下利用憑據(jù)管理器提高訪問(wèn)速度等
离岛区| 成都市| 台南县| 静宁县| 怀柔区| 海南省| 陵川县| 石屏县| 新昌县| 桃园县| 大洼县| 上饶市| 鹤峰县| 永仁县| 广平县| 饶河县| 钟山县| 宝兴县| 哈密市| 二连浩特市| 荣昌县| 武定县| 温泉县| 遵义县| 鄢陵县| 邯郸市| 桂平市| 分宜县| 清河县| 澳门| 禄丰县| 云浮市| 鄂托克前旗| 响水县| 易门县| 台北县| 旅游| 巴林右旗| 杭州市| 交城县| 和静县|