一 SIP會話發起協議 - 先知道是什么( 二 )


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

  • 請求的開始行包含定義請求的方法及定義要發送請求的URI
  • 同樣,響應的開始行包含響應代碼
方法可以被認為是SIP請求,它們請求由另一用戶代理或服務器采取的特定動作 。
方法分為兩種類型 : 核心方法 與 擴展方法
六種核心方法Invite 邀請
  • 用于啟動與用戶代理的會話 。
  • 成功的Invite 請求在兩個用戶代理之間建立對話 。
  • 在已經建立的對話框中發送Invite 被稱為 re-invite,re-invite用于更改會話特性或刷新對話框的狀態 。
  • 可以在郵件正文中包含主叫方的媒體信息 。

一 SIP會話發起協議 - 先知道是什么

文章插圖
示例:
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是用于終止既定會話的方法 。
  • BYE請求通常路由端到端,繞過代理服務器 。
Register 注冊
  • REGISTER請求執行用戶代理的注冊 。
  • 它在正在注冊的用戶的To頭中攜帶AOR(記錄地址) 。
Cancel 取消
  • CANCEL用于終止未建立的會話 。
  • CANCEL是逐跳請求,即它通過用戶代理之間的元素,并接收下一個有狀態元素生成的響應 。

一 SIP會話發起協議 - 先知道是什么

文章插圖
ACK 確認
  • ACK用于確認對INVITE方法的最終響應 。
options
  • OPTIONS方法用于向用戶代理或代理服務器詢問其功能并發現其當前的可用性 。
八種擴展方法訂閱
  • 用戶代理使用Subscribe建立訂閱,以獲取有關特定事件的通知 。
  • 它包含一個Expires頭字段 , 指示訂閱的持續時間 。期限過后,訂閱將自動終止 。
  • 訂閱在用戶代理之間建立一個對話 。
  • 用戶可以使用Expires值0(零)發送另一個SUBSCRIBE方法來取消訂閱 。

一 SIP會話發起協議 - 先知道是什么

文章插圖
通知
  • 用戶代理使用NOTIFY來獲取特定事件的發生 。通常,當訂戶和通知程序之間存在訂閱時 , NOTIFY將在對話框內觸發 。
  • NOTIFY包含指示事件的事件頭字段和指示訂閱的當前狀態的subscriptionstate頭字段 。
  • 【一 SIP會話發起協議 - 先知道是什么】始終在訂閱的開始和結束時發送NOTIFY 。
發布
  • PUBLISH被用戶代理用于向服務器發送事件狀態信息 。
  • 當有多個來源的事件信息時 , PUBLISH是非常有用的 。
  • PUBLISH請求類似于NOTIFY,除了它不在對話框中發送 。
  • PUBLISH請求必須包含Expires頭字段和Min-Expires頭字段 。

一 SIP會話發起協議 - 先知道是什么

文章插圖
參考
  • REFER由用戶代理用于引用另一個用戶代理來訪問對話框的URI 。
  • REFER必須包含Refer-To標題 。這是REFER的強制標題 。
  • REFER可以在對話框內部或外部發送 。
  • A 202 Accepted將觸發REFER請求,指示其他用戶代理已經接受引用 。
信息
  • INFO由用戶代理使用,以向其已經建立媒體會話的另一用戶代理發送呼叫信令信息 。
  • 這是一個端到端的請求 。
  • 代理將始終轉發INFO請求 。
UPDATE
  • 如果會話未建立,則UPDATE用于修改會話的狀態 。用戶可以使用UPDATE更改編解碼器 。
  • 如果會話建立 , 則使用重新邀請來更改/更新會話 。
PRACK