網絡-SIP協議初級篇


1、Sip 協議簡介

SIP(Session Initiation Protocol)會話初始協議

它是一個基於文本的應用層控制協議,用於創建、修改和釋放一個或多個參與者的會話。SIP 是一種源於互聯網的IP 語音會話控制協議,具有靈活、易於實現、便於擴展等特點

SIP(Session Initiation Protocol,會話初始協議)是由IETF(Internet Engineering Task Force,因特網工程任務組)制定的多媒體通信協議。廣泛應用於CS(Circuit Switched,電路交換)、NGN(Next Generation Network,下一代網絡)以及IMS(IP Multimedia Subsystem,IP多媒體子系統)的網絡中,可以支持並應用於語音、視頻、數據等多媒體業務,同時也可以應用於Presence(呈現)、Instant Message(即時消息)等特色業務。可以說,有IP網絡的地方就有SIP協議的存在。
SIP是類似於HTTP,SIP可以減少應用特別是高級應用的開發時間。由於基於IP協議的SIP利用了IP網絡,固定網運營商也會逐漸認識到SIP技術對於他們的遠意義。

2、主要特點

  • 獨立於TCP或者UDP,使用自己應用層協議保證消息的可靠傳送
  • 消息體采用文本方式UTF-8
  • 以客戶-服務器方式建立會話
  • 靈活的尋址方式
  • 是應用層的控制協議,可以建立、修改和結束多媒體會話
  • SIP沒有媒體協商功能,往往需要集成SDP協議
  • 可應用於視頻、語音、即時通信、在線游戲和虛擬現實等多媒體交互式用戶會話
  • rfc3261為核心,但是擴展眾多,可滿足各種復雜應用

3、功能實體

User Agent(呼叫代理)    是SIP網絡的終端,具體的分為UserAgent Client和UserAgent Server。UAC是客戶端,表示主叫;UAS是服務端,表示被叫。

REGISTRAR SERVER(注冊服務器):接受客戶端的注冊請求,將用戶的地址信息寫入數據庫,並返回注冊狀態。

REDIRECT SERVER(重定向服務器):  接受SIP的請求,映射請求的原地址成零個或者多個IP地址,並且返回給客戶端。 由客戶端重新發起請求。

LOCATION SERVER(定位服務器): 管理若干數據庫,接受由Redirect Server或者Proxy Server的路由查詢。

Proxy Server(代理服務器):完成SIP消息的轉接和轉發功能,可以修改SIP消息內容。

 

 

 

4、消息的構成

請求:UAC -> UAS , 包括3個元素:請求行、消息頭、消息體

響應:UAS ->UAC :狀態行、消息頭、消息體

備注:UAC/UAS的是相對的概念,可倒換

5、

SIP -UAC 6種基本方法

  1. INVITE——邀請用戶加入呼叫
  2. BYE——終止一呼叫上的兩個用戶之間的呼叫 
  3. OPTIONS——請求關於服務器能力的信息
  4. ACK——確認客戶機已經接收到對INVITE的最終響應
  5. REGISTER——SIP地址注冊,讓服務器知道SIP端點的聯系地址
  6. CANCEL——取消會話邀請

SIP -UAS 協議狀態響應

  1. 1xx 臨時響應 100 Trying     180 Ringing
  2. 2xx 成功響應 200 OK
  3. 3xx 重定向響應 302 Moved Temporarilly
  4. 4xx 客戶端錯誤響應 403 Forbidden     404 Not Found
  5. 5xx 服務器錯誤響應 500 Server internal Error
  6. 6xx 全局錯誤響應  600 Busy Everywhere

6、三個重要概念

Dialog (對話) 指的是兩個UA之間端到端的關系,它在Call ID、local tag和remote tag都產生之后被認為建立;

Transaction (事務)指的是一個請求的處理過程,當一個請求被發出,針對這個請求的響應也被處理之后,才是一個完整的事務,當然可能包含一個或多個臨時響應或一個或多個最終響應;

