sip協議呼叫流程詳解


1、SIP業務基本知識

前言

會話發起協議(SIP)是VoIP技術中最常用的協議之一。它是一種應用層協議,與其他應用層協議協同工作,通過Internet控制多媒體通信會話。

1.1 業務介紹

會話初始協議(Session Initiation Protocol)是一種信令協議,用於初始、管理和終止網絡中的語音和視頻會話,具體地說就是用來生成、修改和終結一個或多個參與者之間的會話。

SIP的業務模式是一個點對點協議,其中有兩個要素——SIP用戶代理和SIP網絡服務器。用戶代理是呼叫的終端系統元素,而SIP服務器是處理與多個呼叫相關聯信令的網絡設備。

用戶代理本身具有一客戶機元素(用戶代理客戶機UAC)和一服務器元素(用戶代理服務器UAS)。客戶機元素初始呼叫而服務器元素應答呼叫。這允許點到點的呼叫通過客戶機-服務器協議來完成。

下圖是SIP業務的網絡結構和各個參與者的關系。

SIP業務的核心特點集中在SIP的設計目標之一是提供類似公用交換電話網(PSTN)中呼叫處理功能的擴展集。在這個擴展集中,實現類似日常電話的操作:撥號,振鈴,回鈴音或者忙音,只是實現方式和術語有所不同。

SIP也實現了許多信令系統7(SS7)中更高級的呼叫處理功能,盡管這兩個協議相差很遠。SS7是一個高度集中處理的協議,其特點表現為高復雜度的中心網絡結構和無智能的啞終端(傳統的電話機)。

SIP則是一個點對點協議,所以它只需要一個相對簡單的(因此也高度可擴展的)核心網絡,而將處理工作下放給連接在網絡邊緣的智能端點(裝有硬件或軟件的終端設備)。SIP的許多功能在端點中實現,這與傳統的SS7將其在網絡核心設備實現的作法大異其趣。而協議的其他特點還有它是一個文本協議,所以易於調測,結構靈活;而且它是一個中性的底層傳輸協議,可用TCP或UDP(推薦UDP);同時呼叫和媒體信息同時傳送:媒體信息的傳送由SDP傳送SIP是互聯網工程任務組(IETF)多媒體數據和控制體系結構的一個組成部分,因此它與IETF的許多其他協議都有聯系,例如RTP(實時傳輸協議)和SDP協議。SIP與許多其它的協議協同工作,僅僅涉及通信會話的信令部分(control message)。

SIP報文內容傳送會話描述協議(SDP),SDP協議描述了會話所使用流媒體細節,如:使用哪個IP端口,采用哪種編解碼器等等。SIP的一個典型用途是:SIP“會話”傳輸一些簡單的經過封包的實時傳輸協議流。RTP本身才是語音或視頻的載體。

1.2 業務過程和協議流程

Ø 注冊流程:

(1)用戶首次試呼時,終端代理A 向代理服務器發送REGISTER 注冊請求;
(2)代理服務器通過后端認證/計費中心獲知用戶信息不在數據庫中,便向終端代理回送401Unauthorized 質詢信息,其中包含安全認證所需的令牌;
(3)終端代理提示用戶輸入其標識和密碼后,根據安全認證令牌將其加密后,再次用REGISTER 消息報告給代理服務器;
(4)代理服務器將REGISTER 消息中的用戶信息解密,通過認證/計費中心驗證其合法后,將該用戶信息登記到數據庫中,並向終端代理A 返回成功響應消息200 OK。

Ø 注銷流程:

(1)終端向代理服務器發送register消息注銷,其頭中expire字段設置為0。
(2)代理服務器在收到后送回200OK響應,並將數據庫中的用戶有關消息注銷。

Ø 基本呼叫建立過程:

(1)用戶摘機發起一路呼叫,終端代理A向該區域的代理服務器發起Invite請求;
(2)代理服務器通過認證/計費中心確認用戶認證已通過后,檢查請求消息中的Via頭域中是否已包含其地址。若已包含,說明發生環回,返回指示錯誤的應答;若沒有問題,代理服務器在請求消息的Via頭域插入自身地址,並向Invite消息的To域所指示的被叫終端代理B傳送Invite請求。
(3)代理服務器向終端代理A發送呼叫處理中的應答信息:100Trying。
(4)終端代理B向代理服務器送呼叫處理中的應答信息:100Trying。
(5)終端代理B指示被叫用戶振鈴,用戶振鈴后向代理服務器發送180Ringing振鈴信息。
(6)代理服務器向終端代理A轉發被叫用戶振鈴信息。
(7)被叫用戶摘機,終端代理B向代理服務器返回表示連接成功的應答(200OK)
(8)代理服務器向終端代理A轉發該成功指示(200OK)
(9)終端代理A收到信息后,向代理服務器發ACK信息進行確認
(10)代理服務器將ACK確認消息轉發給終端代理B。
(11)主被叫用戶之間建立通信連接,開始通話。

Ø 正常呼叫釋放過程:

(1) 正常呼叫
(2) 用戶通話結束后,被叫用戶掛機,終端代理B向代理服務器發送Bye消息。
(3) 代理服務器轉發Bye消息至終端代理A,同時向認證、計費中心發送用戶通話的詳細信息,請求計費。
(4) 主叫用戶掛機后,終端代理A向代理服務器發送確認掛斷響應信息200OK。
(5) 代理服務器轉發響應信息200OK。

Ø 會話更改流程:

(1)用戶代理服務端和代理客戶端正常通話。
(2)用戶代理服務端向用戶代理客戶端發送Invite信息,帶有新的SDP協商信息。
(3)用戶處理客戶端回復200OK,並將協商后的SDP信息帶回。
(4)用戶代理服務端發送ACK給用戶代理客戶端進行確認。

Ø 被叫忙呼叫釋放:



(1)用戶摘機發起一路呼叫,終端代理A向該區域代理服務器發起Invite請求;
(2)代理服務器向被叫終端代理B傳送Invite請求。
(3)代理服務器向終端代理A發送呼叫處理中的應答信息:100Trying。
(4)終端代理B向代理服務器送呼叫處理中的應答信息:100Trying。
(5)呼叫請求送到被叫終端代理B后,被叫忙,終端代理B向代理服務器送486被叫忙響應。
(6)代理服務器向終端代理A轉發該響應消息。
(7)終端代理A向代理服務器回送ACK確認消息。
(8)代理服務器向終端代理B送ACK確認信息。

Ø 被叫無應答流程一:

(1)用戶摘機發起一路呼叫,終端代理A向該區域代理服務器發起Invite請求;
(2)代理服務器向被叫終端代理B傳送Invite請求。
(3)代理服務器向終端代理A發送呼叫處理中的應答信息:100Trying。
(4)終端代理B向代理服務器送呼叫處理中的應答信息:100Trying。
(5)被叫用戶振鈴,終端代理B向代理服務器送180Ring響應。
(6)代理服務器向終端代理A轉發該響應信息。
(7)被叫久振鈴無應答,終端代理A判斷超時后向代理服務器送Cancel消息放棄該呼叫。
(8)代理服務器收到Cancel消息后,向終端代理A回送200OK響應。
(9)代理服務器將Cancel消息轉發給終端代理B。
(10)終端代理B向代理服務器回送200OK響應。
(11)終端代理B向代理服務器送487請求已撤銷的響應信息。
(12)代理服務器收到后回送ACK確認。
(13)代理服務器向終端代理A送487請求已撤銷消息。
(14)終端代理A向代理服務器回送ACK確認。
注:以上步驟中的(10)到(12)無嚴格順序關系。

Ø 被叫無應答流程二:

(1)用戶摘機發起一路呼叫,終端代理A向該區域代理服務器發起Invite請求;
(2)代理服務器向被叫終端代理B傳送Invite請求。
(3)代理服務器向終端代理A發送呼叫處理中的應答信息:100Trying。
(4)終端代理B向代理服務器送呼叫處理中的應答信息:100Trying。
(5)被叫用戶振鈴,終端代理B向代理服務器送180Ring響應。
(6)代理服務器向終端代理A轉發該響應信息。
(7)被叫久振鈴無應答,終端代理B判斷超時后向代理服務器送408Requesttimeout消息放棄該呼叫。
(8)代理服務器收到408Requesttimeout消息后,轉發該消息給終端代理A。
(9)代理服務器回送ACK確認給終端代理B。
(10)終端代理A向代理服務器回送ACK確認。
注:以上步驟中的(9)到(10)無嚴格順序關系。

Ø 遇忙呼叫前轉:

(1)用戶摘機發起一路呼叫,終端代理A向該區域代理服務器發起Invite請求;
(2)代理服務器向被叫終端代理B傳送Invite請求。
(3)代理服務器向終端代理A發送呼叫處理中的應答信息:100Trying。
(4)終端代理B向代理服務器送呼叫處理中的應答信息:100Trying。
(5)終端代理B忙線中,B向代理服務器發送486Busy Here響應。
(6)代理服務器向終端代理B發送ACK確認消息。
(7)代理服務器對此呼叫進行前轉,向代理服務器C發送Invite請求消息。
(8)代理終端C收到后指示用戶振鈴,同時向代理服務器發送180Ringing響應。
(9)代理服務器向A轉發收到的180Ringing響應。
(10)被叫用戶C摘機接聽電話,終端代理C向代理服務器返回表示連接成功的應答(200OK)
(11)代理服務器向終端代理A轉發該成功指示(200OK)
(12)終端代理A收到信息后,向代理服務器發ACK信息進行確認
(13)代理服務器將ACK確認消息轉發給終端代理B。
建立通信連接,開始通話。
(14)主叫用戶掛機,終端代理A向代理服務器發送Bye消息,請求掛機。
(15)代理服務器轉發Bye消息至終端代理C,指示C掛機。
(16)終端代理C向代理服務器發送確認掛斷響應信息200OK。
(17)代理服務器轉發響應信息200OK至A。

Ø 無應答呼叫前轉流程:

(1)用戶A摘機發起一路呼叫,終端代理A向該區域代理服務器發起Invite請求;
(2)代理服務器向被叫終端代理B傳送Invite請求。
(3)代理服務器向終端代理A發送呼叫處理中的應答信息:100Trying。
(4)終端代理B向代理服務器送呼叫處理中的應答信息:100Trying。
(5)被叫用戶振鈴,終端代理B向代理服務器送180Ring響應。
(6)代理服務器向終端代理A轉發該響應信息。
(7)被叫久振鈴無應答,代理服務器判斷超時后向代理終端B送Cancel消息放棄該呼叫。
(8)代理終端B收到Cancel消息后,向代理服務器回送200OK響應。
(9)終端代理B向代理服務器送487請求已撤銷的響應信息。
(10)代理服務器向終端代理B回送200OK響應。
(11)代理服務器對此呼叫進行前轉,向代理服務器C發送Invite請求消息。
(12)代理終端C收到后指示用戶振鈴,同時向代理服務器發送180Ringing響應。
(13)代理服務器向A轉發收到的180Ringing響應。
(14)被叫用戶C摘機接聽電話,終端代理C向代理服務器返回表示連接成功的應答(200OK)
(15)代理服務器向終端代理A轉發該成功指示(200OK)
(16)終端代理A收到信息后,向代理服務器發ACK信息進行確認
(17)代理服務器將ACK確認消息轉發給終端代理C。
建立通信連接,開始通話。
(18)主叫用戶掛機,終端代理A向代理服務器發送Bye消息,請求掛機。
(19)代理服務器轉發Bye消息至終端代理C,指示C掛機。
(20)終端代理C向代理服務器發送確認掛斷響應信息200OK。
(21)代理服務器轉發響應信息200OK至A。

