SIP協議解析


起始行(start-line)

INVITE sip:34020000001320000001@202.102.11.27:35611 SIP/2.0

  • 請求消息的起始行包括三個參數,格式:Request start-line = Method URI SIP_VERSION
  • Method是請求方法,本例是INVITE, SIP協議規定的Method有六種: INVITE, ACK, CANCEL用於創建對話,BYE用於結束對話, REGISTER用於登記,OPTIONS用於查詢服務器能力。

頭部消息(header)

Call-ID: 850948F238C245A0B555F78B8233A282 CSeq: 20 INVITE From: <sip:34020000002000000001@3402000000>;tag=FD12812E69F94E6085754DE139441F27 To: <sip:34020000001320000001@34020000> Via: SIP/2.0/TCP 202.102.11.27:35611;rport Max-Forwards: 70 Contact: <sip:34020000002000000001@0.0.0.0:21000> Content-Type: Application/SDP Content-Length: 263
  • Via字段
    • Via頭字段保存所經過SIP網元(客戶端或Proxy)的主機名或網絡地址(可能還有端口號);
    • 消息中的所有Via頭字段對請求消息而言,從下至上依次表示到當前所在SIP網元為止,請求消息所經過的路徑;
    • 對響應消息而言,從上至下依次表示從當前網元開始,響應所應遵循的路徑。
  • Max-Forwards字段
    • Max-Forwards 字段表示request到達UAS的跳數的限制。是一個整數,經過每一跳時減去一;
    • 如果Max-Forwards已經是零,可是request還沒有到達目的地,則就會產生一個483(too many hops)響應。
  • To字段
    • To字段表示消息的接收者。
  • From字段
    • From字段表示消息的發送者。
  • Call-ID字段
    • 是一個邀請(Invitation)或來自同一個UAC用戶的所有登記請求。
  • CSeq 字段
    • CSeq包括順序號和方法(method),方法必須和它所對應的request相匹配。對於out-of-dialog的非register request,取值任意。
    • 對於dialog內的每一個新的request(如BYE,re-INVITE,OPTION),Cseq的序號加1。但是對於CANCEL,ACK除外。
    • 對於ACK而言,Cseq的序號必須與其所對應的request相同。對於CANCEL而言,Cseq的序號也必須與其cancel掉的request相同。
  • Contact字段
    • 對於非Register事務,Contact header field 主要提供了UAC或UAS的 直接聯系SIP URI,UAC在發出的對話建立(out-of-dialog)INVITE請求的Contact字段中提供自己的直接聯系SIP URI,在UAS收到該請求后在其發出響應的Contact字段中提供自己的直接聯系SIP URI,這樣在建立對話后,UA間可以通過對方的直接聯系SIP URI繞過Proxy直接發送請求。  對於Register事務,表示地址綁定中的contact address(vs. address-of-record)
  • Content-Type字段
    • 主要表示發給接收器的消息體的媒體類型。如果消息體不是空的,則Content-type header field一定要存在。如果Content-type header field存在,而消息體是空的,表明該類型的媒體流長度是0。
  • Content-Length字段
    • 表示消息體的長度。是十進制數。

消息體(message body)

v=0 o=34020000002000000001 0 0 IN IP4 118.178.90.211 s=Play c=IN IP4 118.178.90.211 t=0 0 m=video 21001 TCP/RTP/AVP 96 98 97 a=sendrecv a=rtpmap:96 PS/90000 a=rtpmap:98 H264/90000 a=rtpmap:97 MPEG4/90000 a=setup:passive a=connection:new y=0200000000
  • v=0            
    • 版本號為0
  • o=34020000002000000001 0 0 IN IP4 118.178.90.211
    • 建立者用戶名+會話ID+版本+網絡類型+地址類型+地址
  • s=Play
    • 會話名
  • c=IN IP4 118.178.90.211
    • 連接信息:網絡類型+地址類型+地址
  • t=0 0
    • 會話活動時間 起始時間+終止時間
  • m=video 21001 TCP/RTP/AVP 96 98 97
    • 媒體描述:媒體+端口+傳送+格式列表
    • 音頻 + 端口49432 + 傳輸協議RTP + 格式AVP,有效負荷0(u率PCM編碼)
  • a=sendrecv
  • a=rtpmap:96 PS/90000
    • 0或多個會話屬性: 屬性 + 有效負荷+ 編碼名稱 + 抽樣頻率
    • a 可以有多個, 見SDP協議
 
        

 

 


免責聲明!

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



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