天天看點

SDP協定分析概念協定格式格式詳解SIP中應用

概念

SDP(Session Description Protocol)會話描述協定是為了描述多媒體會話而設計的,主要用來描述會話通告、會話邀請或者其他形式的多媒體會話初始化。

  • 當初始化多媒體會議、VoIP電話、視訊流或者其他會話的時候,需要對參與者提供媒體資訊、傳輸位址以及其他與會話相關的描述性的中繼資料。
  • SDP為描述這些資訊提供了一個标準的形式,并且與這些資訊是以什麼方式傳送的無關。SDP隻是一個單純的會話描述的格式,并不包含傳輸協定。在不同的場合,可以應用于不同的傳輸協定,如SAP、SIP、RTP和HTTP等。
  • SDP被設計成通用的,是以它可以廣泛用于有關網絡的各種應用。然而,它并不能用于協商會話内容或值媒體編碼,這超出SDP的功能範圍。

協定格式

一個SDP會話描述是通過"application/sdp"來辨別的。

一個SDP會話描述包含若幹行如下形式的文本:

(type)=(value)

其中(type)是一個區分大小寫的字母的形式,(value)是一個結構化的文本,其形式取決于(type)。通常,(value)由若幹個分隔符隔開的字段組成,或者是一個字元串。其中"="兩邊都不能有空格。

一個SDP包含一個會話層部分,後續跟着0個或多個媒體層部分。會話層啟始于"v="行,直到第一個媒體層部分。每個媒體層起始于"m="行,直到下一個媒體層的開始或者直到SDP結束。通常,會話層的屬性是全局的,除非被媒體層重寫。

某些行是必選的,某些是可選的,但是出現的順序必須如下所示。可選用"*"标志。

會話描述

v=(協定版本)

o=(發起者和會話辨別符)

s=(會話名稱)

i=* (會話資訊)

u=* (URI 描述)

e=* (Email 位址)

p=* (電話号碼)

c=* (連接配接資訊,隻有在所有的媒體層都有這個字段的時候,會話層屬性才可以沒有)

b=* (0個或者多個帶寬資訊)

z=* (時域調整)

k=* (加密密鑰)

a=* (0 個或多個會話屬性)

時間描述

t=(會話有效時間)

r=* (0或多次重複時間)

媒體描述,如果存在的情況下

m=(媒體名稱和傳輸位址)

i=* (媒體标題)

c=* (連接配接資訊,如果在會話層中出現,則這裡可以不出現)

b=* (帶寬資訊)

k=* (加密密鑰)

a=* (0 個或多個媒體屬性)

會話層的連接配接資訊"c="和附加屬性"a="都是全局的,除非在媒體層被重寫

格式詳解

協定版本"v="

v=0

字段給出了SDP版本,目前規範的版本是0,這個版本沒有小版本号

源"o="

SDP協定分析概念協定格式格式詳解SIP中應用

會話名字"s="

SDP協定分析概念協定格式格式詳解SIP中應用

*連接配接資料"c="

SDP協定分析概念協定格式格式詳解SIP中應用
SDP協定分析概念協定格式格式詳解SIP中應用

*帶寬"b="

SDP協定分析概念協定格式格式詳解SIP中應用

時間資訊"t="

t=(起始時間)(結束時間)

時間格式采用NTP格式,

如果結束時間是0,則表示會話時長是不受限制的

如果起始時間是0,則表示會話是永恒的

*附加屬性"a="

SDP協定分析概念協定格式格式詳解SIP中應用

媒體描述"m="

SDP協定分析概念協定格式格式詳解SIP中應用
SDP協定分析概念協定格式格式詳解SIP中應用

參考https://max.book118.com/html/2017/1201/142356242.shtm中

5 SDP規範

6 SDP屬性

SIP中應用

實際抓包分析:(在收到INVITE後,回複200OK攜帶的SDP封包)