Ø 呼叫保持:

(1)用戶摘機發起一路呼叫,終端代理A向該區域的代理服務器發起Invite請求;
(2)代理服務器通過認證/計費中心確認用戶認證已通過后,檢查請求消息中的Via頭域中是否已包含其地址。若已包含,說明發生環回,返回指示錯誤的應答;若沒有問題,代理服務器在請求消息的Via頭域插入自身地址,並向Invite消息的To域所指示的被叫終端代理B傳送Invite請求。
(3)代理服務器向終端代理A發送呼叫處理中的應答信息:100Trying。
(4)終端代理B向代理服務器送呼叫處理中的應答信息:100Trying。
(5)終端代理B指示被叫用戶振鈴,用戶振鈴后向代理服務器發送180Ringing振鈴信息。
(6)代理服務器向終端代理A轉發被叫用戶振鈴信息。
(7)被叫用戶摘機,終端代理B向代理服務器返回表示連接成功的應答(200OK)
(8)代理服務器向終端代理A轉發該成功指示(200OK)
(9)終端代理A收到信息后,向代理服務器發ACK信息進行確認
(10)代理服務器將ACK確認消息轉發給終端代理B。
(11)主被叫用戶之間建立通信連接,開始通話。
(12)代理終端B向代理服務器發送Reinvite消息,SDP的c域等於0,0,0,0。
(13)代理服務器轉發此信息給代理終端A。
(14)代理終端A收到Reinvite后回應200OK響應。表示接受會話更改,同事根據協商結果修改會話方式。
(15)代理服務器轉發200OK給代理終端B。
(16)代理終端B收到消息后向代理服務器發送ACK消息進行確認。
(17)代理服務器將ACK確認消息轉發到代理終端A。

Ø 呼叫等待:

(1)AB正常通話。
(2)在AB通話的階段,用戶C向A發起呼叫,終端代理C發送Invite消息給代理服務器。
(3)代理服務器向終端C回送100Trying響應,表示呼叫已在處理中。
(4)代理服務器把Invite消息轉發給A。
(5)用戶A振鈴,並且終端A向代理服務器發送180Ring響應。
(6)代理服務器向終端C轉發該響應信息。
(7)用戶A按下呼叫保持鍵,代理終端A向代理服務器發送Invite消息,請求與代理終端C呼叫保持。
(8)代理服務器轉發此消息給終端代理B。
(9)代理服務器向終端A回送100Trying響應,表示呼叫已在處理中。
(10)終端B收到呼叫保持請求后,發送200OK給代理服務器,表示接受呼叫保持。
(11)代理服務器轉發200OK響應給終端代理A。
(12)代理終端A收到消息后向代理服務器發送ACK消息進行確認。
(13)代理服務器將ACK確認消息轉發到代理終端B。
(14)終端代理A發送200OK給代理服務器,表示接受C的呼叫。
(15)代理服務器轉發200OK給終端代理C。
(16)終端代理C向代理服務器回送ACK確認。
(17)代理服務器向代理終端A轉發收到的ACK確認。
A、C之間開始通話。
(18)用戶A掛機,終端代理A向代理服務器發送Bye請求消息。
(19)代理服務器轉發Bye消息給終端代理B。
(20)終端代理C發送200OK給代理服務器,表示接受請求。
(21)代理服務器轉發200OK響應給終端代理A。
(22)終端代理C重新發送Invite請求給代理服務器,請求和終端代理B恢復通話。
(23)代理服務器向代理終端B轉發收到的Invite請求。

2、SIP通信過程報文抓取實例分析