Session (會話) 是SDP方面的概念,表示多媒體發送者和接收者通過媒體流進行交互的過程。

7、SIP之GB28181注冊、注銷詳解

a) 1:SIP 代理向SIP 服務器發送 Register 請求;
b) 2:SIP 服務器向 SIP 代理發送響應401, 並在響應的消息頭 WWW_Authenticate 字段中給出適合SIP 代理的認證體制和參數;
c) 3:SIP 代理重新向SIP 服務器發送 Register 請求, 在請求的 Authorization 字段給出信任書,包含認證息;
d) 4:SIP 服務器對請求進行驗證, 如果檢查出 SIP 代理身份合法, 向 SIP 代理發送成功響應
200 OK, 如果身份不合法則發送拒絕服務應答。
注:“SIP代理”這里指的UAC(User Agent Client) "SIP服務器"這里指的是UAS(User Agent Server)
當UAS接收到消息后,回送一個401消息“Unauthorized”在消息包頭添加如下字段

WWW-Authenticate:

Digest realm="3402000000",qop="auth",nonce="52d33cd23eea89a9563618cdf31d720a"

其中realm指的是域名(根據自己項目的實際情況填寫),Nonces是隨機數
UAC向UAS注冊,下面是注冊消息

REGISTER sip:34020000002000000001@36.103.240.124:5060 SIP/2.0

Via: SIP/2.0/UDP 10.10.0.10:7081;rport;branch=z9hG4bK460266740

From: <sip:34020000002000000001@10.10.0.10:7081>;tag=845016216

To: <sip:34020000002000000001@10.10.0.10:7081>

Call-ID: 1688820428

CSeq: 1 REGISTER

Contact: <sip:34020000002000000001@10.10.0.10:7081>

Max-Forwards: 70

User-Agent:

Expires: 3600

Content-Length: 0

字段說明:

請求起始行:表示UAC向IP地址為36.103.240.124的服務器發起注冊,SIP版本號為2.0

From字段:指明該REGISTER請求消息由UAS(IP地址:36.103.240.124)控制的UAC發起的。

To字段:指明REGISTER請求接收方的地址。此時REGISTER請求的接收方為IP地址為36.103.240.124的UAS。(這個值和To頭域的值相同,除非這個請求是第三方發起的注冊請求。)

Call-ID字段:UAC發出的給某個注冊服務器(registrar)的所有注冊請求都應該有相同的Call-ID頭域值。如果相同的客戶端用了不同的Call-ID值,注冊服務器(registrar)就不能檢測是否一個REGISTER請求由於延時的關系導致了故障。

Cseq字段:Cseq值保證了REGISTER請求的正確順序。一個UA為每一個具備相同的Call-ID的REGISTER請求順序遞增這個Cseq字段。

Contact字段:在REGISTER請求中的Contact字段指明用戶可達位置。

Expires字段:表示該登記生存期為3600s。

Content-Length字段:表明此請求消息消息體的長度為空,即此消息不帶會話描述。

備注:一個合法的SIP請求必須至少包含如下頭域:To、FROM、Cseq、Call-ID、Max-Forwards、Via


 

 注銷流程圖描述如下:

a) 1:SIP 代理向SIP 服務器發送 Register 請求,Expires 字段的值為0, 表示SIP 代理要注銷;
b) 2:SIP 服務器向 SIP 代理發送響應401, 並在響應的消息頭 WWW_Authenticate 字段中給出適合SIP 代理的認證體制和參數;
c) 3:SIP 代理重新向SIP 服務器發送 Register 請求, 在請求的 Authorization 字段給出信任書,包含認證信息,Expires 字段的值為0;
d) 4:SIP 服務器對請求進行驗證, 如果檢查出 SIP 代理身份合法, 向 SIP 代理發送成功響應
200 OK, 如果身份不合法則發送拒絕服務應答。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM