定義
SIP 協(xié)議,即會(huì)話發(fā)起協(xié)議(Session Initiation Protocol), 是一個(gè)應(yīng)用層的 點(diǎn)對(duì)點(diǎn)協(xié)議 ,用于初始、管理和終止網(wǎng)絡(luò)中的語(yǔ)音和視頻會(huì)話, 屬于 GB28181 的核心之一。
SIP 協(xié)議是由IETF組織提出的IP電話信令協(xié)議,IETFRFC2543中對(duì)它的定義是一個(gè)基于文本的應(yīng)用層控制協(xié)議, 獨(dú)立于底層傳輸協(xié)議:TCP/UDP/SCTP, 用于建立、修改和終止 IP 網(wǎng)上的雙方或多方多媒體會(huì)話。借鑒了 HTTP、SMTP 等協(xié)議,支持代理、重定向及登記定位用戶等功能, 支持用戶移動(dòng)。
SIP協(xié)議通過(guò)與 RTP/RTCP、SDP、RTSP 等協(xié)議及 DNS 配合, 從而支持語(yǔ)音、視頻、數(shù)據(jù)、E-mail、 狀態(tài)、IM、聊天、游戲等應(yīng)用場(chǎng)景。
它可在 TCP 或 UDP 之上傳送,由于 SIP 本身具有握手機(jī)制,一般情況下首選 UDP傳輸協(xié)議。
從打電話的角度去理解
SIP協(xié)議,推薦閱讀:深入淺出SIP協(xié)議
本篇文章針對(duì)sip協(xié)議的應(yīng)用場(chǎng)景是建立在GB28181協(xié)議的基礎(chǔ)上來(lái)進(jìn)行理解和解讀的,如果理解有誤,還請(qǐng)各位網(wǎng)友不吝指教!在評(píng)論區(qū)留下您的寶貴建議,謝謝!
基本流程
sip協(xié)議的網(wǎng)絡(luò)元素:
- 用戶代理
- 代理服務(wù)器
- 注冊(cè)服務(wù)器
- 重定向服務(wù)器
- 位置服務(wù)器

上圖簡(jiǎn)單的勾勒出了sip協(xié)議網(wǎng)絡(luò)元素之間的關(guān)系,同時(shí)通過(guò)上圖也可以了解到sip會(huì)話的基本呼叫流程:
- 用戶代理
B向注冊(cè)服務(wù)器發(fā)送Register請(qǐng)求,攜帶contact地址; - 隨后注冊(cè)服務(wù)器將
B的地址,記錄到位置服務(wù)器; - 用戶代理
A向代理服務(wù)器發(fā)送invite請(qǐng)求啟動(dòng)與用戶代理B的會(huì)話; - 代理服務(wù)器會(huì)先向
A發(fā)送響應(yīng)100 Trying的信息以避免A重傳invite消息; - 然后代理服務(wù)器向位置服務(wù)器搜索
B的地址,獲取到地址后會(huì)進(jìn)一步轉(zhuǎn)發(fā)A的invite請(qǐng)求; - 通過(guò)上一步代理服務(wù)器將
A的請(qǐng)求轉(zhuǎn)發(fā)到B,B向代理服務(wù)器響應(yīng)180 Ringing信息; - 代理服務(wù)器將
B的響應(yīng)信息轉(zhuǎn)發(fā)給A,B向代理服務(wù)器響應(yīng)200 OK信息; - 緊接著
A給B發(fā)送ACK請(qǐng)求,一個(gè)會(huì)話至此建立完成。
關(guān)于GB28181的"客戶端對(duì)實(shí)時(shí)音視頻點(diǎn)播"的流程,本質(zhì)除sip服務(wù)器以外的都是sip客戶端, 也可以理解為客戶端對(duì)媒體發(fā)送端的基本呼叫流程,如下圖:

在GB28181標(biāo)準(zhǔn)中 中心信令服務(wù)器 (center control server)就是一個(gè)基于sip協(xié)議設(shè)計(jì)的負(fù)責(zé)核心sip信令應(yīng)用處理的SIP服務(wù)器, 信令安全路由網(wǎng)關(guān) (secure signal routing gateway)是一種具有安全功能的sip服務(wù)器。
"組成中心信令控制的邏輯實(shí)體包括代理服務(wù)器、注冊(cè)服務(wù)器、重定向服務(wù)器、背靠背用戶代理等的一種或者幾種,是負(fù)責(zé)核心SIP信令應(yīng)用處理的SIP服務(wù)器" --引自《GB/T 28181-2016 公共安全視頻監(jiān)控聯(lián)網(wǎng)系統(tǒng) 信息傳輸、交換、控制技術(shù)要求》
協(xié)議結(jié)構(gòu)
sip協(xié)議包括六個(gè)主要請(qǐng)求和六類響應(yīng)消息:
請(qǐng)求:
INVITEBYEREGISTERCANCELACKOPTIONS
響應(yīng):
1xx: 臨時(shí)/信息響應(yīng)2xx: 成功響應(yīng)3xx: 重定向響應(yīng)4xx: 客戶端故障響應(yīng)5xx: 服務(wù)器故障響應(yīng)6xx: 全局故障響應(yīng)
下面是GB28181協(xié)議標(biāo)準(zhǔn)下較常用的的sip請(qǐng)求:
INVITE
INVITE請(qǐng)求在GB28181協(xié)議中是視頻點(diǎn)播(包括實(shí)時(shí)預(yù)覽和歷史回放)流程中最重要的一個(gè)環(huán)節(jié),在invite請(qǐng)求中會(huì)包含SDP協(xié)議的內(nèi)容。SDP協(xié)議(Session Description Protocol)是用來(lái)描述媒體數(shù)據(jù)是如何使用的,它由3個(gè)部分組成,可分為:
- 第1部分是Session description
v= (protocol version)o= (owner/creator and session identification)s= (session name)i= (session information)u= (URI of description)e= (email address – contact detail)p= (phone number – contact detail)c= (connection information – not required if included in media description)b= (session bandwidth information)z= (time zone adjustments)k= (encryption key)a= (zero or more session attribute lines)
- 第2部分是Time description
t= (time the session is active)r= (repeat times)
- 第3部分是Media description
m= (media name/ transport address)i= (media title)c= (connection information – not required if included in session description)b= (bandwidth information)k= (encryption key)a= (zero or more media attribute lines)
sdp字段的具體細(xì)節(jié)可參考鏈接:
sdp會(huì)話描述協(xié)議
sdp協(xié)議參考文獻(xiàn):
《GB/T 28181-2016 公共安全視頻監(jiān)控聯(lián)網(wǎng)系統(tǒng) 信息傳輸、交換、控制技術(shù)要求》附錄FSDP定義
下面是在GB28181協(xié)議中視頻點(diǎn)播流程中的invite數(shù)據(jù)包:

BYE
BYE包是用來(lái)終止已經(jīng)建立的會(huì)話,通常出現(xiàn)BYE包的場(chǎng)景是媒體接收端主動(dòng)發(fā)起實(shí)時(shí)音視頻點(diǎn)播流程時(shí)出現(xiàn)。它不能由代理服務(wù)器發(fā)送,也不能發(fā)送到掛起的INVITE或者未建立的會(huì)話。
具體的數(shù)據(jù)包流程分析如下圖:

REGISTER
通過(guò)抓包可以查看到GB28181一個(gè)完整的基本注冊(cè)流程:

在GB28181中它是采用RFC 3261規(guī)范中基于數(shù)字摘要的CRAM機(jī)制來(lái)進(jìn)行注冊(cè),基本注冊(cè)流程如下圖:

具體的數(shù)據(jù)包分析如下圖:

CANCEL
主要是用來(lái)終止未建立的會(huì)話。用戶代理使用此請(qǐng)求取消之前發(fā)起的待處理的invite。它可以由用戶代理或代理服務(wù)器發(fā)送。
ACK
ACK在RFC-3262規(guī)范中是一個(gè)請(qǐng)求,它只有在INVITE請(qǐng)求中出現(xiàn),當(dāng)INVITE請(qǐng)求響應(yīng)是200 OK時(shí), 后續(xù)的ACK則是一個(gè)獨(dú)立事務(wù)。

-
TCP
+關(guān)注
關(guān)注
8文章
1425瀏覽量
83549 -
UDP
+關(guān)注
關(guān)注
0文章
334瀏覽量
35425 -
傳輸協(xié)議
+關(guān)注
關(guān)注
0文章
80瀏覽量
11954 -
SCTP
+關(guān)注
關(guān)注
0文章
7瀏覽量
8420
發(fā)布評(píng)論請(qǐng)先 登錄
信令控制協(xié)議sip
嵌入式SIP協(xié)議棧怎么設(shè)計(jì)?
SIP協(xié)議在嵌入式環(huán)境下有什么應(yīng)用?
如何實(shí)現(xiàn)WebRTC協(xié)議與SIP協(xié)議互通
支持SIP協(xié)議的軟交換控制設(shè)計(jì),
SIP協(xié)議性能測(cè)試的方法
SIP協(xié)議,什么是SIP協(xié)議
SIP協(xié)議的應(yīng)用及技術(shù)支持
SIP協(xié)議在3G網(wǎng)絡(luò)中的應(yīng)用
自己動(dòng)手寫(xiě)SIP協(xié)議棧
基于改進(jìn)SIP密鑰協(xié)議的SIP安全認(rèn)證模型
SIP協(xié)議的基本信息及優(yōu)勢(shì)
SIP協(xié)議的定義及基本流程
評(píng)論