l 實驗環境:Linux2.6+Asterisk1.4(開源IPPBX)
l 實驗地點:北京郵電大學信息與通信工程學院創新實驗室
l SIP代理服務器IP:59.64.135.22  SIP電話號碼:825002(59.64.135.22)
l SIP代理終端IP:59.64.135.67
l 軟終端:X-lite
l 抓包分析工具:WireShark
注:由於過程太多,以下僅僅抓取“成功注冊”,“呼叫--通話” ,“掛斷”“注銷”四種情況做典型包的分析。
Ø 注冊流程:


以上是REGISTER包。
我們可以看到在注冊的時候,終端會向代理服務器59.64.135.22發送REGISTER請求注冊。

以上是REGISTEROK包。服務器返回200 OK,表示注冊成功。

Ø 基本呼叫建立過程:


以上是INVITE包。我們可以看到在發起呼叫初期,終端向825002發出Invite的呼叫請求。

以上是Trying包,說明終端825003正在試着連通服務器,進一步轉接到825002.
由於設置了自動接聽,所以此次通話沒有振鈴的包。

這是ACK包,代表確認信號。

Ø 正常呼叫釋放過程:


以上是BYE包。這是825002掛斷后服務器向825003發送的釋放呼叫信號。
Ø 注銷流程:

以上是825003注銷的包,我們注意到expires=0這說明是注銷。

3.總結

SIP協議憑借其簡單、易於擴展、便於實現等諸多優點越來越得到業界的青睞,它正逐步成為NGN(下一代網絡)和3G多媒體子系統域中的重要協議,並且市場上出現越來越多的支持SIP的客戶端軟件和智能多媒體終端,以及用SIP協議實現的服務器和軟交換設備。

------------------------------------------------------------------------------------------------------------------------------------------------分割線---------------------------------------------------------------------------------------------------------------

 

SIP協議 

會話發起協議(SIP)是VoIP技術中最常用的協議之一。它是一種應用層協議,與其他應用層協議協同工作,通過Internet控制多媒體通信會話。

SIP - 概述

以下是有關SIP的幾點注意事項 -

  • SIP是用於通過因特網協議創建,修改和終止多媒體會話的信令協議。會話只不過是兩個端點之間的簡單調用。端點可以是智能電話,筆記本電腦或可以通過因特網接收和發送多媒體內容的任何設備。

  • SIP是由IETF(Internet Engineering Task Force)標准定義的應用層協議。它在RFC 3261中定義。

  • SIP體現了客戶端 - 服務器體系結構,以及使用HTTP和URL的URL和URI 以及SMTP的文本編碼方案和頭樣式。

  • SIP采用SDP(會話描述協議)的幫助,它描述了用於通過IP網絡傳送語音和視頻的會話和RTP(實時傳輸協議)。

  • SIP可用於雙方(單播)或多方(多播)會話。

  • 其他SIP應用包括文件傳輸,即時通訊,視頻會議,網絡游戲,以及流多媒體分發。

下圖說明了SIP在一般方案中的適用性 -

通常,SIP協議用於兩個或多個端點之間的互聯網電話和多媒體分發。例如,一個人可以使用SIP發起對另一個人的電話呼叫,或者有人可以與許多參與者建立電話會議。

SIP協議的設計非常簡單,配置有限的命令。它也是基於文本的,所以任何人都可以讀取SIP會話中的端點之間傳遞的SIP消息。

有一些實體幫助SIP創建其網絡。在SIP中,每個網元由SIP URI(統一資源標識符)來標識,它像一個地址。以下是網絡元素 -

  • 用戶代理
  • 代理服務器
  • 注冊服務器
  • 重定向服務器
  • 位置服務器

用戶代理

它是SIP網絡的端點和最重要的網絡元素之一。端點可以啟動,修改或終止會話。用戶代理是SIP網絡中最智能的設備或網絡元件。它可以是軟電話,手機或筆記本電腦。

用戶代理在邏輯上分為兩部分 -

  • 用戶代理客戶端(UAC) - 發送請求並接收響應的實體。

  • 用戶代理服務器(UAS) - 接收請求並發送響應的實體。

