sip gw功能包括_道哥漫谈:大话有趣的SIP通信
圖-1 電話通信
1、SIP是何物?
SIP(會(huì)話發(fā)起協(xié)議)屬于IP應(yīng)用層協(xié)議,用于在IP網(wǎng)上為用戶提供會(huì)話應(yīng)用。會(huì)話(Session)指兩方或多方用戶之間的語音、視頻、及其他媒體形式的通信,具體可能是IP電話、會(huì)議、即時(shí)消息等等。
圖-2 SIP會(huì)話連接
SIP是一個(gè)信令協(xié)議,它對(duì)應(yīng)于傳統(tǒng)電話網(wǎng)絡(luò)中的呼叫信令協(xié)議(比如SS7 ISUP)。構(gòu)建一個(gè)完整多媒體通信架構(gòu)還需要結(jié)合其他一些協(xié)議,必要的有:RTP,用于媒體傳輸;RSVP,用于QOS保證等等。
圖-3多媒體通信的多種協(xié)議
2、SIP基本功能
2.1 會(huì)話的發(fā)起與管理
圖-4 創(chuàng)建會(huì)話
SIP主要用于創(chuàng)建、修改和終止一個(gè)會(huì)話。一個(gè)創(chuàng)建會(huì)話的簡單的例子如上圖-3所示,其建立邏輯結(jié)構(gòu)流程如下:
- 發(fā)起方向目的方發(fā)送一個(gè)SIP請(qǐng)求消息(INVITE),其中包含提議的會(huì)話參數(shù)的描述,請(qǐng)求在二者之間建立一個(gè)會(huì)話;
- 目的方返回一個(gè)SIP響應(yīng)消息(200 OK),其中包含接受的會(huì)話參數(shù)的描述,接受會(huì)話建立請(qǐng)求
- 發(fā)起方發(fā)送一個(gè)SIP請(qǐng)求消息(ACK)確認(rèn)會(huì)話的建立。
一個(gè)會(huì)話建立后,如果對(duì)于會(huì)話進(jìn)行修改,又該如何操作?下面一個(gè)修改會(huì)話的簡單例子如圖-4所示。
圖-5 修改會(huì)話
對(duì)于會(huì)話的修改,其結(jié)構(gòu)流程,如下所示:
- 會(huì)話中的任意一方可以發(fā)送一個(gè)SIP請(qǐng)求消息(reINVITE),其中包含提議的新的會(huì)話參數(shù),請(qǐng)求修改二者之間的會(huì)話;
- 另一方返回一個(gè)SIP響應(yīng)消息(200 OK),其中包含接受的新的會(huì)話參數(shù),接受會(huì)話修改請(qǐng)求
既然會(huì)話可以創(chuàng)建和修改,那么又該如何實(shí)現(xiàn)一個(gè)會(huì)話的結(jié)束?其實(shí)現(xiàn)方式如下圖-5所示。
圖-6 結(jié)束會(huì)話
一個(gè)結(jié)束會(huì)話的邏輯結(jié)構(gòu)流程如下所示:
- 會(huì)話中的任意一方可以發(fā)送一個(gè)SIP請(qǐng)求消息(BYE),請(qǐng)求結(jié)束會(huì)話;
- 另一方返回一個(gè)SIP響應(yīng)消息(200 OK),接受會(huì)話結(jié)束請(qǐng)求
2.2 用戶位置管理&軌跡
在城市中分布著很多移動(dòng)信號(hào)基站,移動(dòng)的SIP終端實(shí)時(shí)與最近的基站發(fā)生著數(shù)據(jù)交互,如圖-6所示。
圖-7 移動(dòng)的用戶
SIP要求終端定期向網(wǎng)絡(luò)發(fā)送注冊(cè)請(qǐng)求(REGGISTER),報(bào)告自己的當(dāng)前位置。這樣SIP服務(wù)器中始終存儲(chǔ)了用戶(終端)的當(dāng)前地址。當(dāng)用戶被呼叫時(shí),SIP服務(wù)器能夠?qū)IP請(qǐng)求發(fā)送到用戶的當(dāng)前地址。
每一個(gè)基站都在記錄出現(xiàn)在其信號(hào)范圍內(nèi)的手機(jī)用戶信息,將一定范圍內(nèi)的基站所接收的信息集合起來,就能識(shí)別出一個(gè)手機(jī)用戶在這個(gè)范圍中的活動(dòng)軌跡,如圖-7所示.
圖-8 SIP手機(jī)信令數(shù)據(jù)通過基站記錄用戶實(shí)時(shí)位置
每個(gè)人都有手機(jī),所以數(shù)據(jù)有接近全樣本的高覆蓋率;每個(gè)人都隨身攜帶手機(jī),所以數(shù)據(jù)有直接反映空間位置的高精度;每天都在收集手機(jī)數(shù)據(jù),所以數(shù)據(jù)有立等可取的高時(shí)效性。
3、實(shí)體 & 網(wǎng)絡(luò)
SIP UA(User Agent,用戶代理)是最基本的SIP實(shí)體,它通常就是用戶終端。理想情況下,通過SIP UA就可以完成用戶之間會(huì)話的建立。但是為了支持SIP的移動(dòng)性,以及其他高級(jí)功能,比如運(yùn)營商對(duì)呼叫的控制等等,會(huì)話發(fā)起及管理的信令過程不能直接在兩個(gè)SIP UA之間完成,而是需要經(jīng)過由若干SIP服務(wù)器構(gòu)成的SIP信令網(wǎng)絡(luò)。
圖-9 網(wǎng)絡(luò)路由的SIPs實(shí)體
這些SIP服務(wù)器可以分為兩類:注冊(cè)服務(wù)器和路由服務(wù)器。
- SIP注冊(cè)服務(wù)器(registrar)的主要功能是接受SIP UA的注冊(cè)請(qǐng)求,維護(hù)用戶名-地址映射。
- 路由服務(wù)器的主要功能是將SIP消息路由到目標(biāo)SIP UA。路由服務(wù)器有SIP重定向服務(wù)器(redirect server)和SIP代理服務(wù)器(proxy)兩種。前者以重定向方式路由SIP請(qǐng)求消息,后者以代理方式路由SIP請(qǐng)求消息。
在重定向方式下(如圖-10所示),SIP重定向服務(wù)器收到了SIP請(qǐng)求消息,查詢到目標(biāo)SIP UA的當(dāng)前地址后,通過SIP響應(yīng)消息(302 Moved temporarily)返回給發(fā)起方SIP UA。之后的SIP消息交互與重定向服務(wù)器無關(guān),發(fā)起方SIP UA直接向目標(biāo)SIP UA的當(dāng)前地址發(fā)送請(qǐng)求消息。
圖-10 路由定向服務(wù)尋址
在代理方式下(如下圖-11所示),SIP代理服務(wù)器收到了SIP請(qǐng)求消息,查詢到目標(biāo)SIP UA的當(dāng)前地址后,將SIP請(qǐng)求消息轉(zhuǎn)發(fā)到目標(biāo)SIP UA的當(dāng)前地址。之后的SIP消息交互都要經(jīng)過SIP代理服務(wù)器。這使得SIP代理服務(wù)器可以對(duì)會(huì)話進(jìn)行控制,比如結(jié)束會(huì)話等等。
圖-11 路由代理尋址
4 SIP的原子性
圖-12 SIP的原子性
SIP所提供的功能是通過一些原子性的基本功能(比如注冊(cè)(registration),發(fā)起會(huì)話(Initiation)、會(huì)話結(jié)束等)組合而成的。每個(gè)原子性基本功能是通過一個(gè)SIP操作完成的SIP操作基于類似HTTP的請(qǐng)求/響應(yīng)事務(wù)模型,每個(gè)操作的調(diào)用過程體現(xiàn)為一個(gè)所謂事務(wù) – 包含一個(gè)SIP請(qǐng)求和一個(gè)或多個(gè)相應(yīng)的SIP響應(yīng)。其中SIP請(qǐng)求消息中的方法(Method)指示出調(diào)用的操作。
下表是在RFC 3261中定義的方法及其對(duì)應(yīng)的SIP操作。
方法Method SIP操作
INVITE 會(huì)話邀請(qǐng)
ACK 確認(rèn)會(huì)話邀請(qǐng)
CANCEL 取消會(huì)話邀請(qǐng)
BYE 結(jié)束會(huì)話
REGISTER 注冊(cè)
OPTIONS 查詢服務(wù)器能力
4.1 SIP協(xié)議組成
圖-13 SIP協(xié)議
SIP是一個(gè)基于文本(text-based)的協(xié)議,使用 UTF-8 字符集。SIP消息與HTTP/1.1非常類似,同樣可以包含消息體(message body),通常是會(huì)話描述(session descriptions),也可能是其他內(nèi)容。
SIP 消息有兩類:從客戶機(jī)到服務(wù)器的請(qǐng)求消息(request),從服務(wù)器到客戶機(jī)的響應(yīng)消息(response)。
除了第一行分別是請(qǐng)求行(Request-Line)和狀態(tài)行(Status-Line)以外,SIP請(qǐng)求消息和SIP響應(yīng)消息的剩下部分的組成基本類似,包括消息頭域(message header)和消息體(message body)兩部分(如上圖-13所示)。
4.2 SIP消息請(qǐng)求
根據(jù)請(qǐng)求行中的方法(method)的不同,SIP請(qǐng)求消息有很多種,分別完成各種操作的調(diào)用,實(shí)現(xiàn)各種功能,下面進(jìn)行簡單的介紹。
- INVITE/reINVITE:INVITE 發(fā)起會(huì)話邀請(qǐng)。reINVITE(在一個(gè)已存在的對(duì)話中發(fā)送的INVITE稱為reINVITE)修改已建立會(huì)話的參數(shù)。
- ACK:完成會(huì)話建立的3次握手 [INVITE-200-ACK],僅僅用于INVITE
- BYE :結(jié)束會(huì)話。
- CANCEL:取消正在建立中會(huì)話(INVITE已發(fā)送,但尚未收到最終響應(yīng)(final response))。
- UPDATE:更新會(huì)話參數(shù)。它被建議用于替代 re-INVITE,與 re-INVITE不同在于:它可以在初始INVITE未完成時(shí)發(fā)送,能用于在早對(duì)話(early dialog)中更新會(huì)話參數(shù)。
上面的4個(gè)請(qǐng)求用于會(huì)話建立與管理。
- REGISTER:登記UA當(dāng)前的聯(lián)系地址(contact)
- OPTIONS:查詢服務(wù)器或?qū)Χ薝A的能力,具體包括支持的方法(method),擴(kuò)展(extensions)、編解碼(codecs)等。
- PRACK:臨時(shí)響應(yīng)(Provisional Response)確認(rèn)。用于確認(rèn)收到了臨時(shí)響應(yīng),例如 “183 Session Progress”,以支持臨時(shí)響應(yīng)的可靠傳送。它不能應(yīng)用于“100 Trying ”,只有101~199 臨時(shí)響應(yīng)需要可靠傳送。如果沒有收到 PRACK,響應(yīng)消息將被重傳。
- NOTIFY:事件通知,具體的事件包括、業(yè)務(wù)狀態(tài)的改變(MWI,...),用戶狀態(tài)的改變等等。
- SUBSCRIBE:訂閱/取消(Expires=0)事件通知。
- PUBLISH:發(fā)布事件狀態(tài)。PUBLISH 與 REGISTER 的相似之處在于:允許用戶在另一個(gè)實(shí)體(狀態(tài)管理實(shí)體/registrar)中創(chuàng)建、修改和移除自己的狀態(tài)。對(duì)PUBLISH 請(qǐng)求的尋址與對(duì)于SUBSCRIBE 請(qǐng)求的尋址是一樣的,PUBLISH 請(qǐng)求的Request-URI 中填入的是用戶希望發(fā)布其事件狀態(tài)的資源地址。
上面的3個(gè)請(qǐng)求構(gòu)成SIP事件發(fā)布-訂閱-通知機(jī)制
- INFO:用于傳送 mid-call 信令信息,同一時(shí)刻只能有一個(gè) INFO 事務(wù)存在。通常用于攜帶 PSTN 信令消息(作為 MIME 附件),例如,ISDN UUI (用戶到用戶信息)。
- MESSAGE:針對(duì)即時(shí)消息 (IM)的擴(kuò)展,用于傳送即時(shí)消息。MESSAGE請(qǐng)求通過MIME附件中攜帶內(nèi)容。MESSAGE 請(qǐng)求自身不發(fā)起 SIP 對(duì)話,在正常的用法中,每個(gè)即時(shí)消息都是單獨(dú)存在的,非常類似 pager 消息。MESSAGE 請(qǐng)求可以在其他SIP請(qǐng)求發(fā)起的對(duì)話上下文中發(fā)送。
- REFER:指示接收者 (Request-URI所標(biāo)識(shí)的) 應(yīng)該使用請(qǐng)求中提供的信息聯(lián)系第三方。典型應(yīng)用:Call Transfer features 。Allowed outside an established dialogue。
總結(jié)
以上是生活随笔為你收集整理的sip gw功能包括_道哥漫谈:大话有趣的SIP通信的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 需求调研计划_干货!如何做好一个BI项目
- 下一篇: 初中数学四十二个几何模型_【初中数学】一