定義
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協議包括六個主要請求和六類響應消息:
請求:
INVITEBYEREGISTERCANCELACKOPTIONS
響應:
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 公共安全視頻監控聯網系統 信息傳輸、交換、控制技術要求》附錄FSDP定義
下面是在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文章
1425瀏覽量
83506 -
UDP
+關注
關注
0文章
334瀏覽量
35414 -
傳輸協議
+關注
關注
0文章
80瀏覽量
11950 -
SCTP
+關注
關注
0文章
7瀏覽量
8416
發布評論請先 登錄
信令控制協議sip
嵌入式SIP協議棧怎么設計?
SIP協議在嵌入式環境下有什么應用?
支持SIP協議的軟交換控制設計,
SIP協議性能測試的方法
SIP協議在3G網絡中的應用
自己動手寫SIP協議棧
基于改進SIP密鑰協議的SIP安全認證模型
SIP協議的基本信息及優勢
SIP協議的定義及基本流程
評論