SIP基於客戶機 - 服務器架構,其中呼叫者的電話充當發起呼叫的客戶端,被叫方的電話充當響應呼叫的服務器。

代理服務器

網絡元素接收來自用戶代理的請求並將其轉發給另一個用戶。

  • 基本上代理服務器的作用就像一個路由器。

  • 它有一些智慧來了解SIP請求,並在URI的幫助下發送它。

  • 代理服務器位於兩個用戶代理之間。

  • 源和目的地之間最多可以有70個代理服務器。

有兩種類型的代理服務器 -

  • 無狀態代理服務器 - 它只是轉發收到的消息。這種類型的服務器不存儲任何呼叫或交易的信息。

  • 有狀態代理服務器 - 這種類型的代理服務器可以跟蹤收到的每個請求和響應,並且如果需要,可以將來使用它。如果對方沒有響應,它可以重新發送請求。

注冊服務器

注冊服務器接受用戶代理的注冊請求。它可以幫助用戶在網絡中進行身份驗證。它將URI和用戶的位置存儲在數據庫中,以幫助同一域內的其他SIP服務器。

看看下面的示例,顯示SIP注冊的過程。

這里呼叫者想要向TMC域注冊。因此,它向TMC的Registrar服務器發送REGISTER請求,並且服務器在授權客戶端時返回200 OK響應。

重定向服務器

重定向服務器接收請求,並在注冊器創建的位置數據庫中查找請求的預期收件人。

重定向服務器使用數據庫獲取位置信息,並以3xx(重定向響應)響應給用戶。我們將在本教程的后面討論響應代碼。

位置服務器

位置服務器提供有關呼叫者可能的位置到重定向和代理服務器的信息。

只有代理服務器或重定向服務器可以聯系位置服務器。

下圖描繪了每個網絡元素在建立會話中所扮演的角色。

SIP - 系統架構

SIP被構造為分層協議,這意味着其行為根據一組相當獨立的處理階段來描述,只有每個階段之間的松散耦合。

  • SIP的最低層是其語法和編碼。其編碼使用增強的Backus-Naur表格語法(BNF)來指定。

  • 第二層是傳輸層。它定義客戶端如何發送請求並接收響應,以及服務器如何接收請求並通過網絡發送響應。所有SIP元素都包含傳輸層。

  • 接下來是事務層。事務是由客戶端事務(使用傳輸層)發送到服務器事務的請求,以及從服務器事務發送回客戶端的對該請求的所有響應。用戶代理客戶端(UAC)完成的任何任務都將使用一系列事務進行。無狀態代理不包含事務層。

  • 事務層上面的稱為事務用戶。除了無狀態代理之外,每個SIP實體都是一個事務用戶。

下圖顯示了SIP會話的基本呼叫流程。

以下是對上述呼叫流程的逐步說明 -

  • 發送到代理服務器的INVITE請求負責啟動會話。

  • 代理服務器發送100 嘗試立即響應呼叫者(Alice)以停止INVITE請求的重新發送。

  • 代理服務器在位置服務器中搜索Bob的地址。獲取地址后,進一步轉發INVITE請求。

  • 此后,Bob手機生成的180 振鈴(臨時響應)返回給愛麗絲。

  • 鮑勃拿起手機后一個200 OK響應很快產生。

  • 一旦200 OK到達Alice,Bob 從Alice 收到一個ACK。

  • 同時,會話建立,RTP數據包(會話)從兩端開始流動。

  • 會話結束后,任何參與者(Alice或Bob)都可以發送一個BYE請求來終止會話。

  • BYE直接從Alice到Bob繞過代理服務器。

  • 最后,Bob發送200 OK響應來確認BYE,會話終止。

  • 在上述基本呼叫流程中,可以使用三個事務(標記為1,2,3)。

完整的呼叫(從INVITE到200 OK)稱為對話Dialog

