会话描述协议(SDP)为会话通知、会话邀请和其它形式的多媒体会话初始化等目的提供了多媒体会话描述。它只是用来描述,而不是一种传输协议。举例,在SIP协议的Message Header的Content-type字段为application/sdp,表明使用的是SDP协议。

SDP 会话描述如下:(标注 * 符号的表示可选字段):

协议结构



v = (协议版本) (v=0表明使用RFC4566)

o = (所有者/创建者和会话标识符) o=<username>
<session id> <version> <network type> <address type><address>

<username> 是登录会话起源主机的用户ID,如果会话起源主机没有用户ID的概念用"-"表示。用户ID不能包含空格。

<session id> 是数字串,<username>, <session id>, <network type>,<address type> 和 <address> 在一个会话中是全局唯一的。 <session id> 的分配方法依赖于创建工具,但通常建议用网络时间协议Network Time Protocol (NTP)的时间戳以保证它的唯一性。

<version>是宣告(announcement)的版本号。代理宣告(proxy announcements)需要使用它来探测同一个会话中哪些宣告是最近的,另外,它的使用依赖于创建工具。每一次会话数据的修改,需要增加<version>,建议(并非强制)使用NTP的时间戳。

<network type> 是描述网络类型的字符串。"IN"表示"Internet"。

<address type>是描述地址类型的字符串。目前定义了"IP4"、"IP6"。

<address> 是创建会话的机器的唯一全局地址。对于IP4类型,它是机器名或点号分割的IP地址。如果离开局域网,不要使用本地IP,因为这个IP已经没有什么意义。

s = (会话名称)  "s="
域指示会话名,每一个会话有且只有一个"s=" 域.

i = * (会话信息)  i=<session
description>

"i=" 域指示会话相关信息。 会话描述层至多可以有一个"i="域,每个媒体也可以至多有一个"i="域。"i="域是非强制的,可以省略。在媒体定义中,"i=" 域主要是标识一个媒体流。对于一种媒体类型有多个媒体流是很有用的,比如:有两个白板,一个用于放映幻灯,一个用于交流。

u = * (URI 描述) u=<URI>

一个URI是一个WWW资源的唯一资源标识符(Universal Resource Identifier);一个URI应该是一个会议的额外信息指示器;这个域是可选的,但是如果指定,它应该在第一个媒体域之前出现;每一个会话描述不能有超过一个的URI域。

e = * (Email 地址) e=<email
address>

p = * (电话号码) p=<phone
number>

c = * (连接信息 ― 如果包含在所有媒体中,则不需要该字段) 

b = * (带宽信息)

z = * (时间区域调整) 

k = * (加密密钥) 

a = * (0 个或多个会话属性行) 

时间描述



t = (会话活动时间) 

r = * (0或多次重复次数)

媒体描述

m = (媒体名称和传输地址) (常见的有‘audio’语音。‘video’视频)

i = * (媒体标题) 

c = * (连接信息 — 如果包含在会话层则该字段可选) 

b = * (带宽信息) 

k = * (加密密钥) 

a = * (0 个或多个会话属性行)

  

