SIP、SAP与SDP
1 引 言
SIP(Session Initiation Protocol,会话初始协议)、SAP(Session Announcement Protocol,会话通告协议)、SDP(Session Description Protocol,会话描述协议)是三个与会话(Session)有关的既有联系又有区别的RFC协议。在本文中,我们将对这三个协议做简单分析并给出一个利用这三个协议实现的具有一定实用价值的多媒体应用。
2 协议分析
2.1 SIP协议介绍与分析
会话初始协议(SIP)是一信令协议用于初始、管理和终止分组网络中的语音和视频会话,具体地说就是用来生成、修改和终结一个或多个参与者之间的会话。SIP是互联网工程任务组(IETF)多媒体数据和控制体系结构的一个组成部分,因此它与IETF的许多其他协议都有联系,例如RTP(实时传输协议)和本文提到的SAP、SDP协议。
SIP主要提供了与会话建立和终结相关的五个方面功能,它们是:
(1)用户定位:用于通信的终端系统的决定;
(2)用户可用性:被呼叫方参与通信的意愿的决定;
(3)用户能力:使用的媒体和媒体参数的决定;
(4)会话建立:“振铃”,呼叫和被呼叫方会话参数的建立;
(5)会话管理:包括转移和终结会话,修改会话参数,以及调用业务等。
SIP网络由四种类型的逻辑SIP实体组成。每一实体具有特定的功能,并且作为客户机(初始请求),或作为服务器(响应请求),或作为两者的结合参与到SIP通信中。一个“物理设备”能够具有多于一个逻辑SIP实体的功能性。例如,作为代理服务器的网络服务器可同时具备注册服务器的功能。
下面是四种功能实体:
(1)用户代理
在SIP中,用户代理(UA)是端点实体。用户代理通过交换请求和响应初始和终止会话。UA作为一应用程序,它包含用户代理客户机和用户代理服务器,如下:
· 用户代理客户机(UAC):客户机应用程序,它初始SIP请求。
· 用户代理服务器(UAS):服务器应用程序,当接收到SIP请求时它联系用户并且代表用户返回一响应。
在SIP网络中具有UA功能的设备是:工作站,IP电话,电话网关,呼叫代理,自动应答服务。
(2)代理服务器
代理服务器是同时作为服务器和客户机的中间实体,其目的是代表其他客户机生成请求。请求被内部处理或可能在翻译之后将其传递到其他服务器。如果需要,代理在转发之前可解释和重写请求消息。
(3)重定向服务器
重定向服务器接受SIP请求,并将被呼叫方的SIP地址映射成零个(如果没有可知地址)或更多的新地址并且将它们返回客户机。不像代理服务器,重定向服务器不传递请求到其他服务器。
(4)注册服务器
注册服务器是接受REGISTER请求的服务器,其目的是根据用户在请求中规定的联系信息更新位置数据库。
SIP通过E-mail形式的地址来标明用户地址。每一用户通过一等级化的URL来标识,它通过诸如用户电话号码或主机名等元素来构造(例如:SIP:user@company.com)。因为它与E-mail地址的相似性,SIP URLs容易与用户的E-mail地址关联。
SIP有两种类型的消息,它们是:
(1)请求:从客户机发到服务器的消息。
(2)响应:从服务器发到客户机的消息。
其中请求消息包括:
· INVITE:初始呼叫,改变所以参数(re-INVITE)。
· ACK:确认INVITE的最终应答。
· BYE:终止呼叫。
· CANCEL:撤消搜索和振玲。
· OPTIONS:查询另一方能力。
· REGISTER:注册位置服务。
· INFO:发送会话中信息而不改变会话状态。
· PRACK:与ACK作用相同,但是用于临时响应。
· SUBSCRIBE:该方法用来向远端端点预订其状态变化的通知。
· NOTIFY:该方法发送消息以通知预订者它所预定的状态的变化。
· UPDATE:允许客户更新一个会话的参数而不影响该会话的当前状态。
· MESSAGE:通过在其请求体中承载即时消息内容实现即时消息。
· REFER:其功能是指示接受方通过使用在请求中提供的联系地址信息联系第三方。
响应消息包含数字响应代码。SIP响应代码集部分基于HTTP响应代码。有两种类型的响应,它们是:
· 临时响应(1XX):临时响应被服务器用来指示进程,但是不终结SIP事物。
· 最终响应(2XX,3XX,4XX,5XX,6XX):最终响应终止SIP事物。
每条SIP消息由以下三部分组成:
(1)起始行(Start Line):每个SIP消息由起始行开始。起始行传达消息类型(在请求中是方法类型,在响应中是响应代码)与协议版本。起始行可以是一请求行(请求)或状态行(响应)。
(2)SIP头:用来传递消息属性和修改消息意义。它们在语法和语义上与HTTP头域相同(实际上有些头就是借自HTTP),并且总是保持格式:<名字>:<值>。
(3)消息体:用于描述被初始的会话(例如,在多媒体会话中包括音频和视频编码类型,采样率等)。消息体能够显示在请求与响应中。SIP清晰区别了在SIP起始行和头中传递的信令信息与在SIP范围之外的会话描述信息。可能的体类型就包括本文将要描述的SDP会话描述协议。
2.2 SAP协议介绍与分析
SAP的全称是会话通告协议,其目的是为了通知一个多播的多媒体会议或其他多播会话而将相关的会话建立信息发送给所期望的会议参与者。SAP协议本身并不建立会话,它只是将建立会话所必要的信息,例如所采取的视频或音频编码方式通知给其他在一个多播组内的参与者,当参与者接收到该通知数据包后就可以启动相应的工具并设置正确的参数向该会议的发起者建立会话了(建立会话可以使用SIP协议)。
通知的发起者并不知道各参与者是否收到了会话通知,也就是说每个参与者并不向通知发起者回复“我收到了通知”的确认;因此,通知发起者只能够通过周期性地发送这个会话通知从而最大可能地使参与者收到通知。
SAP并不是向每个参与者一一发通知数据包,它是通过多播的机制(multicast)向一个已知的多播地址和端口一次性发送一个通知数据包,该多播组内的成员如果工作正常的化就会收到该通知数据包。因此,为了使会议的参与者都能够接收到通知,就要确保其参加到该多播组内。
一个通知数据报除了可以通知某会话将要发起外,还可以通知该会话取消了或该会话的某些通信参数已被修改了。当然,这需要相应机制使这几个通知都是针对同一会话的。
那么SAP如何描述会话的相关信息,这就需要借助SDP协议了。在SAP数据包的payload字段中一般情况下填充的就是SDP数据,它描述了建立会话所必要的基本信息。
SDP将在1.3节中介绍。
2.3 SDP协议介绍与分析
上面介绍的两个协议都用到了SDP,实际上SDP就是用来描述多媒体会话通告,多媒体会话邀请和其他形式的多媒体会话初始化的协议。SDP包通常包括以下信息:
(1)会话信息
· 会话名和目的。
· 会话活动时间。
由于参与会话的资源是受限制的,因此包括以下附加信息是非常有用的。
· 会话使用的带宽信息。
· 会话负责人的联系信息。
(2)媒体信息
· 媒体类型,例如视频和音频。
· 传输协议,例如RTP/UDP/IP和H.320。
· 媒体格式,例如H.261视频和MPEG视频。
· 多播地址和媒体传输端口(IP多播会话)。
· 用于联系地址的媒体和传输端口的远端地址(IP单播会话)。
SDP描述由许多文本行组成,文本行的格式为<类型>=<值>,<类型>是一个字母,<值>是结构化的文本串,其格式依<类型>而定。
3 SAP、SIP、SDP组合应用实例
在这个应用实例中,我们设计了这样一种场景:某公司领导需要与本公司各部门负责人召开电视会议。他使用的多媒体会议系统采用了本文所描述的这种SAP、SIP、SDP组合应用技术。该公司领导首先通过一台具有Web浏览功能的客户机登陆会议服务器,注册一个会议。在注册的同时,他就将各部门负责人纳入了本次会议的参与者之列(当然,还需要该公司领导和各部门负责人的客户机在同一个多播组内)。然后,他在页面上点击一个“会议通知”按钮,会议服务器就通过SAP协议向本次会议的各参与者(包括公司领导和部门负责人)所在客户机发送召开会议的通知。此时,若各参与者所在客户机是正常的连接到网络上并且SAP通知接收器正常工作的话,它就会以声音或图形的方式通知该参与者,同时准备好本客户机参加此次会议的客户端程序。当各参与者发现会议通知后,他在已经准备好的会议客户端程序上点击一个“参加会议”的按钮,客户端就通过SIP协议将该客户机轻松地加入到会议之中。当参与者到齐后,在会议主席(公司领导)的控制下,此次会议就可以正式开始了。
各参与者客户机上的SAP通知接收器接收到会议通知后,它会尽可能地调用客户机上的各种资源以满足本次会议的要求,如果实在不能够满足的话,它也可以以书面形式通知参与者本机所缺的资源。在整个会议的SAP、SIP交互过程中都用到了SDP协议来描述会话和媒体信息。简要流程如附图所示。
————————————————
版权声明:本文为CSDN博主「zjf30366」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zjf30366/article/details/84665597