SIP梯形

代理如何幫助一個用戶與另一個用戶連接?讓我們在下圖的幫助下找出。 

圖中所示的拓撲結構稱為SIP梯形圖。該過程發生如下 -

  • 當呼叫方發起呼叫時,將向代理服務器發送INVITE消息。代理服務器收到INVITE后,嘗試借助DNS服務器解析受理者的地址。

  • 在獲得下一個路由之后,呼叫者的代理服務器(代理1,也稱為出站代理服務器)將INVITE請求轉發給作為被呼叫者的入站代理服務器(代理服務器2)的被呼叫者的代理服務器。

  • 入站代理服務器聯系位置服務器以獲取用戶注冊的被叫方地址信息。

  • 從位置服務器獲取信息后,將呼叫轉發到其目的地。

  • 一旦用戶代理知道他們的地址,他們可以繞過呼叫,即直接通話。

SIP消息有兩種類型 - 請求響應

  • 請求的開始行包含定義請求的方法,以及定義要發送請求的請求URI。

  • 類似地,響應的開始行包含響應代碼。

請求方式

SIP請求是用於建立通信的代碼。為了補充它們,SIP響應通常指示請求是成功還是失敗。

這些被稱為METHODS的SIP請求使SIP消息可行。

  • 方法可以被認為是SIP請求,因為它們請求由另一用戶代理或服務器采取的特定動作。

  • 方法被分為兩種類型 -

    • 核心方法

    • 擴展方法

核心方法

有六種核心方法,如下所述。

邀請

INVITE用於啟動與用戶代理的會話。換句話說,INVITE方法用於在用戶代理之間建立媒體會話。

  • INVITE可以在郵件正文中包含主叫方的媒體信息。

  • 如果INVITE已經接收到成功響應(2xx)或已經發送ACK,則會話被認為是建立的。

  • 成功的INVITE請求在兩個用戶代理之間建立對話,直到發送BYE才能終止會話。

  • 在已建立的對話框內發送的INVITE被稱為re-INVITE

  • Re-INVITE用於更改會話特性或刷新對話框的狀態。

  • 邀請示例

    以下代碼顯示了INVITE如何使用。

復制代碼
復制代碼
INVITE sips:Bob@TMC.com SIP/2.0 
   Via: SIP/2.0/TLS client.ANC.com:5061;branch = z9hG4bK74bf9 
   Max-Forwards: 70 
   From: Alice<sips:Alice@TTP.com>;tag = 1234567 
   To: Bob<sips:Bob@TMC.com>
   Call-ID: 12345601@192.168.2.1  
   CSeq: 1 INVITE 
   Contact: <sips:Alice@client.ANC.com> 
   Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY 
   Supported: replaces 
   Content-Type: application/sdp 
   Content-Length: ...  
   
   v = 0 
   o = Alice 2890844526 2890844526 IN IP4 client.ANC.com 
   s = Session SDP 
   c = IN IP4 client.ANC.com 
   t = 3034423619 0 
   m = audio 49170 RTP/AVP 0 
   a = rtpmap:0 PCMU/8000 
復制代碼
復制代碼

BYE

BYE是用於終止既定會話的方法。這是SIP請求,可以由呼叫者或被叫方發送以終止會話。

  • 它不能由代理服務器發送。

  • BYE請求通常路由端到端,繞過代理服務器。

  • BYE不能發送到待處理的INVITE或未建立的會話。

注冊

REGISTER請求執行用戶代理的注冊。該請求由用戶代理發送到注冊服務器。

  • REGISTER請求可以轉發或代理,直到它到達指定域的權威注冊商。

  • 它在正在注冊的用戶的To頭中攜帶AOR(記錄地址)。

  • REGISTER請求包含時間段(3600sec)。

  • 一個用戶代理可以代表另一個用戶代理發送REGISTER請求。這被稱為第三方注冊。這里,From標簽包含代表To標題中標識的方提交注冊的方的URI 。

