概述
概念
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="
会话名字"s="
*连接数据"c="
*带宽"b="
时间信息"t="
t=(起始时间)(结束时间)
时间格式采用NTP格式,
如果结束时间是0,则表示会话时长是不受限制的
如果起始时间是0,则表示会话是永恒的
*附加属性"a="
媒体描述"m="
参考rfc4566中文版.doc-原创力文档中 5 SDP规范
和 6 SDP属性
SIP中应用
实际抓包分析:(在收到INVITE后,回复200OK携带的SDP报文)
Session Initiation Protocol (200)
Status-Line: SIP/2.0 200 OK
Message Header
Call-ID: THsmVLXC1v2QLpkrEnb1PR8TPvCIVX4-1624410533179-0x7f78c5123d50-00163e064c8d@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:12345678@192.168.3.3:8579;transport=UDP;user=phone>
Session-Expires: 1800;refresher=uas
From: "87654321"<sip:87654321@domain.cn;user=phone>;tag=9a7f070-0-13c9-60d289a5-42ebae47-60d289a5
To: <sip:12345678@domain.cn: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
最后
以上就是高兴鼠标为你收集整理的SDP协议分析概念协议格式格式详解SIP中应用的全部内容,希望文章能够帮你解决SDP协议分析概念协议格式格式详解SIP中应用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复