• 沒有找到結果。

SIP、SDP與RTP通訊協定

第一章 簡介

1.2 SIP、SDP與RTP通訊協定

SIP 為應用層通訊協定[16],可架構於 TCP (Transition Control Protocol)或 UDP

(User Datagram Protocol)上層,預設埠號為 5060。SIP 訊息主要被用來控制多媒體會 期(Session)的建立、修改或中斷,可分為 SIP 要求(Request)與 SIP 回應(Response)

兩種訊息。SIP 要求以 SIP 方法(Method)指明要求的目的。RFC 3261 中定義了六種 SIP 方法,分別為 INVITE、ACK、CANCEL、OPTIONS、REGISTER 與 BYE[16]。INVITE 方法用來建立會期。ACK 方法主要用來回應 INVITE 方法的最後回應訊息(包括 2xx、

3xx、4xx、5xx、6xx 的回應)。CANCEL 方法用來取消未建立完成的 SIP 要求訊息。

OPTIONS 方法用來查詢 SIP 伺服器的能力。REGISTER 方法用來向 SIP 伺服器註冊位 址資訊。BYE 方法用來結束已建立完成的會期。SIP 回應以回應碼來表示 SIP 要求的結 果,其中回應碼 1xx(100~199)表示暫時性回應、回應碼 2xx(200~299)表示要求方 法成功、回應碼 3xx(300~399)表示重導(Redirect)要求方法,而其餘的回應碼包括 4xx、5xx 與 6xx 表示要求方法失敗。

SIP 網路元件包含 SIP 伺服器與 SIP UA(User Agent)。SIP 伺服器分為三類:SIP

常用的 SIP 伺服器通常同時扮演 SIP Registrar 以及 SIP Proxy 的角色。

在圖 1-2 中,兩個 SIP UAs 透過 SIP 伺服器來交換 SIP 訊息,在交換完 SIP 訊息中 SDP(Session Description Protocol)[18]所描述的語音編碼(codec)與連線資訊之後,

雙方即可建立起 RTP(Real-time Transport Protocol)多媒體會期[21]。

UA1 SIP Servers UA2

1 REGISTER

1 REGISTER

2 200 OK

2 200 OK

4 100 Trying

4 100 Trying

3 INVITE

3 INVITE

6 100 Trying

6 100 Trying

5 INVITE

5 INVITE

7 180 Ringing

7 180 Ringing

8 180 Ringing

8 180 Ringing

9 200 OK

9 200 OK

10 200 OK

10 200 OK

11 ACK

12 RTP Stream

Off hook

Ringing 訊息表示目前正處於響鈴狀態(如圖 1-2○7 )。SIP 伺服器將 180 Ringing 訊息

INVITE sip:0944400001@3ffe:3600:2::140.113.1.3 SIP/2.0

Call-ID: 12345689-EFGHIJK@

CSeq: 1 INVITE

Contact: sip:0944600001@3ffe:3600:1::3

From: sip:0944600001@3ffe:3600:1::3;tag=c21wOje0 To: sip:0944400001@3ffe:3600:2::140.113.1.3 Via: SIP/2.0/UDP 3ffe:3600:1::3;branch=z9hG Content-Type: application/sdp

Content-Length: 135 v=0

o=00 1000000000 2000000000 IN IP6 3ffe:3600:1::3 s=Session SDP

c=IN IP6 3ffe:3600:1::3 t=0 0

m=audio 9000 RTP/AVP 0 8 4 18

SIP/2.0 403 Forbidden Call-ID: 12345689-EFGHIJK@

CSeq: 1 INVITE

From: sip:0944600001@3ffe:3600:1::3;tag=c21wOje0 To: sip:0944400001@3ffe:3600:2::140.113.1.3 Via: SIP/2.0/UDP 3ffe:3600:1::3;branch=z9hG Content-Length: 0

SIP 為採用 UTF(Universal Character Set Transformation Format)-8 字集的信令協 定。如圖 1-3 所示,左部分為 SIP 要求,右部分為 SIP 回應。SIP 訊息的結構分為三部 份。這三部分為起始行、標頭欄位(Header Fields;圖 1-3○c )與主體(Body;圖 1-3○d )。

起始行在 SIP 要求中稱為 Request Line(圖 1-3○a ),在 SIP 回應中稱為 Status Line(圖 1-3○b )。Request Line 指明 SIP 要求方法、目的 SIP URI(Uniform Resource Identifier)