取消

CANCEL用於終止未建立的會話。用戶代理使用此請求取消之前發起的未決呼叫嘗試。

  • 它可以由用戶代理或代理服務器發送。

  • CANCEL是逐跳請求,即它通過用戶代理之間的元素,並接收下一個有狀態元素生成的響應。

ACK

ACK用於確認對INVITE方法的最終響應。如果INVITE不可用,則ACK始終沿着INVITE.ACK的方向包含SDP主體(媒體特性)。 

ACK可能不會用於修改已經在初始INVITE中發送的媒體描述。

  • 接收ACK的有狀態代理必須確定ACK應該向下游轉發到另一個代理或用戶代理。

  • 對於2xx響應,ACK是端到端的,但對於所有其他最終響應,它在涉及有狀態代理時基於逐跳的工作。

OPTIONS

OPTIONS方法用於向用戶代理或代理服務器詢問其功能並發現其當前的可用性。對請求的響應列出了用戶代理或服務器的功能。代理從不生成OPTIONS請求。

擴展方法

訂閱

用戶代理使用SUBSCRIBE建​​立訂閱,以獲取有關特定事件的通知。

  • 它包含一個Expires頭字段,指示訂閱的持續時間。

  • 期限過后,訂閱將自動終止。

  • 訂閱在用戶代理之間建立一個對話。

  • 您可以在到期時間之前通過在對話框內發送另一個SUBSCRIBE來重新訂閱。

  • 用戶訂閱將收到200 OK。

  • 用戶可以使用Expires值0(零)發送另一個SUBSCRIBE方法來取消訂閱。

通知

用戶代理使用NOTIFY來獲取特定事件的發生。通常,當訂戶和通知程序之間存在訂閱時,NOTIFY將在對話框內觸發。

  • 如果通知程序接收到,每個NOTIFY將獲得200 OK響應。

  • NOTIFY包含指示事件的事件頭字段和指示訂閱的當前狀態的subscriptionstate頭字段。

  • 始終在訂閱的開始和結束時發送NOTIFY。

發布

PUBLISH被用戶代理用於向服務器發送事件狀態信息。

  • 當有多個來源的事件信息時,PUBLISH是非常有用的。

  • PUBLISH請求類似於NOTIFY,除了它不在對話框中發送。

  • PUBLISH請求必須包含Expires頭字段和Min-Expires頭字段。

參考

REFER由用戶代理用於引用另一個用戶代理來訪問對話框的URI。

  • REFER必須包含Refer-To標題。這是REFER的強制標題。

  • REFER可以在對話框內部或外部發送。

  • 202 Accepted將觸發REFER請求,指示其他用戶代理已經接受引用。

信息

INFO由用戶代理使用,以向其已經建立媒體會話的另一用戶代理發送呼叫信令信息。

  • 這是一個端到端的請求。

  • 代理將始終轉發INFO請求。

UPDATE

如果會話未建立,則UPDATE用於修改會話的狀態。用戶可以使用UPDATE更改編解碼器。

如果會話建立,則使用重新邀請來更改/更新會話。

PRACK

PRACK用於確認接收到可靠的臨時響應轉移(1XX)。

  • 一般來說,PRACK在接收到包含RSeq可靠序列號和supported:100rel 頭的臨時響應時由客戶端生成。

  • PRACK在race頭部中包含(RSeq + CSeq)值。

  • PRACK方法適用於所有臨時響應,除了100嘗試響應,這是永遠不可靠的運輸。

  • PRACK可能包含消息體; 它可以用於提供/答復交換。

信息

它用於使用SIP發送即時消息。IM通常由參與文字會話的參與者實時交換的短消息。

  • MESSAGE可以在對話框內或對話框外發送。

  • MESSAGE的內容作為MIME附件在郵件正文中載入。

  • 一個200 OK被正常接收響應,以指示該消息已在其目的地被遞送


免責聲明!

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



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