




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1、SIP協(xié)議介紹Internet的許多應(yīng)用都需要建立和管理一個會話,會話在這里的含義是在參與者之間的數(shù)據(jù)的交換。由于考慮到參與者的實際情況,這些應(yīng)用的實現(xiàn)往往是很復(fù)雜的:參與者可能是在代理間移動,他們可能可以有多個名字,他們中間的通訊可能是基于不同的媒介(比如文本,多媒體,視頻,音頻等)有時候是多種媒介一起交互。人們創(chuàng)造了無數(shù)種通訊協(xié)議應(yīng)用于實時的多媒體會話數(shù)據(jù)比如聲音,影像,或者文本。本SIP(會話初始協(xié)議)和這些協(xié)議一樣,同樣允許使用Internet端點(用戶代理)來尋找參與者并且允許建立一個可共享的會話描述。為了能夠定位精確的會話參與者,并且也為了其他的目的,SIP允許創(chuàng)建基礎(chǔ)的net
2、work hosts(叫做代理服務(wù)器),并且允許終端用戶注冊上去,發(fā)出會話邀請,或者發(fā)出其他請求。SIP是一個輕形的,多用途的工具,可以用來創(chuàng)建,修改和終止會話,它獨立運作于通訊協(xié)議之下,并且不依賴建立的會話類型。2、SIP協(xié)議功能概況SIP是一個應(yīng)用層的控制協(xié)議,可以用來建立、修改、和終止多媒體會話(或者會議)例如Internet 電話。SIP也可以邀請參與者參加已經(jīng)存在的會話,比如多方會議。媒體可以在一個已經(jīng)存在的會話中方便的增加(或者刪除)。SIP顯示的支持名字映射和重定向服務(wù),這個用于支持個人移動業(yè)務(wù)用戶可以使用一個唯一的外部標志而不用關(guān)系他們的實際網(wǎng)絡(luò)地點。SIP在建立和維持終止多媒
3、體會話協(xié)議上,支持5個方面:用戶定位: 檢查終端用戶的位置,用于通訊。用戶有效性:檢查用戶參與會話的意愿程度。用戶能力:檢查媒體和媒體的參數(shù)。建立會話:”ringing”,建立會話參數(shù)在呼叫方和被叫方。會話管理:包括發(fā)送和終止會話,修改會話參數(shù),激活服務(wù)等等。SIP不是一個垂直集成的通訊系統(tǒng)。SIP可能叫做是一個部件更合適,它可以用作其他IETF協(xié)議的一個部分,用來構(gòu)造完整的多媒體架構(gòu)。比如,這些架構(gòu)將會包含實時數(shù)據(jù)傳輸協(xié)議(RTP)(RFC 1889)用來傳輸實時的數(shù)據(jù)并且提供QoS反饋,實時流協(xié)議(RSTP)(RFC 2326)用于控制流媒體的的傳輸,媒體網(wǎng)關(guān)控制協(xié)議(MEGACO)(RF
4、C 3015)用來控制到公共電話交換網(wǎng)(PSTN)的網(wǎng)關(guān),還有會話描述協(xié)議(SDP)(RFC 2327)用于描述多媒體會話。因此,SIP應(yīng)該和其他的協(xié)議一起工作,才能提供完整的對終端用戶的服務(wù)。雖然基本的SIP協(xié)議的功能組件并不依賴于這些協(xié)議。SIP本身并不提供服務(wù)。但是,SIP提供了一個基礎(chǔ),可以用來實現(xiàn)不同的服務(wù)。比如,SIP可以定位用戶和傳輸一個封裝好的對象到對方的當(dāng)前位置。并且如果我們利用這點來通過SDP傳輸會話的描述,立刻,對方的用戶代理可以得到這個會話的參數(shù)。如果我們用這個像傳輸會話描述(SESSION DESCRIPTION SD)一樣呼叫方的照片,一個”呼叫ID”服務(wù)很容易就建
5、立了。這個簡單的例子說明了,SIP作為一個基礎(chǔ),可以在其上提供很多不同的服務(wù)。SIP并不提供會議控制服務(wù)(比如議席控制或者投票系統(tǒng)),并且并沒有建議會議應(yīng)該則那樣管理??梢酝ㄟ^在SIP上建立其他的會議控制協(xié)議來發(fā)起一個會議。由于SIP可以管理參與會議的各方的會話,所以會議可以跨異構(gòu)的網(wǎng)絡(luò),SIP 并不能,也不打算提供任何形式的網(wǎng)絡(luò)資源預(yù)留管理。安全對于提供的服務(wù)來說特別重要。要達到理想的安全程度,SIP提供了一套安全服務(wù),包括防止拒絕服務(wù),認證服務(wù)(用戶到用戶,代理到用戶),完整性保證,加密和隱私服務(wù)。SIP可以基于IPV4也可以基于IPV63、術(shù)語在這個文檔中,關(guān)鍵詞”必須”,”不允許”,”
6、要求”,”可以”,”不可以”,”應(yīng)該”,”不應(yīng)該”,”建議”,”不建議”,”可能”,”可選” 是根據(jù)BCP14,RFC 21192的規(guī)范描述SIP實現(xiàn)需要的不同層次4、實施概覽這節(jié)通過簡單的示例介紹了SIP的基本實現(xiàn)。本節(jié)是通過自然的而非正則的示例來介紹的。第一個例子說明了SIP的基本功能:定位一個斷點,發(fā)出通訊請求,通過協(xié)商會話參數(shù)建立會話,拆卸剛才建立的會話。圖一表示一個典型的Alice和Bob兩個用戶間的SIP消息交易交換例子.(每一個消息采用字母”F”和一個用來指向正文的一個數(shù)字做標記)在這個例子里,Alice在她的PC上使用一個SIP的應(yīng)用程序(比如說一個軟的電話),呼叫Bob在In
7、ternet上的一個SIP電話。這個例子也掩飾了兩個SIP代理之間,怎樣為Alice和Bob建立會話連接。This typical arrangement is often referred to as the SIP trapezoid as shown by the geometric shape of the dotted lines in Figure 1.Alice 通過Bob的SIP標志 “呼叫” Bob,這個SIP標志是統(tǒng)一分配的資源(Uniform Resource Identifier URI)稱作SIP URI。SIP URI在19.1節(jié)中定義。它很像一個email抵制,典
8、型的SIP URI包括一個用戶名和一個主機名。在這個范例中,SIP URI是sip:,是Bob的SIP服務(wù)提供商。Alice有一個SIP URI: sip:。 Alice可以輸入Bob的URI,也可以直接在地址本的一個超級鏈接上點擊一下Bob的URI。SIP也提供保密URI,稱作SIPS URI。例如:sips:。 一個基于SIPS URI的通話保證這個通話是安全的,并且對呼叫者和被叫的所有的SIP消息是加密傳輸?shù)模ń凶鯰LS)。在TLS中,請求是通過加密方式傳輸給被叫方,但是這個加密機制是
9、基于被叫方宿主服務(wù)器的實現(xiàn)的。SIP是基于一個類似HTTP協(xié)議的請求應(yīng)答的通訊模式。每一個通訊都包含對某個功能的請求,并且起碼需要一個應(yīng)答。在這個應(yīng)答中,Alice的軟電話發(fā)送一個含有Bbo的SIP URI抵制的INVITE通訊請求。INVITE是一個SIP請求的例子,表示請求方(Alice)希望服務(wù)方(Bob)應(yīng)答。INVTE請求包含一系列的包頭域(Header fields)。包頭中包含很多屬性并且包含了傳輸消息的附加信息。在INVITE中有如下的字段:呼叫的唯一標志,目的抵制,Alice的地址,Alice和Bob建立會話的類型。INVITE請求(圖1中的F1)可能看起來像這樣的:INVI
10、TE sip: SIP/2.0Via: SIP/2.0/UDP ;branch=z9hG4bK776asdhdsMax-Forwards: 70To: Bob From: Alice ;tag=Call-ID: CSeq: INVITEContact: Content-Type: application/sdpContent-Length: 142(Alices SDP not shown) . . . . proxy proxy .
11、.Alices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bobssoftphone SIP Phone| | | | INVITE F1 | |-| INVITE F2 | | 100 Trying F3 |-| INVITE F4 |-| 180 Ringing F6 | 180 Ringing F7 |-| 180 Ringing F8 |-| 200 OK F9 |-| 200 OK F10 |-| 200 OK F11 |-| | Media Sessio
12、n | BYE F13 |圖一:SIP矩形表達的SIP會話建立例子。在文本消息的第一行,包含了請求的類型(INVITE)。在這行之后的是這個請求的頭域。這個例子中包含了最少需要的頭域集合。簡單介紹一下:VIA域包含了Alice接收發(fā)送請求的服務(wù)器地址()。同樣這個包含了一個分支參數(shù)來標志Alice和這個服務(wù)器的會話事務(wù)。TO域包含了顯示姓名(Bob)和一個SIP或者SIPS URI(sip:)請求將首先傳輸?shù)竭@個URI中。顯示姓名(Display names)在RFC 2822中描述。From域也同樣包含一個顯示姓名(Alice)和一個
13、SIP或者SIPS URI(sip:)這個URI用來標志請求的原始發(fā)起者。這個域也包含了一個TAG參數(shù),這個TAG參數(shù)是一個隨機字串(),是軟電話(softphone)在URI上增加的一個隨機串。用來做標志用途的。Call_ID包含一個全局的唯一標志,用來唯一標志這個呼叫,通過隨機字串和softphone的自己名字或者IP抵制混和產(chǎn)生的。通過TO TAG, FROM TAG和CALL-ID完整定義了Alice和Bob之間的端到端的SIP關(guān)系,并且表示這個是一個對話性質(zhì)的關(guān)系。CSEQ或者Command Sequence包含了一個整數(shù)和一個請求名字。這個Cseq數(shù)
14、字是順序遞增的。每當(dāng)對話中發(fā)起一個新的請求都會引起這個數(shù)字的順序遞增。Contact域包含一個SIP或者SIPS URI用來表示訪問Alice的直接方式,通常由用戶名和一個主機的全名(Fully Qualified Domain Name FQDN)組成。當(dāng)FQDN作為首選的時候,許多終端用戶由于不會由名字登記(而導(dǎo)致不能訪問Alice的主機),所以IP地址是可選的。VIA域告訴大家本請求發(fā)送到哪里并且應(yīng)答到哪里,Contract域告訴大家將來的請求將發(fā)送到哪里(奇怪不是Alice發(fā)起的么,將來的請求應(yīng)該是Bob才對啊)。Max-Forwards:最大轉(zhuǎn)發(fā)數(shù)量限制了通訊中轉(zhuǎn)發(fā)的數(shù)量。它是由一個
15、整數(shù)組成,每轉(zhuǎn)發(fā)一次,整數(shù)減一。Contenttype包含了消息正文的描述(消息正文在本范例中沒有列出)Content-length:包含消息正文的長度(字節(jié)數(shù))完整的SIP包頭域的定義在20節(jié)。會話的細節(jié),比如媒體的類型,codec,或者采樣速率,沒有通過SIP來描述。這個可以通過SIP的消息正文來描述,可以通過其他定義的協(xié)議在正文中進行描述。有一種是會話描述協(xié)議(Session Descripotion Protocol SDP)(RFC23271)。這個SDP消息(沒有在例子中列出)通過SIP的消息中傳送,就像通過附件發(fā)送EMAIL一樣,或者說通過HTTP傳輸?shù)木W(wǎng)頁一樣。由于softph
16、one并不知道bob或者bob的sip服務(wù)器在哪里,所以softphone發(fā)送INVITE請求到Alice的sip服務(wù)器,。這個 SIP服務(wù)器應(yīng)該已經(jīng)在Alice的softphone中配置了,或者可以通過DHCP獲得。 SIP服務(wù)器是一臺代理服務(wù)器。代理服務(wù)器接收SIP請求并且根據(jù)請求轉(zhuǎn)發(fā)。在這個例子中,代理服務(wù)器接收到INVITE請求,并且回送一個100(Trying)應(yīng)答給Alice的softphone。100(Trying)應(yīng)答表示INVITE請求已經(jīng)收到,并且代理服務(wù)器正在轉(zhuǎn)發(fā)INVITE請求。SIP
17、的應(yīng)答是通過一個三位數(shù)的數(shù)字表示的。SIP應(yīng)答同樣包含TO、FROM、Call-ID,CSEQ和在VIA中的分支參數(shù),這個參數(shù)使得Alice的softphone可以把請求和應(yīng)答關(guān)聯(lián)起來。代理服務(wù)器收到INVITE請求之后,就去找可能通過DNS服務(wù)來找提供這個的SIP服務(wù)器。這在4中有描述。最后,轉(zhuǎn)發(fā)INVITE請求到或者能到達的代理服務(wù)器。在轉(zhuǎn)發(fā)請求之前,代理服務(wù)器會在via頭上增加一個一段包含自己抵制的值(INVITE已經(jīng)包含了Alice的的地址VIA域)。biloxi
18、.com代理服務(wù)器收到這個INVITE請求并且返回一個100(Trying)應(yīng)答給代理服務(wù)器標志這它已經(jīng)收到這個請求并且正在處理這個請求。這個代理服務(wù)器通過查詢數(shù)據(jù)庫,通常叫做地址服務(wù),這個服務(wù)中包含了bob的當(dāng)前ip地址。(我們在下一節(jié)可以看到這個數(shù)據(jù)庫是怎么回事)代理服務(wù)增加另一段包含自己地址的VIA頭域并且發(fā)送它到bob的sip 電話。Bob的SIP電話接收到INVITE請求并且提醒bob有一個從Alice的呼入,這樣bob可以決定是否響應(yīng)這個呼入。這個意思就是:bob的電話響了。bob的sip電話發(fā)送一個180(Ringing)回應(yīng),這個回應(yīng)減
19、通過兩個代理服務(wù)器原路返回給Alice。每一個代理服務(wù)器通過via頭域決定該把這個應(yīng)答發(fā)送給哪里,并且在發(fā)送之前把自己的地址從頭上拿走。雖然DNS和定位服務(wù)在路由最初的INVITE請求,180(ringing)響應(yīng)可以簡單返回給發(fā)起者而不需要查找發(fā)起者在哪里,并且不需要在代理服務(wù)器保留狀態(tài),同時,每一個轉(zhuǎn)發(fā)INVITE的代理也可以得到INVITE的每一個應(yīng)答,這樣的特性也非常有用。當(dāng)Alice的softphone收到180(Ringing)應(yīng)答的時候,它提示Alice,可能是通過一個回鈴音,或者屏幕上的一個消息提示。在這個例子中,Bob決定響應(yīng)這個呼叫。當(dāng)他拿起電話,他的SIP電話發(fā)送200(
20、OK)回應(yīng)給發(fā)送者,表示這個電話已經(jīng)接起來了。這個200(OK)包含了一個消息體,這個消息體包含SDP媒體描述,這個媒體描述包含Bob希望和Alice建立何種媒體連接。同樣,SDP消息也是兩段交換:Alice發(fā)送一個給Bob,Bob發(fā)送一個回給Alice。這個兩段的交換提供基本的兼容性協(xié)商,并且基于簡單的SDP提出/應(yīng)答交換模型。如果Bob不想響應(yīng)這個呼叫或者正在響應(yīng)別的呼叫,一個錯誤的響應(yīng)會代替正常的200(OK)回送出去,這樣,就不會有連接建立。SIP完整的返回代碼在21節(jié)有介紹。Bob發(fā)出的200(OK)(圖一的F9消息)可能長得像這樣的:SIP/2.0 200 OKVia: SIP/2
21、.0/UDP ;branch=z9hG4bKnashds8;received=Via: SIP/2.0/UDP ;branch=z9hG4bK77ef4c.1;received=Via: SIP/2.0/UDP ;branch=z9hG4bK776asdhds ;received=To: Bob ;tag=a6c85cfFrom: Alice ;tag=Call-ID: a84b4c76e66710pc33.atlanta
22、.comCSeq: INVITEContact: Content-Type: application/sdpContent-Length: 131(Bobs SDP not shown)應(yīng)答的第一行包含了應(yīng)答代碼(200)和原因(ok)。剩下的行包含了包頭域。VIA,TO,FROM,CALL-ID,Cseq包頭域是從INVITE請求包中直接拷貝過來的。(有三個VIA域值一個是Alice SIP電話增加的,一個是代理加的,一個是代理加的)。Bob的SIP電話增加了一個TAG參數(shù)。這個TAG參數(shù)會被參與對話的各方所使用,并且在以后的對話中被使用。Contr
23、act域包含了一個能直接聯(lián)系到Bob的URI。Contenttype和Content_Length域包含了消息體(沒有在例子中體現(xiàn)),這個消息體里邊是Bob的SDP媒體信息。除了DNS和位置服務(wù)之外,代理服務(wù)器可以自主決定路由,也就是說自己決定應(yīng)該向哪里轉(zhuǎn)發(fā)請求。比如,如果Bob的SIP電話返回一個486(電話正忙)信號,這個代理服務(wù)器可以轉(zhuǎn)發(fā)這個INVITE請求到Bob的語音郵箱服務(wù)器。一個代理服務(wù)器可以同時向N個地方發(fā)送INVITE請求。這種并發(fā)尋找就是傳說中的分流(forking)。在這個例子中,200(OK)應(yīng)答通過兩個代理并且發(fā)送到Alice的softphone上
24、,Alice的softphone收到這個應(yīng)答,停止振鈴,并且標志電話Bob已經(jīng)接聽。最后,Alice的電話發(fā)送一個確認消息,ACK,到Bob的SIP電話來確認接收到了這個最后的200(ok)應(yīng)答。在這個例子中,ACK信號是直接由Alice的softphone發(fā)送到Bob的SIP phone上,跨過了兩個代理服務(wù)器。這是因為兩個端點(Alice和Bob)通過INVITE/200(OK)的請求應(yīng)答包中的Contact包頭域都知道互相之間的地址了,這個地址是最開始發(fā)起INVITE請求的時候所不知道的。所以,不需要兩個代理服務(wù)器再查找對方的地址了,所以代理服務(wù)器不參與接下來的通話流了。這就完成了一個完
25、整的使用INVITE/200/ACK 三方握手來建立SIP會話的過程。會話建立過程中的細節(jié)描述再13節(jié)由描述。現(xiàn)在,Alice和Bob的媒體會話開始了,他們通過發(fā)送剛才建立會話所交換的SDP包中約定的互相明白的媒體包來進行會話。一般情況下,端到端的媒體包和SIP信號控制包通過不同的通訊路徑來發(fā)送。在會話中,Alice或者Bob都可以改變他們自己的媒體會話屬性。這個可以通過發(fā)送一個包含新媒體屬性描述的re-INVITE請求來完成。這個re-INVITE是捆綁在一個現(xiàn)有的會話的,這樣參與會話的對方可以明白這是要改變現(xiàn)有的會話屬性而不是新建立一個會話。對方收到這個re-INVITE請求后,會發(fā)送一個
26、200(OK)應(yīng)答表示接受這個改變。請求方通過一個ACK來表示接受了對方的這個200(OK)應(yīng)答。如果對方不同意這個媒體屬性變化,他會發(fā)送一個錯誤的應(yīng)答比如488(暫時不能進行),這個也會收到發(fā)起者的一個ACK響應(yīng)。不管怎樣,就是是re-INVITE的失敗也不會影響到現(xiàn)有的會話原有的會話還可以用上次的媒體會話屬性繼續(xù)??梢栽?4節(jié)找到會話屬性更改的細節(jié)說明。在通話結(jié)束的時候,Bob首先斷開(掛機hangs up),并且發(fā)送一個BYE的消息。這個BYE的消息將直接送到Alice的softphone,同樣是跳過代理的。Alice通過發(fā)送200(OK)應(yīng)答來確認收到了這個BYE消息,這個消息終止了會
27、話并且應(yīng)答了BYE的請求。ACK在這里不需要發(fā)送一個ACK信號只在響應(yīng)一個INVITE的響應(yīng)的時候被發(fā)送。我們稍晚一點會討論這個INVITE的特別處理,但是基于SIP的可靠性的機制,一個通話的時間可以認為包含電話振鈴和掛機的時間(but relate to the reliability mechanisms in SIP, the length of time it can take for a ringing phone to be answered, and forking.)基于這樣的原因,SIP請求的處理通常根據(jù)是否INVITE請求進行分類,INVITE類和非INVITE類請求分開處
28、理。結(jié)束會話的細節(jié)可以在15節(jié)查到。24.2節(jié)描述了圖1中使用的全部消息詳細解釋。在某些情況下,所有會話中的包都繼續(xù)通過代理轉(zhuǎn)發(fā)會很有用。比如,如果代理服務(wù)器希望在INVITE之后繼續(xù)保持SIP消息流,他會在INVITE中增加一個頭域(Record-Route)包含一個URI指向這個代理服務(wù)器的hostname或者IP地址。這個消息會被Bob的SIP電話和Alice的softphone所接到(因為Record-Route頭域?qū)⒃?00(OK)應(yīng)答中被送回),并且在會話中一直保存。那么代理服務(wù)器就可以繼續(xù)接收和轉(zhuǎn)發(fā)ACK,BYE,給BYE的200(OK)應(yīng)
29、答。每一個代理都可以單獨決定是否接收INVITE以后的后續(xù)消息,并且這些后續(xù)消息都可以被發(fā)送到那些決定接收后續(xù)消息的代理服務(wù)器。這種情況通常發(fā)生在提供mid-call業(yè)務(wù)的代理服務(wù)器上。登記服務(wù)是另一個常用的SIP操作。登記服務(wù)是代理服務(wù)器知道Bob當(dāng)前地址的一個方法。在初始化的時候,或者每隔一段時間,Bob的SIP 電話發(fā)送REGISTER消息給的一個注冊服務(wù)器。REGISTER消息包含了Bob當(dāng)前登陸服務(wù)器的SIP或者SIPS的URI(sip:)(轉(zhuǎn)換成為Contact域中的SIP或者SIPS URI)。登記服務(wù)器登記這個映
30、射,這個叫做綁定(binding),寫到一個數(shù)據(jù)庫里邊,叫做定位服務(wù)(location service),這個數(shù)據(jù)庫可以被的代理服務(wù)器使用。通常登記服務(wù)器和代理服務(wù)器是做在一起的。一個很重要的概念就是SIP服務(wù)器的差別在邏輯上,并非在物理上的差別。Bob并沒有限定非得在一個單個設(shè)備上發(fā)起注冊。比如,他家里的SIP電話和公司的SIP電話都可以注冊。這些消息在定位服務(wù)(location service)中保存,并且允許代理服務(wù)器通過不同的手段查找Bob。同樣的,不同的用戶也可以在同一個設(shè)備上同時注冊。定位服務(wù)(location service)是一個邏輯概念。他是讓代理服務(wù)通過
31、輸入一個URI來查詢到底應(yīng)該向哪里轉(zhuǎn)發(fā)請求??梢院唵瓮ㄟ^用戶注冊來建立這個定位服務(wù)所需要的資料,也可以通過其他方法??梢酝ㄟ^其他任意的地址映射方式來實現(xiàn)定位服務(wù)。最后在SIP中需要注意的是,注冊服務(wù)只是用來提供路由收到的SIP請求的,它并不做請求的身份認證的判定。在SIP中授權(quán)和認證可以通過建立在基于請求/應(yīng)答的模式上的上下文相關(guān)的請求來實現(xiàn),也可以使用更底層的方式來實現(xiàn)(具體在26節(jié)有描述)。完整的注冊SIP消息描述例子在24.1節(jié)。其他SIP的操作,比如檢查SIP服務(wù)器的負載,或者使用客戶端使用可選項(OPTIONS),或者用CANCEL取消一個未決的請求,在后續(xù)的章節(jié)中會介紹。5、協(xié)議的
32、結(jié)構(gòu)SIP是一個分層的協(xié)議,意思是說SIP協(xié)議由一組相當(dāng)無關(guān)的處理層次組成,這些層次之間只有松散的關(guān)系。協(xié)議分成不同層次來描述是為了能夠更清晰的表達,在同一個小節(jié)里有功能的公共要素的交叉描述。本協(xié)議并沒有規(guī)定一個具體的實現(xiàn)。當(dāng)我們說一個要素”包含”某一個層,我們的意思是這個要素復(fù)核這個層定義的規(guī)則。不是SIP每一個要素都一定包含每一個層。此外,SIP定義的要素是邏輯上的要素,不是物理要素。一個物理的實現(xiàn)可以實現(xiàn)不同的邏輯要素,或許甚至是基于串行事務(wù)處理原理。SIP最底層的是它的語法和編碼層。編碼方式是采用擴展的Backus-Naur Form grammar(BNF范式)。完整的BNF描述在2
33、5節(jié);第7節(jié)有簡要的SIP消息結(jié)構(gòu)描述。第二層是傳輸層。它定義了一個客戶端如何發(fā)送請求和接收應(yīng)答,以及一個服務(wù)器如何接收請求和發(fā)送應(yīng)答。所有的SIP要素都包含一個通訊層。第18節(jié)有通訊層的描述。第三層是事務(wù)層。事務(wù)是SIP的基本組成部分。一個事務(wù)是客戶發(fā)送的一個請求事務(wù)(通過通訊層)發(fā)送到一個服務(wù)器事務(wù),連同服務(wù)器事務(wù)的所有的該請求的應(yīng)答發(fā)送回客戶端事務(wù)。事務(wù)層處理應(yīng)用服務(wù)層的重發(fā),匹配請求的應(yīng)答,以及應(yīng)用服務(wù)層的超時。任何一個用戶代理客戶端(user agent client UAC)完成的事情都是由一組事務(wù)構(gòu)成的。有關(guān)事務(wù)的討論在第17節(jié)有描述。用戶代理包含一個事務(wù)層,來實現(xiàn)有狀態(tài)的代理服
34、務(wù)器。無狀態(tài)的代理服務(wù)器并不包含事務(wù)層。事務(wù)層包含一個客戶元素(可以認為是一個客戶事務(wù))和一個服務(wù)器元素(可以認為是一個服務(wù)器事務(wù)),他們都可以用一個有限狀態(tài)機來處理特定的請求。在事務(wù)層之上是事務(wù)用戶(TU)。每一個SIP實體,除了無狀態(tài)代理,都是一個事務(wù)用戶。當(dāng)一個TU發(fā)出一個請求,它首先創(chuàng)建一個客戶事務(wù)實例(client transaction instance)并且和請求一起發(fā)送,這包括了目標IP地址、端口號、以及發(fā)送請求的設(shè)備。TU可以創(chuàng)建客戶事務(wù),也可以取消客戶事務(wù)。當(dāng)客戶取消一個事務(wù),它請求服務(wù)器終止正在處理的事務(wù),并且回滾狀態(tài)到該事務(wù)開始前的狀態(tài),并且產(chǎn)生指定的該事務(wù)的錯誤報告。
35、這是由CANCEL請求完成的,這個請求有自己的事務(wù),并且包含一個被取消的事務(wù)(第9節(jié))。SIP要素,包含,用戶代理客戶端和服務(wù)器,無狀態(tài)和有狀態(tài)代理服務(wù)器和注冊服務(wù)器,包含一個可以互相區(qū)別的核心(Cores)。Cores,除了無狀態(tài)代理服務(wù)器,都是事務(wù)用戶。UAC(用戶代理客戶端)和UAS(用戶代理服務(wù)端)的cores的行為依賴于實現(xiàn),對所有的實現(xiàn)來說,有幾個公共的原則(第8節(jié))。對UAC來說,這些規(guī)則約束請求的建立;對UAS來說,這些規(guī)則約束請求的處理和應(yīng)答。由于注冊服務(wù)在SIP中是一個重要的角色,所以UAS處理REGISTER請求有一個特別的名字:登記員(registrar,登記服務(wù)器)。
36、第10節(jié)描述了UAC和UAS的對REGISTER實現(xiàn)的core(核心)行為。第11節(jié)描述了OPTIONS的UAC和UAS的core實現(xiàn),這個OPTIONS用來檢測UA的處理能力的(UA-user agent)。在對話中,有其他的相關(guān)會被發(fā)送。一個對話是一個持續(xù)一定時間的兩個用戶之間的端到端的SIP關(guān)系。對話過程要求兩個用戶代理之間的信息是有序的而且請求被正確路由傳輸?shù)?。在這個規(guī)范中,只有INVITE請求可以用來建立會話。當(dāng)一個UAC在一個對話中發(fā)出請求的時候,它不僅遵循第8節(jié)描述的一般UAC規(guī)則而且也遵循對話中的請求規(guī)則。第12節(jié)講述了對話并且討論了對話的創(chuàng)建和維持,以及在對話中創(chuàng)建一個請求。
37、SIP中最重要的方法就是INVITE方法,它用來在不同的參與者中創(chuàng)建會話使用。一個會話由一組參與者,他們之間用于交流的媒體流組成。第13節(jié)講述了這些會話的創(chuàng)建初始化過程,以及創(chuàng)建一個或一組對話。第14節(jié)講述了在對話中使用INVITE請求來改變會話的屬性。最后,第15節(jié),講述了如何終止會話。第8、10、11、12、13、14、15節(jié)講述了完整的UA核心(第9節(jié)描述了取消,在UA核心和代理核心中使用)。第16節(jié)講數(shù)了代理服務(wù)器,代理服務(wù)器用于在兩個UA之間做消息路由使用。6、協(xié)議的定義以下講述的名次對SIP有著額外的意義:Address-of-Record: 記錄地址。一個address-of-r
38、ecord(AOR)是一個SIP或者SIPS URI它指向了一個具有定位服務(wù)的主機,這個主機可以把URI映射成為用戶真正物理位置的URI。通常情況下,定位服務(wù)器是通過登記服務(wù)來建立的。一個AOR經(jīng)常被認為是一個用戶的”公共地址”Back-to-Back UserAgent:背對背的用戶代理(B2BUA)是一個邏輯實體,它就像用戶代理服務(wù)器(UAS)一樣接收和處理請求。為了決定該如何應(yīng)答一個請求,B2BUA就像UAC一樣工作,并且發(fā)出請求。但是它不像代理服務(wù)器(proxy),它維持對話狀態(tài),并且參與已經(jīng)建立的對話中的每一個請求。由于它是直接的UAC和UAS的串連,所以,不需要對他有額外的定義。C
39、all:呼叫,一個呼叫是一個非正式的術(shù)語,它是指在端點之間一個一些通訊行為,通常用于建立多媒體對話。Call Leg: 對話的別名;在本規(guī)范中沒有使用。Call Stateful: 如果一個代理服務(wù)器(proxy)保存一個對話的狀態(tài)(從最開始的INVITE到對話終結(jié)的BYE),那么這個代理服務(wù)器就是請求有狀態(tài)的。一個請求有狀態(tài)(call stateful)的代理服務(wù)器也一定是事務(wù)有狀態(tài)的,但是事務(wù)有狀態(tài)的不一定是請求有狀態(tài)的。Client:客戶端。一個客戶端是一個任意的網(wǎng)絡(luò)元素,它發(fā)出SIP請求和接收SIP應(yīng)答??蛻舳丝赡軙部赡懿粫腿私换ァS脩舸砜蛻舳耍║AC)和代理服務(wù)器都是客戶端。C
40、onference: 一個包含多個參與方的多媒體會話(見后)。Core:核心。核心定義了SIP實體的特定類別。比如定義了一個有狀態(tài)和無狀態(tài)的代理服務(wù)器,一個用戶代理或者注冊服務(wù)器(registrar)。所有的核心,除了無狀態(tài)代理服務(wù)器,都是事務(wù)用戶。Dialog:對話,一個對話是持續(xù)一段時間的兩個UA之間的端到端的SIP關(guān)系。一個對話由SIP消息建立,就像用2xx響應(yīng)INVITE請求。我們用Call identifier,local tag(本地tag),remote tag(對方tag)來標志一個對話,一個對話在RFC 2543中被正式叫做CALL LEG.Downstream: 它是事務(wù)中
41、的消息傳遞方向。它特指從UAC到UAS的請求流的方向, Final Response:終結(jié)響應(yīng)。一個響應(yīng)終端SIP事務(wù)的應(yīng)答,和事務(wù)中間的臨時響應(yīng)相反。所有的2xx,3xx,4xx,5xx,6xx響應(yīng)都是終結(jié)響應(yīng)。Header:頭。頭域是在SIP消息頭部用來描述這個SIP消息信息的部分。它由一堆頭域字段組成。Header Field:頭域字段。頭域字段是在SIP消息頭域的字段。一個頭域字段可以由多個頭域字段行組成。一個頭域字段由一個頭域名和(零個或多個)頭域值組成。多個頭域值用,分割。某些頭域字段只能有單個值,比如結(jié)果域(result)就只能有一個值。Header Field Value:頭域
42、值。一個頭域值是一個單個的值,一個頭域字段可以有0個或者多個頭域值。Home Domain:宿主機。一個提供SIP服務(wù)的主機。一般指的是在登記服務(wù)中指明的記錄地址中的URI的主機。Informational Response:提示應(yīng)答。和臨時應(yīng)答一樣。Initiator, Calling Party, Caller: 用INVITE初始一個會話(和對話)的那方。一個caller從發(fā)出INVITE請求建立對話開始,到對話終止都一直是這個角色。Invitation: 一個INVITE請求。Invitee,Invited User,Called Party, Callee:被叫方。收到INVITE請
43、求并且建立會話的那方。一個被叫方從收到INVITE請求起,到終止INVITE建立的對話結(jié)束,都稱作被叫方。Location Service: 定位服務(wù)。定位服務(wù)是用來給SIP轉(zhuǎn)發(fā)或者代理服務(wù)器確定被叫方可能的位置使用的。它包含一張綁定了address-of-record的表,被叫方可能有0到多個記錄。綁定的記錄可以通過多種渠道添加和刪除;本規(guī)范定義了REGISTER方法來更新綁定表。Loop:環(huán)路。當(dāng)請求抵達一個代理服務(wù)器,代理服務(wù)器轉(zhuǎn)發(fā)這個請求,當(dāng)這個請求再次來到同一個代理服務(wù)器,就稱之為環(huán)路。當(dāng)?shù)诙蔚诌_的時候,RequestURI中包含了上次抵達的資料,并且由于并沒有什么東西可以改變轉(zhuǎn)發(fā)
44、的策略,這樣就導(dǎo)致這個請求還會再次被轉(zhuǎn)發(fā)回來。環(huán)路請求是錯誤的,所以,處理程序需要檢測和防止協(xié)議中出現(xiàn)的環(huán)路請求。Loose Routing:丟失路由。代理服務(wù)器在下述情況下會丟失路由。A proxy is said to be loose routing if it follows the procedures defined in this specification for processing of the Route header field. These procedures separate the destination of the request (present in t
45、he Request-URI) from the set of proxies that need to be visited along the way (present in the Route header field). A proxy compliant to these mechanisms is also known as a loose router.Message:消息。SIP元素之間傳送的協(xié)議數(shù)據(jù)就是消息。SIP消息既可以是請求也可以是應(yīng)答。Method:方法。方法是在服務(wù)器請求處理的主要功能。方法是請求消息自身攜帶的。典型的方法就是INVITE和BYE。Outbound
46、Proxy:對外代理服務(wù)器。一個代理服務(wù)器接收到客戶的請求,即使它不是由Request_URI所決定的服務(wù)器。通常一個UA會手工配置一個對外的代理服務(wù)器,或者可以通過一個自動配置的協(xié)議自動配置一個。Parallel Search: 并行搜索。并行搜索情況下,代理服務(wù)器會向多個用戶可能存在的地方發(fā)起請求,并且等待應(yīng)答。同串行搜索不同的地方是,并行搜索不會等待上一個請求應(yīng)答回來之后再發(fā)起下一個搜索,而是一個接一個的發(fā)起搜索請求。Provisional Response: 臨時應(yīng)答。服務(wù)器用來標志自己正在處理的應(yīng)答,但是本應(yīng)答并不結(jié)束一個SIP事務(wù)。1xx應(yīng)答就是臨時的,其他應(yīng)答標志著事務(wù)的結(jié)束。P
47、roxy,Proxy Server:代理、代理服務(wù)器。一個中間的實體。它本身即作為客戶端也作為服務(wù)端,為其他客戶端提供請求的轉(zhuǎn)發(fā)服務(wù)。一個代理服務(wù)器首先提供的是路由服務(wù),也就是說保證請求被發(fā)到更加”靠近”目標用戶的地方。代理服務(wù)器對某些強制政策有用(比如,確認一個用戶是否允許建立一個呼叫等)。一個代理服務(wù)器翻譯,并且,如果有需要的話,再轉(zhuǎn)發(fā)前會重寫請求消息。Recursion:回路、遞歸。一個客戶端,在響應(yīng)請求的時候產(chǎn)生新的到Contract包頭域的URI請求的時候,會在3xx響應(yīng)中陷入遞歸。A client recurses on a 3xx response when it generat
48、es a new request to one or more of the URIs in the Contact header field in the response.Redirect Server:重定向服務(wù)器。一個重定向服務(wù)器是一個產(chǎn)生3xx應(yīng)答的UAS服務(wù)器,指示客戶端連接別的URI。Registrar: 登記員。一個登記員(登記服務(wù)器)是一個接收REGISTER請求得服務(wù)器。他把請求得信息放到定位服務(wù)器中,這樣可以讓定位服務(wù)器很方便得查找位置信息。Regular Transaction:常規(guī)事務(wù)。凡不包含INVITE,ACK,或者CANCEL方法得事務(wù)就是常規(guī)事務(wù)。Reques
49、t: 請求。 一個由客戶端發(fā)到服務(wù)端得SIP信息,用于執(zhí)行特定得功能。Response:應(yīng)答。一個由服務(wù)端發(fā)到客戶端得SIP信息。用來標志從客戶端發(fā)往服務(wù)端得請求處理得情況得。Ringback: 回鈴音。回鈴音是一個信號音。是給呼叫方得一個信號表示被叫方正在振鈴(Ringing)。Route Set: 路由集。路由集合是一個順序得SIP或者SIPS URI。這些URI描述了傳遞一個請求所必須經(jīng)歷得代理列表。一個路由集可以是自適應(yīng)得,因為包頭中包含了Record-Route(記錄路由),也可以是依賴配置得到得。Server:服務(wù)器。一個server是一個網(wǎng)絡(luò)元素接收請求并且處理請求并且發(fā)送回應(yīng)給
50、請求方。典型得服務(wù)器就是代理服務(wù)器(proxies),用戶代理服務(wù)器(user agent servers),重定向服務(wù)器,登記服務(wù)器。Sequential Search:順序查找。在順序查找中,代理服務(wù)器順序嘗試聯(lián)系地址,在處理下一個之前必須等待上一個請求已經(jīng)有一個結(jié)束應(yīng)答。一個2xx或者6xx系列得最終應(yīng)答總是結(jié)束一個順序查找。Session:會話。根據(jù)SDP得描述:”一個多媒體會話是一個由多媒體發(fā)送方和接受方組成得集合,并且包括在發(fā)送方和接受方之間得數(shù)據(jù)流。一個多媒體會議是一個典型得多媒體會話?!?RFC 23271)(一個session在SDP訂一下可以是一個或者多個RTP sessi
51、no)。在定義中,一個被叫方可以被多次邀請,被不同得呼叫方邀請,到同一個會話。在SDP中,一個會話可以被SDP用戶名,session id,網(wǎng)絡(luò)類型,地址類型,地址元素得一個集合串所規(guī)定。SIP 事務(wù):一個SIP事務(wù)是在客戶端和服務(wù)端得事件,包括了從第一個由客戶端發(fā)送到服務(wù)端得請求,到最后一個(非1xx)服務(wù)端向客戶端發(fā)出得終結(jié)應(yīng)答。如果請求是一個INVITE請求,并且終結(jié)應(yīng)答是一個非2xx得應(yīng)答,那么事務(wù)還包括一個ACK給服務(wù)器做應(yīng)答。給INVITE請求的2xx應(yīng)答的ACK回應(yīng),是一個獨立的事務(wù)。Spiral:回溯。一個回溯是指一個SIP請求,路由給一個proxy,并且轉(zhuǎn)發(fā),但是又被路由回這
52、個proxy,但是不同于回路(遞歸)的是,這次路由回來的請求包的包頭中,包含了不同于原請求的請求包部分,使得本次proxy決定的路由轉(zhuǎn)發(fā)與上次不同。通常,這是說,請求的Request-URI不同于上次的Request_URI。一個回溯不是一個錯誤,不同于回路(環(huán)路loop)。通常導(dǎo)致這樣的現(xiàn)象是呼叫轉(zhuǎn)發(fā)(call forwarding)。一個用戶呼叫代理服務(wù)器轉(zhuǎn)發(fā)請求到Joe的PC,并且Joe的pc呼叫轉(zhuǎn)移到。這個請求被轉(zhuǎn)發(fā)回代理服務(wù)器??墒沁@個并不是一個環(huán)路(loop)。因為請求的目的地址變
53、成了另一個用戶,這就是回溯,是一個合法的情況。Stateful Proxy:有狀態(tài)的代理服務(wù)器。在邏輯上,有狀態(tài)的代理服務(wù)器就是處理一個請求的過程中,維持的一個本規(guī)范所定義的客戶端和服務(wù)端的事務(wù)狀態(tài)機。也是一個事務(wù)又狀態(tài)代理服務(wù)器(transaction stateful proxy)。具體的stateful proxy在第16節(jié)定義。一個(事務(wù))有狀態(tài)代理服務(wù)器和一個call stateful proxy不是一回事。Stateless Proxy:無狀態(tài)的代理服務(wù)器。在邏輯上,無狀態(tài)代理服務(wù)器在處理請求中,并不維持客戶和服務(wù)端的事務(wù)狀態(tài)機。一個無狀態(tài)的代理服務(wù)器直接轉(zhuǎn)發(fā)每一個接收到的請求和每
54、一個接收到的響應(yīng)。Strict Routing:嚴格路由。路由處理規(guī)則如果復(fù)核RFC2543協(xié)議(and many prior work in progress versions of this RFC) 就是一個嚴格路由。在這個規(guī)則下,如果在包頭中包含Route域,那么代理服務(wù)器就會刪除Request_URI域內(nèi)容。本文檔并不要求一定要有嚴格路由,本文檔只要求松散路由就可以了。支持嚴格路由的代理服務(wù)器也叫嚴格路由器。Target Refresh Request: 目標刷新請求。一個Target Refresh Request是一個在對話中發(fā)出的請求,用來更改對話目標的請求。Transacti
55、on User(TU):事務(wù)用戶。在transaction 層之上的協(xié)議層。TU包括了UAC 核心,UAS core,和proxy core。Upstream:上行流。一個在事務(wù)中的消息流向方向。它是指由用戶代理服務(wù)器(UAS)發(fā)出應(yīng)答到用戶代理客戶端(UAC)的消息流向方向。URL-encoded:一串根據(jù)RFC23962.4節(jié)編碼的字符。User Agent Client(UAC):用戶代理客戶端。用戶代理客戶端是一個邏輯的概念,他創(chuàng)建一個新請求,并且用客戶事務(wù)狀態(tài)機發(fā)送這個請求。UAC角色只在事務(wù)中存在。換句話說,UAC就是一小段代碼初始化一個請求,并且在事務(wù)中遵循UAC的規(guī)則。如果它接下來收到一個請求,那么在那個事務(wù)中,它就是作為UAS來處理請求。UAC Core:UAC核心。在transaction和transport層之上得UAC實現(xiàn)的功能集合。User Agent Server(UAS): 用戶代理服務(wù)器.UAS是一個邏輯的實體,對SIP請求做響應(yīng)的。應(yīng)答接受、拒絕、或者轉(zhuǎn)發(fā)對應(yīng)的請求。UAS角色在事務(wù)中存在。換句話說
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療銷售咨詢合同范本
- 供應(yīng)商尾款合同范本
- 北京拆遷合同范本
- 單人旅游合同范本
- 單位郊區(qū)租房合同范本
- 丟車包賠協(xié)議合同范本
- 單位電線更換維修合同范例
- 醫(yī)藥調(diào)查項目合同范本
- 出錢經(jīng)營合同范本
- 農(nóng)業(yè)種植股合同范本
- 學(xué)校食堂食品安全主體責(zé)任風(fēng)險管控清單(日管控)
- 肛瘺患者的護理查房
- 2023-2024學(xué)年河北省涿州市實驗中學(xué)中考數(shù)學(xué)模試卷含解析
- 初中美術(shù)備課組工作計劃
- 國防動員教案
- 湖北省武漢市江岸區(qū)2024年七年級下學(xué)期期末數(shù)學(xué)試題附答案
- 2024-2034年中國藏香豬養(yǎng)殖行業(yè)市場深度分析及發(fā)展?jié)摿︻A(yù)測報告
- 罪犯個性分測驗
- 辦公室職業(yè)健康業(yè)務(wù)培訓(xùn)
- 五年級英語閱讀理解(共20篇)
- 2024年重慶三峰環(huán)境集團招聘筆試參考題庫附帶答案詳解
評論
0/150
提交評論