Zfund量化套利——完結(jié)篇之SDP和SIP(區(qū)塊鏈從p2p開始 五)

在前面幾篇文章中我們介紹了建立p2p通信的一般協(xié)議,以及一種完整的NAT傳輸解決方案ICE, 但是對于多用戶的通信情況,還有一些通用協(xié)議來實現(xiàn)標(biāo)準(zhǔn)化的管理,如之前提到過的SDP和SIP。

01

SDP介紹

前文提到的ICE信息的描述格式通常采用標(biāo)準(zhǔn)的SDP,其全稱為Session Descrip tion Protocol,即會話描述協(xié)議. SDP只是一種信息格式的描述標(biāo)準(zhǔn),不屬于傳輸協(xié)議,但是可以被其他傳輸協(xié)議用來交換必要的信息,如SIP和RTSP等.

02

SDP信息

一個SDP會話描述包含如下部分:

會話名稱和會話目的

會話的激活時間

構(gòu)成會話的媒體(media)

為了接收該媒體所需要的信息(如地址,端口,格式等)

因為在中途參與會話也許會受限制,所以可能會需要一些額外的信息:

會話使用的的帶寬信息

會話擁有者的聯(lián)系信息

一般來說,SDP必須包含充分的信息使得應(yīng)用程序能夠加入會話,并且可以提供任何非參與者使用時需要知道的資源 狀況,后者在當(dāng)SDP同時用于多個會話聲明協(xié)議時尤其有用.

SDP格式

SDP是基于文本的協(xié)議,使用ISO 106 46字符集和UTF-8編碼.SDP字段名稱和屬性名稱只使用UTF-8的一個子集US-ASCI I, 因此不能存在中文.雖然理論上文本字段和屬性字段支持全集,但最好還是不要在其中使用中文.

SDP會話描述包含了多行如下類型的文本:

=

其中type是大小寫敏感的,其中一些行是必須要有的,有些是可選的,所有元素都必須以固定順序給出.固定的順序極大改善了 錯誤檢測,同時使得處理端設(shè)計更加簡單.

03

SIP簡介

SIP(Session Initiation Protocol), 是屬于應(yīng)用層的控制協(xié)議,主要用于在一個或多個參與者之間創(chuàng)建,修改和中止會話(sessions).會話的類型包括IP電話, 多媒體流分發(fā)和多媒體會議等.

SIP邀請(invitations)用于創(chuàng)建攜帶會話描述(如SDP信息)的會話,允許參與者使用一系列兼容的媒體類型. SIP使用一種叫代理服務(wù)器的元素來幫助對用戶當(dāng)前位置進行轉(zhuǎn)發(fā),對用戶進行驗證和授權(quán),并為用戶提供相應(yīng)的功能. SIP同時也提供了注冊函數(shù)以允許用戶上傳他們的當(dāng)前地址供代理服務(wù)器使用.SIP協(xié)議運行在多個不同的傳輸協(xié)議之上.

SIP支持5個方面來建立和中止多媒體會話:

用戶地址(User location): 決定了用來通訊的終端系統(tǒng).

用戶狀態(tài)(User availability): 決定了被呼叫端的是否愿意加入通訊.

用戶性能(User capabilities): 決定了多媒體類型和媒體使用的參數(shù).

會話建立(Session setup): “響鈴”,在呼叫端和被呼叫端建立起會話.

會話管理(Session management): 包括傳輸和中止會話,修改會話參數(shù)以及調(diào)用服務(wù).

SIP不是一個垂直集成的通訊系統(tǒng),而是作為一個組件與其他協(xié)議共同運作,如RTP等實時傳輸協(xié)議等.另外SIP不提供服務(wù), 只提供可以用來實現(xiàn)各種服務(wù)的原語.比如,SIP可以定位用戶并且傳輸一個不透明的對象到其當(dāng)前地址.如果這個原語用來 傳輸SDP,終端就能得知會話的一些參數(shù);如果同樣的原語用來傳輸一張照片,那也可以實現(xiàn)一種”顯示來電者頭像”的服務(wù). 由此可見,一種原語通常用來實現(xiàn)多種不同的服務(wù)。

SIP協(xié)議結(jié)構(gòu)

SIP是一個分層的協(xié)議,這意味著其行為由一系列同級但獨立的段(stage)描述. SIP的最底層為語法和編碼,其中編碼由 BNF語法(Backus-Naur Form grammar)指定; SIP第二層為為運輸層(transport la yer),定義了客戶端和服務(wù)端如何發(fā)送和接收 請求和響應(yīng);第三層為事務(wù)層(transa cti on layer),事務(wù)層是SIP的基礎(chǔ)組件,一次事務(wù)包括發(fā)送的請求和對應(yīng)的響應(yīng), 事務(wù)層處理應(yīng)用層的重傳,請求/響應(yīng)匹配和超時等;事務(wù)層之上稱為事務(wù)用戶(TU, transaction user),每個SIP 實體(除了無狀態(tài)的代理),都是一個TU.

所有的SIP元素,包括用戶客戶端(UA C),服務(wù)器(UAS),無狀態(tài)(stateless)或者全狀態(tài)(stateful)的代理, 以及注冊商,都包含一個區(qū)分彼此的內(nèi)核(core). 其中除了無狀態(tài)的代理,其他元素的內(nèi)核都是事務(wù)用戶. UAC和UAS的內(nèi)核行為依賴于方法,對于所有方法有一些通用規(guī)則,這里不細(xì)說. 對于UAC而言,這些規(guī)則支配 著請求報文的構(gòu)造.

04

總結(jié)

本專題到此告一個段落, 其中有很多細(xì)節(jié)都沒有深入, 如果要根據(jù)協(xié)議來設(shè)計實際的應(yīng)用,還是需要仔細(xì)看一遍RFC協(xié)議鏃的原文.

基于P2P通信的去中心化,一直是個很令人振奮的話題,無論是在信息技術(shù)上,還是在金融,政治上,都有無限潛力,了解作為區(qū)塊鏈基礎(chǔ)的P2P通信是學(xué)習(xí)區(qū)塊鏈的必經(jīng)之路。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容