SIP基本概念

2021-08-01 22:31:46 字數 1977 閱讀 4659

sip協議中,比較有特點的就是sip事務了。那麼想要理解sip事務的概念,我們還需要了解sip請求的一些內容。sip事務的概念:乙個sip請求以及由它觸發的一系列應答(包括臨時應答和乙個最終應答)。

sip請求有6種:invite, ack, options, bye, cancel, register

sip請求的格式包括請求行(如invite sip:192.168.101.30 sip/2.0),

sip應答的格式包括狀態行(如sip/2.0 100 trying);

sip應答的狀態碼從100到699,其中100~199是臨時(provisional)應答。

關於一些主要方法的簡要介紹:

invite 

請求是三次握手機制,其他請求都採用兩次握手機制。

cancel 

請求用於取消懸而未決的事務,我的理解是一方發出invite,但是另一方始終沒有做出應答,發出200ok訊息(超過了預設的振鈴時長),那麼uac會自動發出乙個cancel請求,uas返回200ok,並且同時發出487狀態碼的應答,uac再對收到的487訊息發出ack確認,即最開始的 invite和487以及ack構成三次握手。

options 

請求用於詢問伺服器的效能情況,包括這個伺服器所支援的方法(可能會有擴充套件方法)和會話描述協議。**伺服器的三種型別:保留呼叫狀態**、保留狀態**、不保留狀態**。這三種型別的**在處理能力和所占用資源上有差別,在**分發中我們採用網路核心無狀態,而在流量較小的網路邊界採用智慧型性高的保留(呼叫)狀態伺服器處理路由。

sip訊息編碼採用文字方式(即使用字串),相對的是二進位制的編碼方式,前者易於除錯和擴充套件,後者則有利於節省頻寬。

call-id 

字段用於標識乙個特定邀請以及與這個邀請相關的所有後續事務(即標識乙個會話),比如一方發起邀**入乙個西洋棋的會話,那麼invite請求以及應答, bye請求以及應答都共享乙個call-id,因為這兩個事務都屬於乙個特定邀請。而兩個使用者之間可以同時存在多個邀請(比如在下象棋的同時發起聊天的邀 請),那麼乙個邀請中的後續事務將通過這個邀請特有的call-id來區分,如一方發出bye訊息來結束聊天,但是下棋仍然進行中,那麼另一方將根據 bye訊息的call-id來確定要結束的究竟是哪乙個會話。

cseq 

欄位是用來給同乙個會話中的 事務進行排序的。可以理解為,會話由call-id來標識,會話中的事務則由cseq標識。除了ack請求和cancel請求,invite之後的請求中 cseq欄位的數字是最初請求(invite)的cseq遞增的結果。而ack和cancel請求則擁有與它所確認(取消)的請求相同的cseq數字部 分,只是方法名不同。

contact 

欄位是被呼叫方傳送200ok訊息時帶上的,包含了被叫方的真實ip,這樣sip伺服器在路由第乙個invite請求之後就可以被解除安裝掉(越過),不再需要存在於信令路徑中。

recode-route和route

欄位是用來使sip伺服器保留在每次請求中,不被繞過。record-route欄位由信令路徑上的伺服器新增(每經過乙個信令路徑上必須存在的**,就添 加乙個record-route標題頭),maddr引數包含該**的ip位址。被叫方發出的200ok應答包含record-route和 contact欄位(record-route可能有多個),呼叫方收到200ok後根據這兩個字段建立用於後續請求的route標題頭(可能有多個), 其包含的是信令路徑上的下一跳的下一跳的真實ip。

to 字段總是包含被呼叫方的位址(通過sip**時是公用位址,點對點時是真實ip),要注意的是區別該標題頭和sip訊息請求行中的request-uri。 to在信令路徑中不會被**改變,然而request-uri包含的是信令路徑中下一跳的位址,因此在路途中被每個**改變。

via 

字段儲存所有處理請求的**位址(包括使用者**和sip**),它可以用來檢測路由迴圈,也用於使應答訊息經過請求訊息來時相同的路徑(方向相反)。因此, 在請求訊息傳送時,via標題頭的數量是隨著跳數逐漸增加的,而應答訊息返回時,via標題頭的數量則逐漸遞減(每經過一跳則剝離乙個有它自己位址的 via標題頭)。

sip協議的基本概念

sip session initiation protocol 即初始會話協議 是 ietf 提出的基於文字編碼的 ip 多 會議協議。用於建立 修改並終止多 會話。sip協議可用於發起會話,也可以用於邀請成員加入已經用其它方式建立的會話。乙個會議呼叫或 呼叫可以包含乙個或多個請求 響應事務 tra...

基本概念 C 基本概念

由於工作中需要用到c 編寫的一些工具,有時候需要根據需求修改或者定製工具,所以現在不得不學習一下c 的基礎語法,此為筆記,不成章法!機器語言 組合語言 高階語言 面向過程的程式設計方法 物件導向的程式設計方法 泛型程式設計方法 1 演算法設計 2 源程式編輯 3 編譯 4 連線 5 執行除錯 輸入裝...

SIP 基本的Header 概念

本文對sip 訊息中from,contact,via,record route 和route 字段進行詳細的解釋,便於大家對sip信令進行分析和排錯 from 如果乙個sip訊息中沒有contact或者record route頭域,那麼callee就會根據from頭域產生後續的request。比如 ...