自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ACS與CPE的全雙工實(shí)現(xiàn)

移動(dòng)開發(fā)
ACS實(shí)現(xiàn)對CPE的遠(yuǎn)程管理,核心便是ACS與CPE之間的連接交互,本文主要講解ACS和CPE之間的全雙工實(shí)現(xiàn)。

Part 01

TR069協(xié)議簡介 

協(xié)議即約定,通信協(xié)議約定了通信雙方交互所遵循的方式和細(xì)則。TR069協(xié)議約定用戶側(cè)設(shè)備(Customer Premises Equipment,即CPE)和自動(dòng)配置服務(wù)器(Auto-Configuration Server,即ACS)之間交互的規(guī)則。我們知道HTTP協(xié)議是基于TCP協(xié)議,COAP協(xié)議是基于UDP協(xié)議,而這里的TR069協(xié)議則是基于HTTP1.1的協(xié)議傳輸,SOAP標(biāo)準(zhǔn)封裝XML的消息內(nèi)容格式,消息內(nèi)容部分如下圖1:

圖片

Part 02

TR069協(xié)議用途 

TR069協(xié)議提供了對下一代網(wǎng)絡(luò)中家庭網(wǎng)絡(luò)設(shè)備進(jìn)行管理配置的通用框架、消息規(guī)范、管理方法和數(shù)據(jù)模型。在網(wǎng)管模型中,ACS負(fù)責(zé)對終端設(shè)備CPE進(jìn)行遠(yuǎn)程集中管理,解決CPE設(shè)備的管理困難,節(jié)約維護(hù)成本,提高問題解決效率。


圖片

ACS實(shí)現(xiàn)對CPE的遠(yuǎn)程管理,核心便是ACS與CPE之間的連接交互。不同于MQTT協(xié)議,客戶端與服務(wù)器之間維持一個(gè)長鏈接,ACS同CPE的連接僅在存在交互需要時(shí)建立短鏈接。

Part 03

CPE連接ACS 

CPE首次啟動(dòng)會(huì)主動(dòng)對ACS發(fā)起HTTP連接,進(jìn)行注冊上線動(dòng)作,通過RPC方法中的inform方法上報(bào)0 BOOTSTRAP和1 BOOT(如上圖SOAP封裝的XML消息內(nèi)容案例),如平臺(tái)有需要配置或者獲取的參數(shù),也會(huì)在這次連接中進(jìn)行。交互如下:


圖片

第一步:CPE直接對ACS發(fā)起HTTP連接請求,請求案例頭部如下:

POST /ACS-server/test HTTP/1.1
SOAPAction:
Content-Length: 3923
......

第二步:ACS響應(yīng)401,要求CPE進(jìn)行HTTP Digest Authentication認(rèn)證,即摘要認(rèn)證,響應(yīng)案例如下:

HTTP/1.1 401 Unauthorized
Server: XXX
WWW-Authenticate: Digest
realm="XXX",qop="XXX",nnotallow="5ad62dabf90594eed8d2d72cec12e5f9",opaque="60D0FDDCC498497B82138713D1383D9F"
......

第三步:CPE根據(jù)ACS響應(yīng)的WWW-Authenticate信息,以及url、username和password,按照摘要認(rèn)證算法計(jì)算response,構(gòu)建出再次請求的摘要認(rèn)證信息Authorization,并再次發(fā)起HTTP請求,進(jìn)行inform上報(bào)。攜帶認(rèn)證信息再次請求,案例如下:

POST /ACS-server/test HTTP/1.1
SOAPAction:
Authorization: Digest realm="XXX", username="XXX", algorithm="MD5", nnotallow="5ad62dabf90594eed8d2d72cec12e5f9", uri="/ACS-server/test", nc=00000001, cnnotallow="12327701", respnotallow="XXXXXX", opaque="60D0FDDCC498497B82138713D1383D9F", qop="XXX"
Content-Length: 3923
......

第四步:ACS響應(yīng)200 OK,SOAP內(nèi)容為InformResponse,摘要認(rèn)證到這里已經(jīng)完成。根據(jù)響應(yīng)頭的Set-Cookie信息設(shè)置CPE下個(gè)請求的Cookie。案例如下:

HTTP/1.1 200 OK
Server: XXX
Set-Cookie:
JSESSIONID=15F51C74ED3AE0FE45A382BEBC145D29; Path=XXX;XXX
......

第五步:CPE發(fā)起的一個(gè)空的HTTP請求,根據(jù)TR069協(xié)議,消息體長度必須為0,如下案例可以看到Content-Length是0:

POST /ACS-server/test HTTP/1.1
Authorization: Digest realm="XXX", username="XXX", algorithm="MD5", nnotallow="5ad62dabf90594eed8d2d72cec12e5f9", uri="/ACS-server/test", nc=00000002, cnnotallow="12327701", respnotallow="XXXXXX", opaque="60D0FDDCC498497B82138713D1383D9F", qop="XXX"
Content-Length: 0
Cookie:
JSESSIONID=15F51C74ED3AE0FE45A382BEBC145D29
......

第六步:ACS響應(yīng)HTTP 空請求,封裝SOAP調(diào)用RPC方法,對終端設(shè)備進(jìn)行參數(shù)配置或者查詢等操作。

HTTP/1.1 200 OK
Server: XXX
Content-Type: text/xml;charset=UTF-8
Content-Length: 2226
......

第七步:CPE發(fā)起請求,封裝SOAP對應(yīng)響應(yīng)RPC方法。如果終端管理平臺(tái)查詢后還需要進(jìn)行配置,則第六步和第七步會(huì)有兩次,如都不需要,則第六步和第七步可省略。如存在,案例如下:

POST /ACS-server/acs HTTP/1.1
SOAPAction:
Authorization: Digest realm="XXX", username="XXX", algorithm="MD5", nnotallow="5ad62dabf90594eed8d2d72cec12e5f9", uri="/ACS-server/test", nc=00000003, cnnotallow="12327701", respnotallow="XXXXXX", opaque="60D0FDDCC498497B82138713D1383D9F", qop="XXX"
Content-Length: 528
Cookie:
JSESSIONID=15F51C74ED3AE0FE45A382BEBC145D29
......

第八步:ACS下發(fā)一個(gè)空HTTP響應(yīng),根據(jù)TR069協(xié)議,狀態(tài)碼使用“204(無內(nèi)容)”,表示本次會(huì)話結(jié)束。案例如下:

HTTP/1.1 204 No Content
Server: XXX
Date: Fri, 23 Jan 2023 00:15:14 GMT

這里我們針對第三步的摘要認(rèn)證展開說明。這里簡要說明下WWW-Authenticate和Authorization中涉及到的一些參數(shù),更多詳細(xì)內(nèi)容可以自行參閱RFC2617等相關(guān)文檔。

? digest ==>認(rèn)證方式

? realm ==>領(lǐng)域,領(lǐng)域參數(shù)是強(qiáng)制的,必須存在

? qop ==>保護(hù)的質(zhì)量,“auth”表示只進(jìn)行身份查驗(yàn), “auth-int”表示進(jìn)行查驗(yàn)外,還有一些完整性保護(hù)

? nonce ==>服務(wù)器側(cè)生成的隨機(jī)數(shù),在每個(gè)401回應(yīng)產(chǎn)生時(shí),被唯一創(chuàng)建,為防止攻擊產(chǎn)生,參與加密

? cnonce ==>即client nonce

? uri ==>客戶端想要訪問的URL

? nc ==>連續(xù)請求次數(shù),在同一個(gè)TCP連接里,設(shè)備每POST一次,nc+1

? algorithm ==>用來生產(chǎn)摘要及校驗(yàn)和的算法對

? response ==>用來證明用戶是否知道口令

response計(jì)算通常過程分以下三步[2]

第一步:計(jì)算HA1

  • HA1=MD5(A1)=MD5(username:realm:password);

第二步:計(jì)算HA2

  • 如果 qop 值為“auth”或未指定,那么HA2=MD5(A2)=MD5(method:uri);
  • 如果 qop 值為“auth-int”,那么HA2=MD5(A2)=MD5(method:uri:MD5(entityBody);

第三步:根據(jù)HA1和HA2計(jì)算response

  • 如果 qop 值為“auth”或“auth-int”,那么respnotallow=MD5(HA1:nonce:nc:cnonce:qop:HA2);
  • 如果 qop 未指定,那么respnotallow=MD5(HA1:nonce:HA2) 。

Authorization構(gòu)建:CPE端生成cnonce,nc從00000000開始累計(jì),response根據(jù)上述公式計(jì)算,opaque、qop、nonce、realm繼承自WWW-Authenticate,添加上username、algorithm和uri。

此外,終端管理系統(tǒng)可能還會(huì)對Manufacturer、OUI等參數(shù)進(jìn)行查驗(yàn),如查驗(yàn)不通過,響應(yīng)403,即服務(wù)器理解客戶的請求,但拒絕處理它。

Part 04

ACS連接CPE 

通過ACS對CPE進(jìn)行參數(shù)配置時(shí),ACS作為主動(dòng)方觸發(fā)本次連接。此時(shí),ACS主動(dòng)連接CEP,方式有兩種:

(1)非NAT模式下,ACS對CPE發(fā)起HTTP連接請求,使用終端上報(bào)的地址:Device.ManagementServer.ConnectionRequestURL,終端要求進(jìn)行HTTP摘要認(rèn)證。

(2)NAT模式下,ACS在公網(wǎng)環(huán)境下與內(nèi)網(wǎng)下CPE交互,通過NAT穿越獲取CPE公網(wǎng)地址進(jìn)行交互,實(shí)現(xiàn)流程見下文。

NAT,即網(wǎng)絡(luò)地址轉(zhuǎn)換。STUN 存在的目的就是進(jìn)行NAT穿越[1],這里STUN將作為一個(gè)工具來服務(wù)于本次的ACS連接CPE實(shí)現(xiàn)。讓終端用來發(fā)現(xiàn)其在公網(wǎng)IP和端口,并作為一種?;睿╧eep-alive)協(xié)議來維持NAT的綁定。

NAT模式下,ACS連接CPE實(shí)現(xiàn)具體如下:

第一步:基于STUN協(xié)議實(shí)現(xiàn)ACS與CPE之間的捆綁請求和響應(yīng),并維持。可借助第三方開源JSTUN庫,地址:https://gitee.com/javabedlamite/JSTUN/。如下是相關(guān)報(bào)文案例:

圖片

第二步:根據(jù)捆綁響應(yīng)解析CPE公網(wǎng)IP和端口。根據(jù)STUN協(xié)議定義,MAPPED-ADDRESS屬性對應(yīng)即是客戶端映射地址;在這里也是CPE的公網(wǎng)地址。


圖片

第三步:根據(jù)映射的端口地址構(gòu)建終端管理系統(tǒng)的UDP回連地址;并上報(bào)ACS。涉及使用TR069數(shù)據(jù)模型中以下兩個(gè)參數(shù):

  • Device.ManagementServer.UDPCnotallow=CEP公網(wǎng)地址
  • Device.ManagementServer.NATDetected=true通過Inform 4 VALUE CHANGE 

通知上報(bào)ACS,CPE支持NAT穿越,以及其在公網(wǎng)UDP回連地址。

第四步:某時(shí)刻,ACS需要對CPE進(jìn)行配置,只需終端管理平臺(tái)對CPE的發(fā)起UDP請求,終端設(shè)備側(cè)解析后,觸發(fā)CPE對ACS發(fā)起Inform 6 CONNECTION REQUEST(根據(jù)Tr069協(xié)議,Inform 6表明本次會(huì)話是由ACS側(cè)要求而建立的)。到此ACS連接CPE完成。

第五步:在本次連接中,ACS下發(fā)對CPE的配置、查詢、重啟、診斷等約定支持的任務(wù),CPE執(zhí)行并響應(yīng)。

整體流程大致實(shí)現(xiàn)可如下:

圖片

Part 05

主流圖形數(shù)據(jù)庫 

 ACS和CPE之間雙向連接建立的實(shí)現(xiàn),是終端管理系統(tǒng)遠(yuǎn)程管理終端的基本和前提。本文主要就ACS連接CEP和CPE連接ASC,各詳細(xì)講述一種連接實(shí)現(xiàn)方式和流程。目前,家庭智能網(wǎng)關(guān)普遍通過TR069協(xié)議納管于各省份的省側(cè)管理平臺(tái),一些機(jī)頂盒也在通過TR069協(xié)議進(jìn)行納管;在萬物互聯(lián)背景下,未來規(guī)模也許會(huì)更大。

責(zé)任編輯:龐桂玉 來源: 移動(dòng)Labs
相關(guān)推薦

2023-08-07 14:29:26

模擬電話全雙工通信

2013-06-06 10:49:14

以太網(wǎng)以太網(wǎng)接口

2022-12-16 22:06:29

2011-09-13 10:05:43

無線技術(shù)網(wǎng)絡(luò)

2021-08-23 15:45:55

5GCPE終端網(wǎng)絡(luò)

2012-04-28 18:29:28

博通100 Gbps

2018-03-23 08:36:47

微軟數(shù)據(jù)機(jī)器人

2010-01-04 17:28:20

交換機(jī)端口

2019-10-24 18:05:49

人工智能

2022-03-18 10:43:12

WebSocketHTML5TCP 連接

2010-01-08 09:26:27

千兆以太網(wǎng)交換機(jī)

2019-05-05 05:39:23

TCP三次握手網(wǎng)絡(luò)協(xié)議

2021-11-15 22:31:16

面試題小程序Rpc 通信

2022-03-21 06:35:23

HTML5NginxWebSocket

2023-08-18 14:28:18

UART異步通信

2010-01-14 10:43:11

交換機(jī)端口級聯(lián)

2020-11-03 07:09:31

5GCPEWi-Fi

2022-07-26 14:53:10

WebSocket網(wǎng)絡(luò)通信協(xié)議

2016-07-26 11:18:07

2010-06-13 16:57:58

IPv4協(xié)議網(wǎng)絡(luò)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)