




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、SIP消息的結(jié)構(gòu) 2011-07-09 13:30:58| 分類: 交換技術(shù)|舉報|字號 訂閱SIP消息由三部分組成,即:開始行(start line)、消息頭(header)、正文(body)Start-line:請求行Request-line 消息為 request消息時使用request-line Request-Line = Method SP Request-URI SP SIP-Version
2、160;CRLF狀態(tài)行Status-line 消息為響應(yīng)消息時使用Status-line Status-Line = SIP-Version SP Status-Code SP Reason-Phrase CRLF請求行Request-line由消息方法+Request-URI+SIP版本組成:消息方法: 以下列出了六種消息方法 REGISTER: 注冊聯(lián)系信息 INVITE: 發(fā)起會話請求
3、60;ACK:對 INVITE 請求的響應(yīng)的確認 CANCEL: 取消請求 BYE: 終結(jié)會話 OPTIONS: 查詢服務(wù)器能力Request-URI: 指示請求的用戶或者服務(wù)的地址信息SIP-version: 請求和響應(yīng)消息都需要包含SIP版本信息舉例: INVITE sip:bob SIP/2.0 狀態(tài)行Status-line由SIP版本+狀態(tài)碼+原因短語組成舉例: SIP/2.0 200
4、0;OK -消息頭:格式: 字段名(field-name): 參數(shù)值(field-value)Example: REGISTER sip: SIP/2.0 Via: SIP/2.0/UDP :5060;branch=z9hG4bKnashds7 Max-Forwards: 70
5、0; To: Bob <sip:bob> From: Bob <sip:bob>tag=456248 Call-ID: email=843817637684230998sdasdh09843817637684230998sdasdh09/email
6、0; CSeq: 1826 REGISTER Contact: <sip:bob> Expires: 7200 Content-Length: 0上面via、max-forwards、to、f
7、rom、call-id等這些都是些常有的頭域,SIP的頭域總共有44個之多。被叫UE通過SDP知道了主叫的IP地址和承載能力,是否就可以欺騙SS說呼叫失敗,然后通過主叫IP地址和主叫UE通信,這樣就繞開了SS的控制了。對于公網(wǎng)用戶我們使用SBC是否就有這方面的考慮呢?SIP URI是通過SIP呼叫他人的SIP地址方案。換句話說,一個SIP URI就是一個用戶的SIP電話號碼。SIP URI如同電子郵件地址一樣,按以下格式書寫:SIP URI = sip:xy:Port其中 x=用戶名,y=服務(wù)主機(域名或 IP)范例:sip:joe.bloggs13sip:support
8、sip:22444032SIP URI標準在RFC 3261標準中予以定義。2 SIP協(xié)議2.1 SIP協(xié)議的目標SIP表示會話初始化協(xié)議(Session Initiation Protocol)。該協(xié)議是一個應(yīng)用層控制協(xié)議,由IEEE設(shè)計和開發(fā)。設(shè)計的時候考慮到了協(xié)議的實現(xiàn)容易、良好的規(guī)模性和靈活性。該規(guī)范由幾個RFC組成,其中最重要的一個是RFC3261,為規(guī)范的核心內(nèi)容。該協(xié)議用來創(chuàng)建、修改和終止與一個或多個參與者之間的會話。利用會話,我們理解為一組相互通信的發(fā)送者和接收者及在通信過程中保存在這些
9、發(fā)送者和接收者的狀態(tài)。會話的例子包括互聯(lián)網(wǎng)電話呼叫、多媒體的分發(fā)、多媒體會議、分布式計算機游戲等。SIP不僅是一個通信設(shè)備需要的協(xié)議,也不是一個通用的協(xié)議。SIP的目的僅在于使得通信成為可能。通信本身必須由其他方式來實現(xiàn)(可能是其他的協(xié)議)。經(jīng)常與SIP一同使用的其他兩種協(xié)議是RTP和SDP。RTP協(xié)議用來承載實時的多媒體數(shù)據(jù),包括音頻、視頻和文本。這個協(xié)議使得對數(shù)據(jù)編碼和打包,并在Internet上傳輸這些包成為可能。另外一個重要的協(xié)議是SDP,會話描述協(xié)議(Session Description Protocol),它被用來對會話參與者的能力進行描述和編碼。這樣的描述然后被用于會話特征的協(xié)
10、商,以便所有的設(shè)備能夠參與,例如,對媒體編碼的協(xié)商,便于所有的參與者能夠?qū)γ襟w解碼;傳輸協(xié)議的協(xié)商,等等。SIP被設(shè)計用來遵從Internet的工作模式。它是一個面向端到端的信令協(xié)議,這意味著所有的邏輯都存儲在端設(shè)備上(除了SIP消息的路由);狀態(tài)也只存儲在端設(shè)備上。系統(tǒng)里沒有單點失效,使用這種方式設(shè)計的網(wǎng)絡(luò)有非常好的規(guī)模擴充性。為這種分布式和規(guī)模擴充性所付出的代價是消息的高開銷,因為消息必須在端到端之間發(fā)送。值得一提的是,SIP的端到端的概念對于常規(guī)的PSTN來講,是一個巨大的改變。在PSTN中,所有的狀態(tài)和邏輯都保存在網(wǎng)絡(luò)里,而端設(shè)備(電話)是原始的“笨”設(shè)備。SIP的目的是提供與傳統(tǒng)PS
11、TN相同的功能,但端到端的設(shè)計使得SIP網(wǎng)絡(luò)有更大的威力,而且更加開放,便于實現(xiàn)一些新的服務(wù),而這些服務(wù)在傳統(tǒng)的PSTN上幾乎是不可能的。SIP是基于HTTP協(xié)議的。HTTP協(xié)議繼承了RFC822的消息頭的格式。HTTP可能是在Internet上最成功和廣泛使用的協(xié)議。SIP試圖結(jié)合兩者的優(yōu)點。事實上,HTTP也可以被分類為信令協(xié)議,因為用戶代理使用這個協(xié)議告訴HTTP服務(wù)器起對那個文件感興趣。SIP用來承載會話參數(shù)的說明,這個說明用SDP來編碼到一個文檔里。這兩個協(xié)議,HTTP和SIP,都繼承了RFC822的消息頭的編碼。在過去的幾年里,編碼被證明是很強健和靈活的。2.1.1 SI
12、P URISIP實體使用SIP URI (Uniform Resource Identifier)來標識。SIP URI的形式為:usernamedomain,或者sip:joe。SIP URI 包括用戶名和域名兩部分,使用 (at)來分隔。SIP URI類似于e-mail地址,因此可以使用相同的URI用于e-mail和SIP通信。這樣的URI很容易記憶。2.2 SIP網(wǎng)絡(luò)元素SIP網(wǎng)絡(luò)的最基本的配置可以只有兩個元素,兩個用戶代理,兩者之間直接互傳消息;但是典型的SIP網(wǎng)絡(luò)會包含多種類型的SIP消息?;镜腟IP元素是用戶代理(UA),代理(Proxy)、注冊服務(wù)器(reg
13、istrar)和重定向服務(wù)器(redirect server)。本節(jié)會簡要介紹這些元素。要注意的是,這些元素是一些邏輯實體,例如,為了加快處理的速度,常常會把他們在物理上放在一起,這取決于具體的實現(xiàn)和配置。2.2.1 用戶代理(UA)使用SIP協(xié)議來尋找對方和協(xié)商會話特點的Internet端點被稱為用戶代理。用戶代理通常(不是必須)以應(yīng)用的形式存在于用戶的計算機上,這是目前最廣泛使用的方式,不過用戶代理也可以是蜂窩電話、PSTN網(wǎng)關(guān)、PDA、語音自動應(yīng)答(IVR)系統(tǒng)等。用戶代理也常常被稱為用戶代理服務(wù)器(UAS)和用戶代理客戶(UAC)。UAS和UAC是邏輯實體,每個用戶代理都包括
14、UAS和UAC。UAC在用戶代理中負責(zé)發(fā)送請求和接收響應(yīng),而UAS負責(zé)接收請求和發(fā)送響應(yīng)。由于用戶代理包括UAS和UAC,所以其行為就像UAS或UAC。例如,主叫方用戶代理在發(fā)送INVITE請求和響應(yīng)對方的時候是UAC,被叫方的用戶代理在接收INVITE請求和發(fā)送響應(yīng)給對方的時候是UAS。但是當被叫方?jīng)Q定發(fā)送BYE和中止請求的時候,情況就不一樣了。在這種情況下,被叫方的用戶代理(發(fā)送BYE)的作為UAC,而主叫方的用戶代理作為UAS。 圖2.11 UAC和UAS圖2.11中有三個用戶代理和一個靜態(tài)的分支代理服務(wù)器。每個用戶代理都包括UAC和UAS,代理部分負責(zé)接收來自主叫方的INVI
15、TE,實際上也就是UAS。在做靜態(tài)請求轉(zhuǎn)發(fā)時,代理創(chuàng)建兩個UAC,每個UAC負責(zé)一個分支。在這個例子中,被叫方B拾起聽筒,而之后,如果要斷開呼叫,就發(fā)出一個BYE消息。此時,原先用作UAS的代理現(xiàn)在變作UAC,原先用作UAC的代理現(xiàn)在變作UAS。2.2.2 代理服務(wù)器SIP允許建立一種被稱為代理服務(wù)器的網(wǎng)絡(luò)主機的基本設(shè)施。用戶代理可以給代理服務(wù)器發(fā)送消息。代理服務(wù)器在SIP網(wǎng)絡(luò)中是非常重要的一種實體,負責(zé)按照被請求者當前的位置完成路由、認證、記賬和其他重要的功能。代理服務(wù)器最重要的任務(wù)是把會話請求路由到接近到被叫方。一般情況下,會話請求會遍歷一組代理服務(wù)器,直到找到知道被叫方實際位置
16、的代理服務(wù)器。這個代理服務(wù)器會直接轉(zhuǎn)發(fā)會話請求給被叫方,然后被叫方接受或拒絕該會話請求。SIP代理服務(wù)器分為兩種類型:無狀態(tài)代理服務(wù)器和有無狀態(tài)代理服務(wù)器。 無狀態(tài)服務(wù)器對消息作簡單的轉(zhuǎn)發(fā),彼此之間沒有依賴關(guān)系。盡管消息通常安排在交易內(nèi)部(見節(jié)),無狀態(tài)代理服務(wù)器并不關(guān)心交易。無狀態(tài)代理服務(wù)器簡單,比狀態(tài)代理服務(wù)器速度快,可以作為簡單的負載均衡器、消息翻譯器和路由器來使用。無狀態(tài)代理服務(wù)器的缺點是不能吸收重傳消息,或完成高級路由,例如分支和遞歸遍歷。 狀態(tài)服務(wù)器狀態(tài)代理服務(wù)器相對復(fù)雜,它在接收到請求時建立一個狀態(tài)并保持該狀態(tài)直到交易
17、完成。某些交易,特別是那些由INVITE創(chuàng)建的,能夠持續(xù)很長時間(直到被叫方拾起聽筒或拒絕該呼叫)。由于狀態(tài)代理服務(wù)器在交易存續(xù)期間必須維持狀態(tài),所以性能受到限制。將SIP消息與交易關(guān)聯(lián)能夠給狀態(tài)代理服務(wù)器帶來某些有用的特性。狀態(tài)代理服務(wù)器能夠完成分支,這意味著在接收到一個消息,可以發(fā)送兩個或更多的消息出去。狀態(tài)代理服務(wù)器可以吸收重傳消息,因為如果它已經(jīng)接收到這個消息,它就可以從狀態(tài)中知道(無狀態(tài)代理服務(wù)器沒有保留狀態(tài),因此無法檢查)。狀態(tài)代理服務(wù)器可以使用更復(fù)雜的方法來查找用戶,例如,當用戶沒有接聽電話,可以嘗試撥他的辦公室電話,或者將電話重定向到用戶的移動電話上。無狀態(tài)代理服務(wù)器無法做到這
18、一點,因為它無法知道到辦公室電話的交易如何結(jié)束?,F(xiàn)在多數(shù)的SIP代理服務(wù)器都是有狀態(tài)的,它們的配置通常都很復(fù)雜,要完成記賬、分支和一些NAT穿透,這些功能都要求使用狀態(tài)代理服務(wù)器。 代理服務(wù)器的使用假定有兩個公司, A和B,每個公司都有自己的代理服務(wù)器,圖2.12說明了來自公司A中員工Joe的會話請求如何到達公司B的員工Bob。 圖 2.12 會話請求用戶Joe使用地址sip:bob來呼叫Bob。Joe的用戶代理自己不知道如何路由該請求,但是被配置成把所有向外發(fā)送的消息發(fā)送到公司的代理服務(wù)器上。該代理服務(wù)器計算出被叫用戶sip:b
19、ob在其他公司,因此查詢B公司的代理服務(wù)器,并將請求發(fā)送到那里。B公司的代理服務(wù)器可以預(yù)先配置在,或者該代理使用DNS SRV記錄來找到B的代理服務(wù)器。請求到達,它知道Bob目前在公司,可以通過電話找到,并且他的IP地址為,于是把請求發(fā)送到那里。2.2.3 注冊服務(wù)器前面已經(jīng)提到,在的SIP代理服務(wù)器知道Bob的當前位置,但是沒有說明該代理服務(wù)器如何學(xué)習(xí)到用戶的當前位置。Bob的用戶代理(SIP電話)必須注冊到注冊服務(wù)器上。注冊服務(wù)器是一個特殊的SIP實體,其接收來自用戶的注冊請求,抽取出用戶當前位置的信息(IP地址、端口和用戶名)并把這些信息保存在位置數(shù)據(jù)庫中。位置數(shù)
20、據(jù)庫的作用是把sip:bob映射到類似sip:bob:5060的地址上。B公司的代理服務(wù)器使用位置數(shù)據(jù)庫。當代理服務(wù)器接收到sip:bob對的請求時,它在位置數(shù)據(jù)庫中搜索,發(fā)現(xiàn)sip:bob:5060,并請將邀請發(fā)送到那里。注冊服務(wù)器通常也是一個邏輯實體,由于和代理服務(wù)器的緊密關(guān)系,兩者常常處于同一個物理位置。圖2.13是一個典型的SIP注冊服務(wù)器。REGISTER消息將發(fā)送給注冊服務(wù)器,其中包括記錄sip:的地址和聯(lián)系地址sip:jan:5060,其中的是話機的IP地址。注冊服務(wù)器把這些信息抽取出來,將其存儲到位
21、置數(shù)據(jù)庫中,如果一切順利,注冊服務(wù)器給電話發(fā)出一個200 OK的響應(yīng),注冊過程的處理也相應(yīng)結(jié)束。 圖 2.13 注冊服務(wù)器每個注冊都有限定的生命期。聯(lián)系頭域中expires參數(shù),或者expires頭域決定了注冊在多長時間內(nèi)是有效的。用戶代理必須在注冊生命期內(nèi)刷新注冊,否則注冊將會到期,用戶將不能使用服務(wù)(不可達)。2.2.4 重定向服務(wù)器接收到請求,然后發(fā)回的應(yīng)答中包括指定的用戶的當前位置列表的實體,稱為重定向服務(wù)器。重定向服務(wù)器接收請求,在位置數(shù)據(jù)庫(由注冊服務(wù)器建立)中查找該請求的接收者,然后創(chuàng)建一個用戶當前位置列表,并在響應(yīng)(使用SIP 3xx重定
22、向響應(yīng)類)中將這個列表發(fā)送給請求的發(fā)起者。請求的發(fā)起者從響應(yīng)中抽取被叫地的列表,然后直接給他們發(fā)出另外的請求。圖2.14是一個典型的重定向例子。 圖2.14 SIP重定向2.3 SIP消息使用SIP (經(jīng)常被稱為信令)的通信由一系列消息組成。消息可以由網(wǎng)絡(luò)獨立傳輸,通常由單獨的UDP數(shù)據(jù)報來傳輸。每個消息都包括一個首行,一個消息頭,一個消息體。首行用來標識消息的類型。消息分為兩種類型:請求和響應(yīng)。請求用來啟動某個動作,或者向請求的接收者發(fā)出通知。響應(yīng)用來確認請求已被接收和處理,并包括處理的狀態(tài)。下面的例子是典型的SIP請求:INVITE sip:7170
23、SIP/2.0Via: SIP/2.0/UDP 00:5040;rportMax-Forwards: 10From: “jiri” <sip:>tag=76ff7a07-c091-4192-84a0-d56e91fe104fTo: <sip:>Call-ID: d10815e0-bf17-4afa-8412-d9130a793d965CSeq: 2 INVITEContact: <sip:5:9315>User-Agent: Wi
24、ndows RTC/1.0Proxy-Authorisation: Digest username="jiri", realm="", algorithm="MD5", uri="sip:",nonce="3cef753900000001771328f5ae1b8b7f0d742da1feb5753c",response="53fe98db10e1074b03b3e06438bda70f"Content-Type: appl
25、ication/sdpContent-Length: 451 v=0o=jku2 0 0 IN IP4 5s=sessionc=IN IP4 5b=CT:1000t=0 0m=audio 54742 RTP/AVP 97 111 112 6 0 8 4 5 3 101a=rtpmap:97 red/8000a=rtpmap:111 SIREN/16000a=fmtp:111 bitrate=16000a=rtpmap:112 G7221/16000a=fmtp:112 bitrate=24000a=rtpmap:6 DVI4/16000
26、a=rtpmap:0 PCMU/8000a=rtpmap:4 G723/8000a=rtpmap: 3 GSM/8000a=rtpmap:101 telephone-event/8000a=fmtp:101 0-16首行表明這是一個用來建立會話的INVITE消息,其中的URI,sip:7170,被稱為被叫請求URI,包含消息下一跳的URI,在這個例子中,就是主機.。一個SIP請求包含一個或多個Via頭域,該域用來記錄請求的路徑,而后會被用來對SIP消息進行精確的路由。INVITE消息僅包括Via頭域,它是由發(fā)送請求的用戶代理創(chuàng)建的。根據(jù)Via頭域,我們知道用
27、戶代理運行在ip地址為00的主機上,端口為5060。From和To頭域用于標志邀請的發(fā)起者(主叫)和接收者(被叫),類似于SMTP中消息的發(fā)送者和接收者。From頭域包含一個tag參數(shù),用作對話標識,我們將在節(jié)中描述。Call-ID頭域是一個對話標識,其目的是標識消息屬于同一個呼叫。這樣的消息具有相同的Call-ID。Cseq用來維持請求的順序。由于請求可能在不可靠的鏈路上傳輸,因此消息的到達先后順序會有所不同,所以在消息中必須包含序號,以便接受者可以識別重傳的消息和順序不正確的請求。Contact頭域包括IP地址和發(fā)送者用來偵聽被叫方發(fā)送的請求的端口號。其
28、他的域相對不重要,這里不再敘述。Message與消息體之間使用空行來分隔。INVITE請求的消息體包括發(fā)送者可接受的媒體類型的說明,并在SDP中編碼。2.3.1 SIP請求前面已經(jīng)描述了INVITE請求。這個請求用來請求被叫方進入一個會話。其他幾個重要請求是:- ACK這個消息是對接收到INVITE消息的最后應(yīng)答。會話的建立使用了3次的握手,這是由于邀請的非對稱本質(zhì)所決定的。被叫方接受或者拒絕呼叫之前,需要花費一段時間,因為被叫方的代理要定時重傳正式的回應(yīng),直到其接收到一個ACK 消息(表示主叫方仍在,并且準備通話)。- BYEBYE用于撤銷多媒體會話。任何一方希望撤銷會話
29、的話,就向另一方發(fā)出BYE消息。- CANCELCANCEL用于撤銷一個還沒有完全建立的會話,在被叫方還沒有用最終的回應(yīng)來回答之前,若主叫方打算取消這個呼叫時使用(例如,被叫方長時間沒有回應(yīng))。- REGISTERREGISTER消息的目的是讓注冊服務(wù)器(registrar)知道用戶當前的位置(地址)。有關(guān)用戶可以通達的當前IP地址和端口的信息都用REGISTER 消息來承載。注冊服務(wù)器抽取出這些信息,將其放入地點數(shù)據(jù)庫。SIP代理服務(wù)器會利用該數(shù)據(jù)庫把呼叫路由到用戶那里。注冊是有時間限制的,需要周期性的刷新。上述請求通常沒有消息體,因為在多數(shù)情況下不需要使用(但可能有),另外,還定
30、義了許多其它請求類型,這里不對它們進行描述。2.3.2 SIP響應(yīng)當用戶代理或代理服務(wù)器接收到一個請求時,會發(fā)送一個響應(yīng)。除了ACK請求之外,其他的請求都要有響應(yīng)。下面的例子是典型的SIP響應(yīng):SIP/2.0 200 OKVia: SIP/2.0/UDP 0:5060;received=8From: sip:To: sip:;tag=794fe65c16edfdf45da4fc39a5d2867c.b713Call-ID: 24439363630CSeq: 63629
31、REGISTERContact: <sip:sip28:5060;transport=udp>q=0.00;expires=120Server: Sip EXpress router (0.8.11pre21xrc (i386/linux)Content-Length: 0Warning: 392 01:5060 "Noisy feedback tells:pid=5110 req_src_ip=8 req_src_port=5060in_uri=sip:out_uri=sip:iptel.o
32、rg via_cnt=1"除了首行之外,響應(yīng)與請求類似。響應(yīng)的首行包括協(xié)議版本(SIP/2.0)、回答代碼和理論周期?;卮鸫a是100到699之間的整數(shù),用來標明響應(yīng)的類型,響應(yīng)分為6類:-1xx 是臨時響應(yīng),它告訴響應(yīng)的接收者,已經(jīng)收到與之相關(guān)的請求,但是還不知道處理的結(jié)果。臨時響應(yīng)只有在處理尚未完成時發(fā)送。一旦接收到臨時響應(yīng),請求的發(fā)送者應(yīng)該立即停止重傳。典型的例子是,代理服務(wù)器開始處理INVITE請求時,用代碼100來響應(yīng);如果用戶代理使用180來響應(yīng),表示被叫電話正在振鈴。-2xx 是確定的最終響應(yīng),使用200到299之間的數(shù)字作為代碼。最終響應(yīng)反映了與之
33、相關(guān)的請求處理結(jié)果,并且會終止交易。最終響應(yīng)表示請求已經(jīng)成功處理并被接受,例如,當用戶接受了會話邀請(INVITE請求),就發(fā)送一個200 OK的響應(yīng)。對于一個INVITE請求,UAC有可能會接收到幾個200消息,這是因為代理服務(wù)器(見后面)能夠?qū)⒄埱蠓种Оl(fā)送,從而到達幾個UAS,每個UAS都接受邀請。在此種情況下,響應(yīng)使用To頭域中的tag參數(shù)來區(qū)分。每個響應(yīng)都使用唯一的對話標識,用來代表對話。- 3xx 響應(yīng)用來重定向主叫方。重定向響應(yīng)給出用戶新位置的相關(guān)信息,或者主叫方能夠用來滿足該呼叫的其它服務(wù)的信息。重定向響應(yīng)一般由代理服務(wù)器發(fā)出。當代理服務(wù)器收到請求,但是因為某些原因不想
34、處理或不能夠處理,它就會向主叫方發(fā)出重定向響應(yīng),并且把主叫方要嘗試的另一個地點放在響應(yīng)中,這個地點可以是另一個代理服務(wù)器,或者被叫方的當前位置(來自由注冊服務(wù)器創(chuàng)建的位置數(shù)據(jù)庫)。然后主叫方向新地點重新發(fā)出請求。3xx響應(yīng)是最終的。- 4xx 是否定的最終響應(yīng),4xx響應(yīng)表示問題在另外一個方面,請求不能被處理是因為它包含不正確語法,或者服務(wù)器沒有實現(xiàn)對此種請求的處理功能。- 5xx 響應(yīng)表示問題在服務(wù)器方,請求是有效的,但是服務(wù)器沒有能夠完成請求,客戶端應(yīng)該在稍后重新嘗試該請求。- 6xx 回答代碼表示任何服務(wù)器都不能完成請求。這個響應(yīng)通常由具有特定用戶信息的服務(wù)
35、其發(fā)出。當用戶不想?yún)⑴c會話時,用戶代理通常發(fā)出一個603 Decline響應(yīng)。.除了上述類別的響應(yīng),首行也包括理論周期,代碼編號是要機器處理的,其并不是很好記憶,但是很容易掃描分析和被機器理解。理論周期包括描述處理結(jié)果的可讀消息。用戶代理應(yīng)該附加一個原因說明給用戶。對特定響應(yīng)的請求利用CSeq頭域來標識。除了順序編號,這個域還包括對應(yīng)于請求的方法,在前面的例子里,就是REGISTER 請求。2.4 SIP交易盡管SIP消息可以獨立的在網(wǎng)絡(luò)上傳送,但通常被用戶代理和某些類型的代理服務(wù)器安排成交易,因此,SIP可以說是一種交易類的協(xié)議。交易是在網(wǎng)絡(luò)元素之間交換的SIP消息序列。
36、一個交易包括一個請求和所有對該請求的響應(yīng),其中包括0個或多個臨時相應(yīng),以及一個或多個最終響應(yīng)(記住:當代理服務(wù)器對INVITE請求分支時,對該請求可能會有多個響應(yīng)。)如果交易由INVITE發(fā)起,那么該交易也包括ACK,但只限于最終響應(yīng)不是2xx的情況。如果最終響應(yīng)是2xx,那么就不把ACK當作是交易的一部分。我們可以看到,這是一種不對稱的行為,ACK是否定的最終響應(yīng)的一部分,但不是具有確定性響應(yīng)的交易的組成部分,其原因是傳遞200 OK消息非常重要。當代理服務(wù)器分支請求時,不僅要建立會話,多個實體還要生成200 OK消息,并且這些消息還要傳遞給主叫的用戶代理。于是用戶代理負起責(zé)任,并重傳200
37、 OK,直到他們接收到ACK。注意只有對INVITE的響應(yīng)才被重傳。具有交易概念的SIP實體被稱為有狀態(tài)的,這樣的實體通常一個與交易關(guān)聯(lián)的狀態(tài),在交易存續(xù)期間保存在內(nèi)存中。當請求或響應(yīng)到來時,有狀態(tài)的實體試圖把該請求(響應(yīng))與現(xiàn)有的交易關(guān)聯(lián)起來。為了做到這點,它必須從消息中抽取唯一的交易標識,并將其與現(xiàn)有的交易中的標識比較。如果有這樣的交易存在,那么其狀態(tài)將會根據(jù)消息來更新。在SIP RFC2543, 交易標識根據(jù)所有重要消息的頭域(包括To、From、Request-URI和CSeq)hash得來,這很慢,并且復(fù)雜,在互操作性測試中,這往往是問題的根源。但是在RFC3261,計算交
38、易標識的方法完全改變了,取代了原先的對所有重要消息的頭域進行hash的方法,現(xiàn)在的SIP消息中直接包括了交易標識,Via頭域的分支參數(shù)直接包括了交易標識。這是一個巨大的簡化,但是原先的實現(xiàn)依然保留著,以便保持向后兼容。圖2.15說明了兩個用戶代理對話期間,什么消息屬于什么交易。 圖2.15 SIP交易2.5 SIP對話我們已經(jīng)說明了什么是交易,一種由INVITE和對其的響應(yīng)組成;另一種由BYE和對其的響應(yīng)組成(在會話斷開時)。這兩個交易是有某些關(guān)聯(lián)的,同屬一個對話。對話代表兩個用戶代理之間的點到點SIP關(guān)系。對話會持續(xù)一段時間,對于用戶代理來講對話是一個很重要的概念。對話有
39、利于在SIP端點之間排出正確的消息路由和順序。對話使用Call-ID、From tag和To tag來標識。同一個對話的消息中的這些域的內(nèi)容必須相同。我們已經(jīng)說明CSeq頭域用來對消息排序,事實上,它是在對話內(nèi)部來對消息排序,在每一個對話內(nèi),發(fā)出的消息的序號必需單向增加,否則,對方會認為是一個錯誤或重傳的請求。這意味著在一個對話內(nèi)部,在一個方向上,只有一個交易是活動的,也可以說,對話是交易的序列。圖2.16對圖2.1進行了擴充,顯示的是屬于同一個對話中的消息。 圖2.16 SIP對話某些消息建立對話,而某些消息不建立。對話用來明確標明消息的關(guān)系,也會發(fā)出與對話之外
40、的消息沒有關(guān)聯(lián)的消息。這很容易實現(xiàn),因為用戶代理不維持對話狀態(tài)。例如,INVITE消息建立對話,它的后面會跟有BYE請求,用來斷開INVITE建立的會話,這個BYE在由INVITE建立的會話內(nèi)部發(fā)送。但是,如果用戶代理發(fā)出MESSAGE請求,而這樣的請求并不建立任何對話,期后面的消息(包括MESSAGE)都將獨立發(fā)送,而與前面的消息無關(guān)。2.5.1 對話方便路由對話還用于在用戶代理之間路由消息,簡單敘述如下。假定用戶sip:bob要與用戶sip:pete通話,他知道被叫方(sip:pete)的SIP地址,但是這個地址并沒有說明用戶當前的位置,也就是說,主叫方不知道向那個主機發(fā)出請求。
41、因此,向代理服務(wù)器發(fā)出INVITE請求。該請求將從一個代理服務(wù)器發(fā)到另一個代理服務(wù)器,直到有一個代理服務(wù)器知道被叫方當前的位置。這個過程稱為路由。一旦請求到達被叫方,被叫方的用戶代理產(chǎn)生一個響應(yīng),發(fā)送給主叫方。被叫方的用戶代理還會把含有用戶當前位置信息的聯(lián)系信息頭域包括在響應(yīng)中,原始的請求也會包含在聯(lián)系信息頭域中,表示兩個用戶代理都知道彼此的當前位置。由于兩個用戶代理都知道彼此的當前位置,因此不需要再向任何代理服務(wù)器發(fā)出請求,兩者可以直接發(fā)送,這就是對話如何方便路由。對話中的其余消息直接在用戶代理之間傳送,這是一個巨大的性能改進,因為代理服務(wù)器不用看到所有對話中的消息,他們僅用于建立對話的第一
42、個請求。直接傳送的消息具有較小的延遲,因為代理服務(wù)器通常都實現(xiàn)了很復(fù)雜的路由邏輯。圖2.17中是一個包含在對話(BYE)中旁路代理服務(wù)器的消息的例子。 圖 2.17 SIP的梯形示意2.5.2 對話標識符對話標識符由三部分組成:Call-Id、From tag和To tag,但是為什么這樣創(chuàng)建對話,以及誰負責(zé)那個部分并不是很清晰。Call-ID被稱為呼叫標識符,必須是唯一的。一個呼叫包括一個或者多個對話,當代理服務(wù)器分支請求時,多個用戶代理可能會對一個請求產(chǎn)生回應(yīng)。發(fā)送2xx響應(yīng)的每一個用戶代理都與主叫方建立一個單獨的對話,所有這些對話都同屬一個呼叫,并
43、有相同的Call-ID。From tag由主叫方產(chǎn)生,唯一的標識主叫方用戶代理的對話。To tag由被叫方產(chǎn)生,類似于From tag,用來唯一標識主叫方用戶代理的對話。這種分等級的對話是必需的,因為一個邀請(Invitation)可能產(chǎn)生多個對話,而主叫方必須能夠區(qū)分他們。2.6 典型的SIP使用場合本節(jié)給出幾個典型的SIP使用場合。2.6.1 注冊用戶必須把自己注冊到注冊服務(wù)器上,這樣起他的用戶才能夠找到自己。注冊包括一個REGISTER消息,緊接著是注冊服務(wù)器發(fā)出的200 OK(假設(shè)注冊成功)。注冊通常是要認證的,所以如果用戶沒有提供有效
44、的信任證書,就會得到一個407回答。圖2.18是一個注冊的例子。 圖2.18 REGISTER消息流2.6.2 會話邀請會話邀請包括一個發(fā)送給代理服務(wù)器的INVITE請求,代理服務(wù)器立即發(fā)送一個100 Trying回應(yīng)來阻止請求的重傳,并進一步轉(zhuǎn)發(fā)請求。所有由被叫方產(chǎn)生的provisional響應(yīng)都會立即發(fā)送給主叫方,請參考呼叫流程中的180 Ringing,當被叫方的電話振鈴時會產(chǎn)生該響應(yīng)。一旦用戶摘機,就會立即生成200 OK,由被叫方的用戶代理重傳,直到其從主叫方收到ACK,此時,會話就已經(jīng)建立。2.6.3 會話終止會話終止通過在由INVITE請求建立的對話
45、內(nèi)發(fā)送BYE請求來實現(xiàn)。BYE消息直接從一個用戶代理發(fā)到另一個用戶代理,除非INVITE請求路徑上的一個代理服務(wù)器用記錄路由來明示它希望停留在該路徑上(見.4節(jié))。希望斷開會話的一方發(fā)出BYE請求給會話的另一方,而另一方發(fā)送一個200 OK響應(yīng)來確認這個BYE,然后會話終止。見圖2.20中左邊的流程。 圖2.19 INVITE消息流2.6.4 記錄路由在默認情況下,在對話內(nèi)部發(fā)送的所有請求都是直接從一個用戶代理到另一個用戶代理。只有對話外的請求會遍歷SIP代理服務(wù)器。這個方法使得SIP網(wǎng)絡(luò)會具有更好的伸縮性,因為只有少量的SIP消息會到達
46、代理服務(wù)器。某些情況下,需要代理服務(wù)器停留在后續(xù)消息的路徑上,如控制NAT的代理服務(wù)器,或計費代理服務(wù)器需要停留在BYE請求的路徑上。代理服務(wù)器用來通知用戶代理它希望停留在后續(xù)消息的路徑上的機制稱為記錄路由。這樣的代理服務(wù)器會在SIP消息中插入一個Record-Route頭域,其包含了代理服務(wù)器的地址。對話內(nèi)發(fā)送的消息會遍歷所有在SIP消息中插入Record-Route頭域的代理服務(wù)器。請求地接收者會接收到消息中的一組Record-Route頭域,它必須在響應(yīng)中鏡像所有的Record-Route頭域,因為請求的發(fā)起者也需要知道這些代理服務(wù)器。 圖2.20 BYE 消息流(帶
47、有和不帶有記錄路由)圖2.20中左側(cè)的消息流說明的是在消息中沒有Record-Route頭域的情況下,BYE請求(在由INVITE建立的對話內(nèi))直接發(fā)送給其他的用戶代理。右側(cè)的消息流說明的是當代理服務(wù)器把Record-Route頭域放進消息的情況。2.6.5 事件預(yù)訂和通知SIP規(guī)范已經(jīng)擴展到支持允許事件預(yù)定。這樣的事件包括:代理服務(wù)器的統(tǒng)計改變、存在的消息、會話改變等等。這樣的機制主要用于傳遞有關(guān)用戶存在(愿意通信)的信息。圖2.21顯示的是基本的消息流。 圖2.21 事件預(yù)定和通知有意進行事件預(yù)定的用戶代理發(fā)出一個SUBSCRIBE消息給SIP服務(wù)器。SUBS
48、CRIBE消息建立一個對話,并會馬上得到服務(wù)器發(fā)回的200 OK響應(yīng)。此時,對話已經(jīng)建立。然后,每次用戶預(yù)定的事件發(fā)生時,服務(wù)器都會發(fā)送NOTIFY請求給用戶。NOTIFY消息在由SUBSCRIBE建立的對話內(nèi)發(fā)送。注意:在圖2.21中,不管是否有事件觸發(fā)通知,都會發(fā)送第一個NOTIFY消息。事件預(yù)定和注冊一樣,都有確定的生命期,因此必須周期性的更新。2.6.6 即時消息即時消息使用MESSAGE請求發(fā)送。MESSAGE請求不建立對話,因此它總是會遍歷同一組代理服務(wù)器,這是發(fā)送即時消息的最簡單方法。即時消息的文本在SIP請求的體內(nèi)傳輸。 圖 2.22 即
49、時消息3 MGCP協(xié)議在傳統(tǒng)電話網(wǎng)絡(luò)中,基礎(chǔ)設(shè)施由大量的交換機組成,這些交換機彼此互連構(gòu)成骨干網(wǎng)絡(luò),此外它們還與用戶設(shè)備(PBX, 電話)連接。目前的內(nèi)部網(wǎng)絡(luò)采用的是數(shù)字通信,而到用戶的鏈路可以是模擬的(PSTN)也可以是數(shù)字的(ISDN)。用戶鏈路由呼叫信令(如撥號、補充服務(wù)等)和語音/數(shù)據(jù)來共享。在骨干網(wǎng)絡(luò)中,在交換機之間為呼叫信令保留了專門(虛擬)的鏈路(實際上構(gòu)成了專門的信令網(wǎng)絡(luò)),而語音/數(shù)據(jù)在另外的鏈路上傳輸。7號信令系統(tǒng)(SS7),或者其變種用作交換機之間的呼叫信令協(xié)議,該協(xié)議用來在骨干網(wǎng)
50、絡(luò)中路由語音/數(shù)據(jù)通道,通過指令路由上的每一臺交換機哪一個來話線路轉(zhuǎn)接到哪一個去話線路,以及施加其他的處理功能(如語音壓縮、到用戶設(shè)備的帶內(nèi)信令檢測等等)。語音/數(shù)據(jù)通道本身是簡單的數(shù)據(jù)位管道,在每一臺交換機上使用中繼和線路標識。 圖 2.23 MGCP的應(yīng)用場景幾個電信運營商在考慮把類似的結(jié)構(gòu)用在基于IP的骨干網(wǎng)上,這個主干網(wǎng)會逐漸取代交換網(wǎng)中的部分主干,如圖3.7。IP路由器取代語音交換機來建造主干網(wǎng)絡(luò),利用IP路由,甚至MPLS,明確的支持QOS,可以在網(wǎng)絡(luò)中的一個地方把語音或數(shù)據(jù)包傳輸?shù)脚R一個地方。與語音交換機相反,這不需要為每個語音連接去配置每個路由器,只是需要在
51、入口和出口把對方的地址配置進去,因此才可以知道把語音或數(shù)據(jù)送到那里去。在IP網(wǎng)絡(luò)的邊緣使用兩種類型的網(wǎng)關(guān)來連接傳統(tǒng)的電話網(wǎng)絡(luò):信令網(wǎng)關(guān),把SS7信令轉(zhuǎn)換為基于IP的控制(可以使用H.323或SIP在IP包中承載SS7信令SIGTRAN);媒體網(wǎng)關(guān),完成語音編碼的轉(zhuǎn)換。某些中心實體,或者幾個協(xié)同的實體,共同構(gòu)成骨干網(wǎng)絡(luò)的智能核心,媒體網(wǎng)關(guān)控制器(Media Gateway Controller)。他們負責(zé)解釋呼叫信令,決定如何路由呼叫,提供補充服務(wù)等。在決定了如何建立呼叫之后,他們通知處在邊緣(出、入)的媒體網(wǎng)關(guān)如何傳輸語音包,以及把語音包傳輸?shù)绞裁吹胤?。媒體網(wǎng)關(guān)控制器在呼叫發(fā)生改變的時候,如請
52、求補充服務(wù)等,也會重新配置網(wǎng)關(guān)。媒體網(wǎng)關(guān)能夠監(jiān)測到在媒體通道中的控制功能請求(比如,利用DTMF),并通知媒體網(wǎng)關(guān)控制器,后者會引發(fā)相應(yīng)的動作。媒體網(wǎng)關(guān)控制器和媒體網(wǎng)關(guān)之間的通信協(xié)議已經(jīng)定義了幾個。最初的版本有多個陣營開發(fā),其中幾個合并起來創(chuàng)立了媒體網(wǎng)關(guān)控制協(xié)議(MGCP),這是唯一一個專有協(xié)議成為報告性質(zhì)的RFC(RFC 2705)?,F(xiàn)在正在做出努力,使得剩下的兩個陣營進行合作,并開發(fā)一個可以標準化的協(xié)議,這樣就產(chǎn)生了ITU-T(Q.14)和IETF的工作組(MEGACO WG)。這個聯(lián)合開發(fā)的協(xié)議被ITU-T稱為H.248,在IETF中被稱為MEGACO。目前IETF正在討論的一個特別的協(xié)議擴充是利用用戶所擁有的IP電話機進行通信的定義,實現(xiàn)與媒體網(wǎng)關(guān)控制體系結(jié)構(gòu)的無縫結(jié)合。這樣的電話將會非常簡單,當通化服務(wù)直接由網(wǎng)絡(luò)基礎(chǔ)設(shè)施提供時,它能夠發(fā)送、接收事件,并對事件作出反應(yīng)。.4 專有的信令協(xié)議現(xiàn)在,幾乎所有提供VoIP產(chǎn)品的的廠商都使用其自己的VoIP協(xié)議。如Cisco的Skinny,Siemens的CorNet。這些協(xié)議都是由廠商發(fā)明,能夠提供更多的專門的VoIP補充服務(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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)安全生產(chǎn)的持續(xù)改進與創(chuàng)新
- 創(chuàng)新產(chǎn)品開發(fā)中的團隊協(xié)作與溝通
- 國際貿(mào)易摩擦與應(yīng)對策略
- 中醫(yī)思維在預(yù)防兒童慢性病中的重要性
- 培訓(xùn)效果評估與持續(xù)改進方案
- 提升品牌知名度的廣告策略研究
- 合資經(jīng)營協(xié)議二零二五年
- 農(nóng)業(yè)互聯(lián)網(wǎng)營銷的技巧與策略
- 環(huán)保型清淤裝備企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 民族音樂節(jié)行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報告
- 義烏市事業(yè)單位招聘考試真題2024
- 企業(yè)廉潔風(fēng)險防控課件教學(xué)
- T-SDFA 047-2024 混合型飼料添加劑中卡那霉素的測定 液相色譜-串聯(lián)質(zhì)譜法
- 2025年上海市各區(qū)中考語文一模卷【說明文閱讀題】匯集練附答案解析
- 2025年單相電子電能表項目可行性研究報告
- 2025年人教五四新版八年級數(shù)學(xué)上冊階段測試試卷
- 公路護坡施工合同
- 2025年廣東省財政廳所屬事業(yè)單位公開招聘歷年高頻重點提升(共500題)附帶答案詳解
- 供熱管網(wǎng)施工技術(shù)培訓(xùn)
- 廣東廣州市欖核咨詢服務(wù)有限公司招聘筆試沖刺題2024
- 手辦聯(lián)名合作協(xié)議
評論
0/150
提交評論