Session Initiation Protocol (200)
    Status-Line: SIP/2.0 200 OK
    Message Header
        Call-ID: THsmVLXC1v[email protected]192.168.5.5
        Supported: 100rel,timer,replaces,in-band-dtmf
        Via: SIP/2.0/UDP 192.168.5.5:5065;received=192.168.5.5;branch=z9hG4bK-60d289a5-3669ad3c-4040158d
        Contact: <sip:[email protected]:8579;transport=UDP;user=phone>
        Session-Expires: 1800;refresher=uas
        From: "87654321"<sip:[email protected];user=phone>;tag=9a7f070-0-13c9-60d289a5-42ebae47-60d289a5
        To: <sip:[email protected]:5065;user=phone>;tag=4c897ba5
        CSeq: 1 INVITE
        Content-Type: application/sdp
        Content-Length: 1338
    Message Body
        Session Description Protocol
            Session Description Protocol Version (v): 0 //sdp版本号,一直為0,rfc4566規定
            Owner/Creator, Session Id (o): sipua 1718212350 1718212350 IN IP4 192.168.2.23 
            // o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>
            Session Name (s): IADCall //會話名,沒有的話使用-代替
            Connection Information (c): IN IP4 192.168.2.23 
            //這一行表示你要用來接收或者發送媒體使用的IP位址,若使用ice傳輸,不使用這個位址
            Time Description, active time (t): 0 0 //兩個值分别是會話的起始時間和結束時間,這裡都是0代表沒有限制
            Media Description, name and address (m): audio 10006 RTP/AVP 9 8 97 101 
            //m=audio說明本會話包含音頻,10006代表音頻使用端口9來傳輸,如果設定為0,代表不傳輸音頻;
            //RTP/AVP是表示使用者來傳輸音頻支援的協定,應用場景為視訊/音頻的 RTP 協定。
            //參考 [RFC 3551](https://tools.ietf.org/html/rfc3551);
            //9 8 97 101表示本會話音頻支援的編碼,後面幾行會有詳細補充說明
            Bandwidth Information (b): AS:64 
            //b=<modifier>:<bandwidth-value> 帶寬數值機關為 kbps 。
            //參考 [RFC 3556](https://tools.ietf.org/html/rfc3556)
            Media Attribute (a): rtpmap:9 G722/8000 //下面幾行都是對m=audio這一行的媒體編碼補充說明,指出了編碼采用的編号,采樣率,聲道等
            Media Attribute (a): rtpmap:8 PCMA/8000
            Media Attribute (a): rtpmap:97 iLBC/8000
            Media Attribute (a): rtpmap:101 telephone-event/8000
            Media Attribute (a): fmtp:101 0-15 //對telephone-event編碼可選的補充說明
            Media Attribute (a): sendrecv //指出我是雙向通信,另外幾種類型是recvonly,sendonly,inactive
            Media Description, name and address (m): video 10008 RTP/AVP 104 //參考上面m=audio,含義類似
            Bandwidth Information (b): AS:3072
            Media Attribute (a): rtpmap:104 H264/90000
            Media Attribute (a): fmtp:104 profile-level-id=42e01f;max-br=2048;max-mbps=108000;max-fs=3600;packetization-mode=1 
            //對H264編碼可選的補充說明,profile-level-id配置h264配置檔案和級别;
            //max-br表示最大比特率;max-mbps表示每秒鐘能處理的最大宏塊數量;
            //max-fs表示接收端能夠解碼的一幀圖像的最大尺寸;
            //packetization-mode表示圖像資料包分拆發送的方式
            Media Attribute (a): rtcp-fb:* ccm fir 
            //ccm是codec control using RTCP feedback message簡稱,意思是支援使用rtcp回報機制來實作編碼控制,
            //fir是Full Intra Request簡稱,意思是接收方通知發送方發送幅完全幀過來
            Media Attribute (a): rtcp-fb:* nack //支援丢包重傳,參考rfc4585
            Media Attribute (a): rtcp-fb:* ccm tmmbr
            Media Attribute (a): extmap:1 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
            Media Attribute (a): extmap:2 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
            Media Attribute (a): ssrc:2374194282 cname:MQ4GU3I3cSdHgzQ
            Media Attribute (a): ssrc:2374194282 msid:3ftdiFFSCR+5FRWFZfZn4Fi8s8q7616_main 2EXqEBRAn7g3Smi18og2CL0PCjf5n9U
            Media Attribute (a): ssrc:2374194282 mslabel:3ftdiFFSCR+5FRWFZfZn4Fi8s8q7616
            Media Attribute (a): ssrc:2374194282 label:2EXqEBRAn7g3Smi18og2CL0PCjf5n9U
            Media Attribute (a): sendrecv
            Media Attribute (a): content:main
            Media Attribute (a): label:11
            Media Description, name and address (m): video 10010 RTP/AVP 104 //參考上面m=audio,含義類似
            Bandwidth Information (b): AS:3072
            Media Attribute (a): rtpmap:104 H264/90000
            Media Attribute (a): fmtp:104 profile-level-id=42e01f;max-br=2048;max-mbps=108000;max-fs=3600;packetization-mode=1
            Media Attribute (a): rtcp-fb:* ccm fir
            Media Attribute (a): rtcp-fb:* nack
            Media Attribute (a): rtcp-fb:* ccm tmmbr
            Media Attribute (a): sendrecv
            Media Attribute (a): content:slides
            Media Attribute (a): label:12
            Media Description, name and address (m): application 49592 UDP/BFCP *
            Media Attribute (a): confid:101
            Media Attribute (a): userid:4
            Media Attribute (a): floorid:2 mstrm:12
            Media Attribute (a): floorctrl:c-s
            Media Attribute (a): setup:actpass
            Media Attribute (a): connection:new