歡迎訪問新悅網(wǎng)絡(luò)設(shè)備有限公司
什么是 SIP 協(xié)議?
定義: SIP會(huì)話發(fā)起協(xié)議是基于 IP 的電話應(yīng)用程序的信令協(xié)議。信令協(xié)議為通信提供控制層,例如語音呼叫的建立和釋放。
SIP架構(gòu)
最簡單的,SIP 架構(gòu)由 SIP 用戶代理和服務(wù)器組成。
用戶代理是通信的端點(diǎn)。用戶代理的示例有軟件電話、IP 電話或移動(dòng)電話。需要 SIP 服務(wù)器來定位其他用戶代理。此外,SIP服務(wù)器還可以提供其他服務(wù),例如計(jì)費(fèi)和SIP轉(zhuǎn)發(fā)。
SIP 協(xié)議基礎(chǔ)知識(shí)
SIP 是一種應(yīng)用層協(xié)議,與 HTTP 等基于文本的應(yīng)用層協(xié)議非常相似。事實(shí)上,它也使用請(qǐng)求和響應(yīng)消息事務(wù)和標(biāo)頭字段。下面顯示了用戶代理 A 向用戶代理 B 發(fā)起的呼叫的請(qǐng)求和響應(yīng)消息事務(wù)。
對(duì)于傳輸,SIP 可以在 TCP、UDP 或 SCTP 傳輸層協(xié)議上運(yùn)行。以下是 SIP 請(qǐng)求消息示例。
INVITE sip:0097239287044@sip.cybercity.dk SIP/2.0
Via: SIP/2.0/UDP 192.168.1.2:5060;branch=z9hG4bKnp85213694-430aa1de192.168.1.2;rport
From: "arik" <sip:voi18062@sip.****.dk>;tag=51449dc
To: <sip:0097239287044@sip.****.dk>
Call-ID: 85216695-42dcdb1d@192.168.1.2
CSeq: 1 INVITE
User-Agent: Nero SIPPS IP Phone Version 2.0.51.16
Expires: 120
Accept: application/sdp
Content-Type: application/sdp
Content-Length: 270
Contact: <sip:voi18062@192.168.1.2>
Max-Forwards: 70
Allow: INVITE, ACK, CANCEL, BYE, REFER, OPTIONS, NOTIFY, INFO
為了進(jìn)行比較,這里有一個(gè) HTTP 請(qǐng)求消息
GET /download.html HTTP/1.1
Host: www.ethereal.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6) Gecko/20040113
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://www.ethereal.com/development.html
SIP 請(qǐng)求方法
SIP 借用了 HTTP 的 Method 字段來同樣確定請(qǐng)求的類型。SIP 有 14 種方法請(qǐng)求類型。最常用的方法是語音呼叫期間使用的 INVITE、ACK、BYE 和 REGISTER。SIP 請(qǐng)求消息的第一行包括方法類型和請(qǐng)求 URI(請(qǐng)求的當(dāng)前目的地)。
SIP請(qǐng)求方法表
SIP 請(qǐng)求標(biāo)頭
標(biāo)頭字段用于配置 SIP 請(qǐng)求消息。以下是請(qǐng)求消息的一些常見標(biāo)頭。還有更多可用的標(biāo)頭。
常見的SIP請(qǐng)求頭
SIP 尋址和 SIP URI
To、From 和 Contact 標(biāo)頭字段中使用的 SIP URI 表示用戶的 SIP 號(hào)碼。它與電子郵件地址非常相似。它由三個(gè)部分組成<protocol:user@gateway>。該協(xié)議可以是 sip 或 sips,其中后者使用 TLS 進(jìn)行保護(hù)。該用戶是SIP網(wǎng)關(guān)或服務(wù)器上的唯一用戶。
SIP 響應(yīng)狀態(tài)代碼
再次與 HTTP 類似,SIP 響應(yīng)提供狀態(tài)代碼來指示 SIP 請(qǐng)求的結(jié)果。下面列出了常見的 SIP 響應(yīng)狀態(tài)碼。
常見 SIP 響應(yīng)狀態(tài)代碼
SIP 消息正文內(nèi)容和 SDP
SIP 與內(nèi)容無關(guān)。盡管它以語音呼叫信令而聞名,但它也用于建立消息傳遞、視頻會(huì)議、短信等會(huì)話。SIP 消息正文確定正在建立的媒體會(huì)話的類型。消息正文通常包含在 SIP 邀請(qǐng)請(qǐng)求中,作為初始會(huì)話建立的一部分。
會(huì)話描述協(xié)議 (SDP) 是一種用于 VoIP 的特殊內(nèi)容類型。內(nèi)容類型指定為 application/sdp。在以下 SIP Invite 消息中,SDP 指定 VoIP 呼叫可用的語音編解碼器。
帶有 SDP 消息正文的 SIP 邀請(qǐng)
INVITE sip:0097239287044@sip.cybercity.dk SIP/2.0
Via: SIP/2.0/UDP 192.168.1.2:5060;branch=z9hG4bKnp85213694-430aa1de192.168.1.2;rport
From: "arik" <sip:voi18062@sip.cybercity.dk>;tag=51449dc
To: <sip:0097239287044@sip.cybercity.dk>
Call-ID: 85216695-42dcdb1d@192.168.1.2
CSeq: 1 INVITE
User-Agent: Nero SIPPS IP Phone Version 2.0.51.16
Expires: 120
Accept: application/sdp
Content-Type: application/sdp
Content-Length: 270
Contact: <sip:voi18062@192.168.1.2>
Max-Forwards: 70
Allow: INVITE, ACK, CANCEL, BYE, REFER, OPTIONS, NOTIFY, INFO
v=0
o=SIPPS 85214742 85214739 IN IP4 192.168.1.2
s=SIP call
c=IN IP4 192.168.1.2
t=0 0
m=audio 30000 RTP/AVP 0 8 97 2 3
a=rtpmap:0 pcmu/8000
a=rtpmap:8 pcma/8000
a=rtpmap:97 iLBC/8000
a=rtpmap:2 G726-32/8000
a=rtpmap:3 GSM/8000
a=fmtp:97 mode=20
a=sendrecv
SIP VoIP 會(huì)話呼叫流程
現(xiàn)在我們已經(jīng)掌握了基礎(chǔ)知識(shí),讓我們將所有內(nèi)容放在一起以建立 SIP 呼叫流程以建立 VoIP 呼叫。建立呼叫有四個(gè)基本部分:注冊(cè)、呼叫建立、VoIP 呼叫和呼叫終止。
A:注冊(cè)
當(dāng)用戶代理(例如軟件電話)啟動(dòng)時(shí),它需要向 SIP 服務(wù)器注冊(cè)才能被其他用戶代理找到。SIP 注冊(cè)請(qǐng)求消息用于此目的。它通過“To”和“From”SIP URI 提供位置綁定?;蛘撸梢酝ㄟ^“聯(lián)系人”字段提供附加綁定。
SIP注冊(cè)消息
REGISTER sip:sip.cybercity.dk SIP/2.0
Via: SIP/2.0/UDP 192.168.1.2;branch=z9hG4bKnp151248737-46ea715e192.168.1.2;rport
From: <sip:voi18063@sip.cybercity.dk>;tag=903df0a
To: <sip:voi18063@sip.cybercity.dk>
Call-ID: 578222729-4665d775@578222732-4665d772
Contact: <sip:voi18063@192.168.1.2:5060;line=9c7d2dbd8822013c>;expires=1200;q=0.500
Expires: 1200
CSeq: 68 REGISTER
Content-Length: 0
Max-Forwards: 70
User-Agent: Nero SIPPS IP Phone Version 2.0.51.16
B:呼叫建立
呼叫建立就是奇跡發(fā)生的地方。這里有幾個(gè)步驟,所以讓我們按順序一一介紹。
- SIP 邀請(qǐng)請(qǐng)求- SIP 邀請(qǐng)開始呼叫建立嘗試。此消息包含被叫方(To 字段中的 SIP URI)。該信息從呼叫者發(fā)送到 SIP 服務(wù)器,在該服務(wù)器中查找被呼叫者。在較大的網(wǎng)絡(luò)中,如果被叫方不在本地,SIP 服務(wù)器可能需要咨詢其他 SIP 服務(wù)器。一旦找到被叫方,就會(huì)轉(zhuǎn)發(fā)邀請(qǐng)。對(duì)于 VoIP,邀請(qǐng)還包括帶有 VoIP 呼叫參數(shù)的 SDP 消息正文。
- SIP 響應(yīng) 100(嘗試) - 此消息從 SIP 服務(wù)器發(fā)送到被叫方以確認(rèn)邀請(qǐng)請(qǐng)求。
- SIP 響應(yīng) 180(振鈴) - 此消息表明被叫方收到了邀請(qǐng),并且他們的用戶代理正在提醒用戶。
- SIP 響應(yīng) 200(確定) - 用戶接聽時(shí),會(huì)發(fā)回 200 響應(yīng)以確認(rèn)呼叫。此外,被叫方還發(fā)送帶有其 VoIP 呼叫參數(shù)的 SDP 消息正文。由于此消息和來自呼叫者的初始邀請(qǐng),已發(fā)生 VoIP 呼叫參數(shù)的交換和協(xié)商。
- SIP Ack 請(qǐng)求- 最后,呼叫者通過返回給被叫者的 Ack 請(qǐng)求進(jìn)行確認(rèn)。然后,被叫方向主叫方發(fā)起 VoIP 呼叫。
C:網(wǎng)絡(luò)電話呼叫
VoIP 呼叫本身使用 RTP實(shí)時(shí)傳輸協(xié)議在用戶代理之間傳輸。該協(xié)議用于通過 IP 網(wǎng)絡(luò)傳送音頻和視頻數(shù)據(jù)。附加協(xié)議 RTCP(RTP 控制協(xié)議)用于為 RTP 傳輸提供統(tǒng)計(jì)和控制。我們將在即將發(fā)布的博客中介紹 RTP 和 RTCP。
- 01-20
- 01-20
- 01-20
- 01-20
- 01-17
- 01-17
- 01-17
- 01-16
最新內(nèi)容
- 11-11
- 10-21
- 09-23
- 08-02
- 07-24
- 07-18
- 07-15
- 07-10
知識(shí)庫