定義
SIP
協議,即會話發起協議(Session Initiation Protocol
), 是一個應用層的 點對點協議 ,用于初始、管理和終止網絡中的語音和視頻會話, 屬于 GB28181
的核心之一。
SIP
協議是由IETF
組織提出的IP
電話信令協議,IETFRFC2543
中對它的定義是一個基于文本的應用層控制協議, 獨立于底層傳輸協議:TCP/UDP/SCTP
, 用于建立、修改和終止 IP
網上的雙方或多方多媒體會話。借鑒了 HTTP
、SMTP
等協議,支持代理、重定向及登記定位用戶等功能, 支持用戶移動。
SIP
協議通過與 RTP/RTCP
、SDP
、RTSP
等協議及 DNS
配合, 從而支持語音、視頻、數據、E-mail
、 狀態、IM
、聊天、游戲等應用場景。
它可在 TCP
或 UDP
之上傳送,由于 SIP
本身具有握手機制,一般情況下首選 UDP
傳輸協議。
從打電話的角度去理解
SIP
協議,推薦閱讀:深入淺出SIP協議
本篇文章針對sip
協議的應用場景是建立在GB28181
協議的基礎上來進行理解和解讀的,如果理解有誤,還請各位網友不吝指教!在評論區留下您的寶貴建議,謝謝!
基本流程
sip協議的網絡元素:
- 用戶代理
- 代理服務器
- 注冊服務器
- 重定向服務器
- 位置服務器
上圖簡單的勾勒出了sip
協議網絡元素之間的關系,同時通過上圖也可以了解到sip
會話的基本呼叫流程:
- 用戶代理
B
向注冊服務器發送Register
請求,攜帶contact
地址; - 隨后注冊服務器將
B
的地址,記錄到位置服務器; - 用戶代理
A
向代理服務器發送invite
請求啟動與用戶代理B
的會話; - 代理服務器會先向
A
發送響應100 Trying
的信息以避免A
重傳invite
消息; - 然后代理服務器向位置服務器搜索
B
的地址,獲取到地址后會進一步轉發A
的invite
請求; - 通過上一步代理服務器將
A
的請求轉發到B
,B
向代理服務器響應180 Ringing
信息; - 代理服務器將
B
的響應信息轉發給A
,B
向代理服務器響應200 OK
信息; - 緊接著
A
給B
發送ACK
請求,一個會話至此建立完成。
關于GB28181
的"客戶端對實時音視頻點播"的流程,本質除sip
服務器以外的都是sip
客戶端, 也可以理解為客戶端對媒體發送端的基本呼叫流程,如下圖:
在GB28181
標準中 中心信令服務器 (center control server
)就是一個基于sip
協議設計的負責核心sip
信令應用處理的SIP服務器, 信令安全路由網關 (secure signal routing gateway
)是一種具有安全功能的sip
服務器。
"組成中心信令控制的邏輯實體包括代理服務器、注冊服務器、重定向服務器、背靠背用戶代理等的一種或者幾種,是負責核心SIP信令應用處理的SIP服務器" --引自《GB/T 28181-2016 公共安全視頻監控聯網系統 信息傳輸、交換、控制技術要求》
協議結構
sip
協議包括六個主要請求和六類響應消息:
請求:
INVITE
BYE
REGISTER
CANCEL
ACK
OPTIONS
響應:
1xx: 臨時/信息響應
2xx: 成功響應
3xx: 重定向響應
4xx: 客戶端故障響應
5xx: 服務器故障響應
6xx: 全局故障響應
下面是GB28181
協議標準下較常用的的sip
請求:
INVITE
INVITE
請求在GB28181
協議中是視頻點播(包括實時預覽和歷史回放)流程中最重要的一個環節,在invite
請求中會包含SDP
協議的內容。SDP
協議(Session Description Protocol
)是用來描述媒體數據是如何使用的,它由3個部分組成,可分為:
- 第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
字段的具體細節可參考鏈接:
sdp會話描述協議
sdp
協議參考文獻:
《GB/T 28181-2016 公共安全視頻監控聯網系統 信息傳輸、交換、控制技術要求》附錄F
SDP
定義
下面是在GB28181
協議中視頻點播流程中的invite
數據包:
BYE
BYE
包是用來終止已經建立的會話,通常出現BYE
包的場景是媒體接收端主動發起實時音視頻點播流程時出現。它不能由代理服務器發送,也不能發送到掛起的INVITE
或者未建立的會話。
具體的數據包流程分析如下圖:
REGISTER
通過抓包可以查看到GB28181
一個完整的基本注冊流程:
在GB28181
中它是采用RFC 3261
規范中基于數字摘要的CRAM
機制來進行注冊,基本注冊流程如下圖:
具體的數據包分析如下圖:
CANCEL
主要是用來終止未建立的會話。用戶代理使用此請求取消之前發起的待處理的invite
。它可以由用戶代理或代理服務器發送。
ACK
ACK
在RFC-3262
規范中是一個請求,它只有在INVITE
請求中出現,當INVITE
請求響應是200 OK
時, 后續的ACK
則是一個獨立事務。
-
TCP
+關注
關注
8文章
1324瀏覽量
78756 -
UDP
+關注
關注
0文章
317瀏覽量
33801 -
傳輸協議
+關注
關注
0文章
70瀏覽量
11389 -
SCTP
+關注
關注
0文章
7瀏覽量
8119
發布評論請先 登錄
相關推薦
評論