與 SIP 版本。Status Line 指明 SIP 版本、SIP 回應碼與 SIP 回應碼的文字描述。表 1-1 說明 SIP 訊息中必要(mandatory)的標頭欄位,而表 1-2 說明與 SIP 信令路由路徑有 關的標頭欄位。Content-Type 標頭儲存著主體擺放的資訊類型。

表 1-1 SIP 訊息中的必要標頭欄位說明 SIP 標頭欄位 說明

Call-ID Call-ID 值用來辨識 SIP 對話(Dialog),同 SIP 對話會有相同 Call-ID 值

From 進行初始 SIP 會期的來源端 SIP URI To SIP 會期目的端的 SIP URI

Via 指明 SIP 回應的回程路由路徑

Cseq 用來匹配 SIP 要求與 SIP 回應的序號

Max-Forwards SIP 要求信令經過 SIP 伺服器,伺服器會將此欄位值減一,當此 欄位值為零,SIP 要求將被伺服器丟棄

表 1-2 SIP 訊息中的路由相關標頭欄位說明 SIP 標頭欄位 說明

Contact 指明目前 SIP UA 的所在 IP 位址與使用者名稱 Record-Route SIP Proxy 伺服器會依據需要而加入路由資訊

Route 複製 Record-Route 標頭內的路由資訊並指明 SIP 信令行進路徑 為了轉換 SIP 標頭內所帶的 IP 位址,本論文所研發的 SIPv6 Translator 系統先解析 出 SIP 標頭欄位,並將標頭欄位中含有 IP 資訊的部份作轉換。Request Line 以 SIP URI 指名 SIP UA 發出要求的對象。Contact 標頭欄位以 SIP URI 指明 SIP UA 目前所在的 IP 位址與使用者名稱。From 與 To 標頭欄位分別表示 SIP 會期來源端與目的端的 SIP URI,

並不會影響到 SIP 信令的路由路徑。Via 標頭欄位指明 SIP 回應的路由路徑。

Record-Route 標頭欄位可讓 SIP 伺服器強制指定 SIP 要求的傳送路由路徑。Route 標頭 欄位的內容是從 Record-Route 欄位複製,用來指明 SIP 要求的傳送路由路徑。透過 Via 與 Route 標頭欄位可得知 SIP 信令的行進路徑,其餘的標頭欄位請參考 RFC 3261[16]。

SDP 為內嵌在 SIP 主體(如圖 1-3○4 )中,並採用 UTF-8 字集的通訊協定。SDP 提供多媒體串流傳送或接收的相關資訊,當兩個 SIP UAs 透過 SIP 訊息交換 SDP 內容 之後,即可建立 RTP 多媒體通訊。SDP 包含數行<Type>=<Value>格式的文字,如圖 1-3 中 SIP 要求的主體部分所示。表 1-3 列出所有 SDP 協定中的型態(Type)說明。

以圖 1-3○4 的 SIP 主體為例,v=0 表示 SDP 版本為 0;o=00 1000000000 2000000000 IN IP6 3ffe:3600:1::3 表示產生會期的使用者名稱為 00、會期識別碼為 1000000000、會 期版本為 2000000000、網路型態為 IN 即 Internet、主機位址型態為 IP6 即主機位址型 態為 IPv6 位址與主機位址為 3ffe:3600:1::3;s=session SDP 表示會期名稱為 session SDP;c=IN IP6 3ffe:3600:1::3 表示會期連結的網路型態為 IN(即 Internet)、主機位址 型態為 IPv6 與主機位址為 3ffe:3600:1::3;t=0 0 表示會期的起始時間為與結束時間為 0

(起始於結束時間都為 0,表示會期會一直持續);m=audio 9000 RTP/AVP 0 8 4 18 表 示會期的多媒體型態為語音、接收多媒體資訊的埠號為 9000、傳輸層協定採 RTP/AVP 即 RTP over UDP,語音編碼格式依序為 0(表示 PCMU)、8(表示 PCMA)、4(表 示 G.723)及 18(表示 G.729),詳細對照請參考 RFC3550[21]。

表 1-3 SDP 型態說明 型態 說明

v SDP 版本

o 會期 ID 與產生會期的主機資訊

s 會期名稱

c 連接資訊,包括 IP 位址

b 頻寬資訊

z 時區調整資訊

k 加密鑰匙(Key)

a 會期屬性

t 會期的起始時間

r 會期的重複次數

m 多媒體名稱與傳輸埠位址

i 多媒體標題

u URI 資訊 e E-Mail 位址

p 電話號碼