SDP协议的更多相关文章

  1. 蓝牙的SDP协议总结

    1.概念     SDP协议让客户机的应用程序发现存在的服务器应用程序提供的服务以及这些服务的属性.SDP只提供发现服务的机制,不提供使用这些服务的方法.每个蓝牙设备都需要一个SDP Service, ...

  2. SDP协议译稿(Part 1)

    本文的翻译内容是基于Bluetooth Core Spec 2.1+EDR 协议中对SDP的描述,很多都是个人的理解,难免有疏漏,有争议或者疑问的地方,欢迎在此留言进行探讨. 2. Overview ...

  3. SDP协议分析

    一.SDP协议介绍 SDP 完全是一种会话描述格式 ― 它不属于传输协议 ― 它只使用不同的适当的传输协议,包括会话通知协议(SAP).会话初始协议(SIP).实时流协议(RTSP).MIME 扩展协 ...

  4. [转] SDP协议

    [转] SDP协议 http://blog.csdn.net/dxpqxb/article/details/18706471 1.SDP协议概述 SDP(Session Description Pro ...

  5. 蓝牙SDP协议概述

    之前写了一篇 bluedroid对于sdp的实现的源码分析   ,他其实对于sdp 协议本身的分析并不多,而是侧重于 sdp 处于Android bluedroid 架构中的代码流程,这篇文章,是针对 ...

  6. SDP协议简述

    SDP协议也是文本协议,只需要按照协议本身的格式填充.SDP协议格式即详细信息如下: 会话描述 格式及举例 v=(protocol version) v=0 o=(owner/creator and ...

  7. (转)SDP协议概述

    1 简介 SDP 完全是一种会话描述格式, 它不属于传输协议. 它使用不同的适当的传输协议,包括会话通知协议(SAP).会话初始协议(SIP). 实时流协议(RTSP).MIME 扩展协议的电子邮件以 ...

  8. SDP协议介绍

    一.SDP协议介绍 SDP 完全是一种会话描述格式 ― 它不属于传输协议 ― 它只使用不同的适当的传输协议,包括会话通知协议(SAP).会话初始协议(SIP).实时流协议(RTSP).MIME 扩展协 ...

  9. rtsp和sdp协议简介

    RTSP是由Real network 和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议. 实时流协议(RTSP)建立并控制一个或几个时间同步的连续流媒体,如音频和视频.尽管 ...

随机推荐

  1. phpmyadmin上传较大sql文件

    1.找到phpmyadmin目录,新建文件夹import 2.打开import文件夹,将要导入的sql文件放进去 3.打开config.inc.php文件,修改$cfg['UploadDir']等于i ...

  2. sqlserver 2000新建sysadmin角色

    新建登录:sp_addlogin 'netcafe','pubwin'  netcafe是用户名,pubwin是密码,下面是msdn官方格式: sp_addlogin [ @loginame = ] ...

  3. mysql-protocol中对编码长度整数型的规则

    固定长度整型数值在mysql 协议中的应用之一就是affected row :这个要根据首字节来判断 1.如果首字节小于251;那么首字节就是它要表示的数值. 2.如果首字节等于251;那么它表示的就 ...

  4. 关于STM32工程的错误,狗血错误。。。..\CMSIS\core_cm3.h(1087): error: #20: identifier "IRQn_Type" is undefined

    这件事还是要写一篇博客了,为了后来的人不换致命性的错误 辛辛苦苦写的一个四个不同的引脚不同时钟不同寄存器分别产生四种不同占空比不同周期的信号方波程序超级经典  PS:页尾上传PWM波形产生工程附件供大 ...

  5. js 图片无缝循环

    <html> <head> <title>Js图片无缝滚动</title> <style type="text/css"> ...

  6. Oracle的几种索引

    Oracle 提供了多种不同类型的索引以供使用.简单地说, Oracle 中包括如下索引: 1. B* 树索引 这些是我所说的 “ 传统 “ 索引.到目前为止,这是 Oracle 和大多数其他数据库中 ...

  7. KL25用SPI操作nor flash

    KL25的SPI连接一个nor flash.该flash型号为FM25F04,支持SPI的模式0和模式3,要求高位先发送,在上升沿采集数据. 通常,SPI有4种模式,取决于CPOL与CPHA如何配置. ...

  8. Keil C51 中指针的使用

    指针是C语言中比较难的一个内容,Keil C51在指针方面有和标准C不一样的地方,今天看了一些资料学习了一下Keil C51 中指针的使用. keil51的指针,包含两种指针:普通指针,兼容标准C:内 ...

  9. TEA加密算法的文件加密和解密的实现

    一.TEA加密算法简介 TEA加密算法是由英国剑桥大学计算机实验室提出的一种对称分组加密算法.它采用扩散和混乱方法,对64位的明文数据块,用128位密钥分组进行加密,产生64位的密文数据块,其循环轮数 ...

  10. mysql logstash 配置

    [elk@dr-mysql01 mysql]$ cat logstash_mysql.conf input { file { type => "zj_mysql" path ...