sip協議是由ietf提出的ip**信令協議,主要目的是為了解決ip網路中的信令控制,以及同軟交換通訊。
sip協議類似http協議:
報文結構:
start-line1.start-line分請求行和狀態行message-header
crlf
[ message-body ]
請求行由請求型別、請求目的位址和協議版本號組成
請求型別:invite、ack、options、bye、cancel、register
狀態行:被叫放向主叫方返回的狀態資訊,1xx,2xx,3xx,4xx,5xx,6xx
請求型別:
invite:用於發起呼叫 invite訊息包括訊息頭和資料區兩部分。invite 訊息頭包含主、被呼叫的位址,呼叫主題和呼叫優先順序等資訊。資料區則是關於會話**的資訊,可由會話描述協議sdp 來實現。
bye:當乙個使用者決定中止會話時,可以使用bye 來結束會話。
options:用於詢問被叫端的能力資訊,但options 本身並不能發起呼叫。
ack:對已收到的訊息進行確認應答。
ack:對已收到的訊息進行確認應答。
cancel:取消當前的請求,但它並不能中止已經建立的連線。
狀態型別:
1xx:臨時訊息:表示表示請求訊息已經收到,後面將繼續處理該請求。
2xx:成功訊息:表示請求已經被成功的理解、接受或執行。
3xx:重定向訊息:表示為了完成請求還需採取更進一步的動作。
4xx:客戶機錯誤:表示該請求含有語法錯誤或在這個伺服器上不能被滿足。
5xx:伺服器錯誤:表示該伺服器不能處理乙個明顯有效的請求。
6xx:全域性性故障:表示該請求在任何伺服器上都不能被實現。
2.message-header
to:格式:to:顯示名《接收者uri>;tag=n;顯示名和tag可選。接收者uri是sip網路種唯一標識接收終端的識別符號。例:to:denny;tag=11111 或 to:sip:[email protected]
from: 訊息頭from給出標識會話發起者的uri。比如:from:sip:[email protected];tag=hyh8。tag是必需的。
call-id: 用於全域性唯一標識正在建立的會話的識別符號。 隨機數加uac標識資訊。
cseq: 用於標識同一會話中不同事務的序號,通常由乙個用作序號的整型數和訊息型別組成。整個會話操作過程由不同的事務組成,每一事務所涉及的訊息的cseq序號必須相同。
via:為響應訊息提供傳輸路徑,當請求訊息經過每一跳節點時,每一跳節點都把自身的ip位址資訊放入頂層via中。響應訊息則沿著請求訊息記錄下的傳輸路徑反向傳輸,首先移走指明自身ip位址資訊的頂層訊息頭
3.message-body
sip協議乙個最主要的作用就是協商**資訊。**資訊通過message-body攜帶,基於sdp會話描述協議。
對於pstn語音編碼格式,主要有g711a、g711u、g729等。
sip協商中主叫方會帶上自己支援的所有音訊編碼列表到被叫方,被叫方一般在回鈴時從主叫支援的型別中選出一種或多種自己支援的編碼,返回主叫後,雙人按順序選出第乙個支援的編碼。
二:舉例:
(1) uac發起register請求到uas
(2) uas如果需要驗證賬號資訊,響應乙個401 unauthorized,其中包含用於密碼加密的隨機字串
(3) uac收到401後攜帶自己的賬號資訊(其中密碼經過md5加密)重新發起乙個register請求
(4) 伺服器校驗通過後返回200ok
(5) uac發起invite請求,其中攜帶了主被叫等資訊(from、to頭域等)
(6) uas一般會馬上響應100trying告訴uac正在嘗試呼叫被叫
(7) 被叫響應後uas返回180到uac,其中可能攜帶彩鈴**資訊到uac
(8) 被叫接聽後返回200給uac,其中可能攜帶會話**資訊到uac
(9) uac返回ack到uas確認收到200
三:重要頭域解釋
對於uac或uas來說,sip協議是一種有狀態的協議,同乙個會話的前後相關的信令必須送到相同的uac或uas。sip協議的via、record-route頭域正是用於用來指示路由的字段。
via用於指示response返回的路徑,不會影響後續request。
record-route用於指示同一callid後續請求的路徑。
rport是接收方收到via為內網的請求時,加上 自己看到的傳送方的ip(received)和埠(rport),用於nat。
四。sip測試工具
sipp是sip協議棧的乙個免費開源的測試工具, 它模擬了一些基本的uac和uas功能,並建立和釋放多個呼叫的invite和bye的方法,可以讀取xml和csv檔案生成註冊或呼叫流程,可以動態顯示統計資訊和動態調整呼叫速率。
模擬uas:./sipp -sn uas -i 192.168.1.249 -p 5077 //監聽5077埠
模擬uac:./sipp -sn uac 192.168.1.249:5077 -i 192.168.1.249 -p 5078 -r 50 -rp 1000 //每1000ms傳送50個呼叫
五。協議棧
常見協議棧有:
1、pjsip:
2、sofia:
3、osip:
SIP VOIP入門 SIP協議的基礎介紹
要了解sip首先要清楚系統是如何定義終端 endpoint 位置的。sip中使用三種部分以定位乙個終端,sip uri,聯絡位址和 位址。sip uri用於標識sip使用者,而不是位置,它與電子郵件類似,實際上看起來和電子郵件位址是一樣的。典型的sip uri位址包含 號碼,甚至mac位址,可能看起...
SIP協議詳解
sip 協議概念 會話啟動協議sip session initiation protocol 是乙個在ip網路上進行多 通訊的應用層控制協議,它被用來創 建 修改 和終結乙個或多個參加者參加的會話程序。sip協議可用於發起會話,也可以用於邀請成員加入已經用其它方式建立的會話。sip協議透明地支援名字...
SIP協議初探
1.sip協議的定義 2.sip協議特點 位於應用層,作用 主要控制通訊雙方的信令。h.323和sip分別是通訊領域與網際網路兩大陣營推出的協議。h.323企圖把ip 當作是眾所周知的傳統 只是傳輸方式發生了改變,由電路交換變成了分組交換。而sip協議側重於將ip 作為網際網路上的乙個應用,較其它應...