文档库 最新最全的文档下载
当前位置:文档库 › SIP协议栈在TMS320DM642上的实现

SIP协议栈在TMS320DM642上的实现

 第5卷第1期

2006年2月 江南大学学报(自然科学版)Journal of Southern Yangtze U niversity(N atural Science Edition)

Vol.5 No.1Feb. 2006 文章编号:1671-7147(2006)01-0050-04

收稿日期:2004-10-14; 修订日期:2005-02-20.

作者简介:万春新(1970-),男,甘肃景泰人,通信与信息系统专业硕士研究生.

3通讯联系人:唐慧明(1963-),男,浙江桐乡人,副教授,工学硕士,硕士生导师.主要从事多媒体通信、视频压缩

编解码及模式识别等研究.Email :tanghm @https://www.wendangku.net/doc/675639185.html,

SIP 协议栈在TMS320DM642上的实现

万春新, 唐慧明3

(浙江大学电气工程学院,浙江杭州310027)

摘 要:为实现基于TMS320DM642多媒体处理器的可视电话,采用相对简单的SIP 协议作为信

令协议;研究了SIP 的结构、机制,并运用回调函数和UDP 并发服务器算法实现了基于SIP 的可视电话.实践证明,SIP 协议结构简洁,易于扩展和适于Internet 接入.关键词:SIP ;TMS320DM642;媒体处理器;可视电话中图分类号:TP 311.1文献标识码:A

Implementation of SIP Protocol Stack on TMS320DM642

WAN Chun Οxin , TAN G Hui Οming 3

(College of Electrical Engineering ,Zhejiang University ,Hangzhou 310027,China )

Abstract :The paper p resent s t he implement of video telep hone based SIP using callback f unctions and UDP concurrent server .The application result shows t hat SIP is simple ,prone to expandable ,suitable to access to Internet.

K ey w ords :SIP ;TMS320DM642;media processor ;video telep hone

随着网络技术和多媒体技术的不断发展,多媒体通信业务逐渐在Internet 应用中占据主导地位,其中以VOIP 技术的应用尤为突出.VO IP 即基于IP 网络的语音通信,它不仅是狭义上的IP 电话,更是一个能提供包括视频交互在内各种多媒体业务的综合性应用平台.VOIP 系统一般基于SIP 或H.323两种通信控制协议.在软交换技术即将成为下一代网络交换技术的大背景下,SIP 以其诸多优势被认为可作为软交换技术的接入层核心协议,并被成功应用于诸多电信运营商的代表性系统中[1].

TMS320DM642是德州仪器公司(TI )发布的新型数字媒体处理器,该处理器是专门为视频与影像市场量身定制的,特别适用于视讯终端、视频点

播(VOD )、多信道数字视频摄录像应用以及高品质

视频编码与解码解决方案,该全套数字媒体处理器基于TI 业经验证的TMS320C64x 系列DSP 架构,能与TI 的其它C64x 数字信号处理器进行代码兼容,并且可以同时连接多达6个符合B T 656的8位视频流.处理器可提供片上集成的视频端口、无缝以太网及多信道音频[2].

1 SIP 协议

1.1 SIP 协议的工作方式

会话初始化协议(Session Initiation Protocol ,SIP )是由IETF (互联网工程任务组)提出的IP 电

话信令协议.它被用来创建、修改和终结一个或多个参与者参加的会话.SIP具有许多优点,在下一代网络(N GN)和第三代移动通信(3G)中都有重要的应用.SIP和会话描述协议(SDP)结合,可以在IP网上提供价格便宜的电话业务、数据业务甚至多媒体业务.

SIP协议采用客户机/服务器的工作方式,SIP 网络包含两类组件:用户代理(U ser Agent)和网络服务器(Network Server).用户代理又分为用户代理客户端(UAC)和用户代理服务器(UAS),其中UAC负责发起SIP呼叫请求,UAS负责对呼叫请求做出响应.网络服务器主要为用户提供注册、认证、鉴权和路由等服务.SIP消息有两种类型:从UAC发到UAS的请求消息和从UAS发到UAC 的响应消息.请求消息包含请求行、头、消息体3个元素.响应消息包含状态行、头、消息体3个元素.请求行/状态行和头定义了呼叫的特征,消息体独立于SIP协议并可包含任何内容[3].

SIP是一个分层体系结构的协议,最底层是语法和编码层,它的编码使用扩展的巴科斯范式(ABN F)规定.第2层是传输层,它定义了网络上的客户机和服务器如何接收请求和发送响应.第3层是事务层,事务是SIP的基本元素,事务由客户机向服务器发送的请求和从服务器发回客户机的所有响应组成.事务层若处理消息超时,则重传并匹配响应到请求.事务层之上的层称为事务用户(TU),每个SIP实体(除了无状态代理)都是事务用户.当一个事务用户希望发送请求时,就创建一个客户机事务实例以发送此请求.SIP提供用户定位、用户通信能力协商、用户可用性、建立呼叫和呼叫处理与控制等功能.SIP不提供具体的业务,不定义会话将如何描述,只提供会话建立功能.SIP协议清晰地将会话建立和会话描述区分开,使SIP可以成为Internet上多媒体会话中真正意义上的信令协议,可以和其他协议如R TP、R TSP和M EGACO 协议一起使用,并提供不同的服务,使得SIP协议的适用范围很广.

1.2 SIP协议栈的结构与应用程序

SIP协议栈组织分为SIP/SDP协议栈管理层、对话层、事务层、SIP/SDP消息编码解析层和传输层5个层次,每层提供相应的A PI.协议栈总体结构和应用程序与各层的关系见图1.

1.2.1 SIP/SDP协议栈管理层 负责系统配置、分配内存、管理资源、提供登录协议栈和进行管理的命令,以及所有其他层的初始化和关闭.应用程序使用本协议栈前,必须先调用该层的初始化接口以初始化要使用的层;在结束应用程序前,必须调用本层的关闭接口关闭相应的层.该层提供的A PI 有资源管理、协议栈初始化和关闭接口

.

图1 SIP协议栈实现总体结构

Fig.1 The structure of SIP stack

1.2.2 对话层 创建对话(Dialog),管理对话内的所有SIP消息,并对这些消息进行处理,创建请求并生成响应.该层也负责把从事务层来的事务映射到相应的对话.该层提供的A PI可以创建、终止和修改对话,还可以处理对话内的不同消息.

1.2.3 事务层 创建并管理事务对象.每个事务对象负责维持状态,收发消息和使用传输层重传消息.事务层也需要把从传输层到来的消息映射到相应的事务.该层提供收发不同类型消息的A PI.

1.2.4 传输层 管理套接字(Socket)和网络连接,可以使用面向连接和无连接的协议,如TCP或UDP来传送数据.该层提供收发消息的简单A PI.

1.2.5 SIP/SDP消息编码解析层 SIP请求和响应是基于文本的消息,该层处理SIP消息(包含SDP会话描述信息)的编码和解析.该层提供的A PI可以方便地操作SIP消息和SDP描述符的各个部分.对话层、事务层和传输层都要用到该层的功能实现它们的对外接口.

对话层、事务层、传输层是垂直方向上互相联系的3层.传输层提供最基本的收发消息的功能,对任何类型的消息提供的收发接口完全一样.事务层中,对于不同类型的SIP请求消息,提供不同的发送接口;收到不同的SIP请求消息后,提供不同的处理接口,另外还提供了收发响应消息的接口.事务层A PI的实现,要使用传输层中实现的功能.对话层中提供的SIP,处理消息更加细分,其实现要使用事务层所提供的功能.

2 实现原理

该系统是在DM642的评估板上实现的,TI

15

 第1期万春新等:SIP协议栈在TMS320DM642上的实现

DSP提供了一个实时操作系统DSP/BIOS,可实现实时调度、同步以及主机/目标系统通信和实时监测的应用.DSP/B IOS组件包括抢先式多任务内核、硬件抽象层、实时分析工具和配置工具[4].

文中的SIP信令模块建立在SIP协议栈的基础之上.一个完整的SIP协议栈包括核心协议栈和UA外围框架的实现.核心协议栈提供包括内容解析在内的一系列较低层的操作函数实现.一般以函数库的形式发布,其主要组成部分见图1.要实现完整的SIP UA功能,还必须提供核心协议栈的外包,即实现整个UA的外围构架.本实现的核心协议栈利用了GNU项目组的OSIP library,它是自由软件基金会(FSF)支持开发的一个开放源代码程序.其提供了SIP消息解析机制、有限状态机事务模型的处理、对话相关处理、SDP基本操作处理等较低层的操作函数实现,供SIP应用程序开发者使用.由于OSIP library是提供给Windows、U nix平台下的PC机或Vxworks实时操作系统下的嵌入式系统用的,所以欲在DSP/BIOS下使用,首先需进行移植,还要改变与操作系统有关的线程、信号量等实现方法,并要考虑在DSP/BIOS下网络开发的特点及特有的程序结构.

2.1 任务的创建与调度

基于在SIP library中使用了POSIX线程的概念,所以在DSP/BIOS下要用任务(task)及相关的函数来实现.如:TSK_create()创建线程;TSK_setpri()设置线程的优先级;TSK_exit()退出线程等.

互斥与同步机制的实现,需要用DSP/BIOS下的信号灯(Semaphores)及相关函数.如:SemCreate()创建信号量;SemDelete()删除信号量;SemPend()等待信号量以及SemPost()触发信号量等.

2.2 网络程序开发方法

针对网络开发提供了ND K(Network Developer’s K it)套件,ND K通过抽象的编程接口而与本地操作系统和底层的硬件层相隔离.本地操作系统被抽象为操作系统适配层(OS.lib),而定制的硬件通过硬件抽象层库(HAL.lib)来支持.这两个库用来连接DSP/B IOS栈和系统外设,作为ND K 与它们之间的接口.ND K的5个主要组成部分见图2[5].

开发网络程序时必须注意以下几点:

1)必须包含5个组成部分,即以下库文件:hal _et h_dm642.lib,hal_ser_st ub.lib,hal_timer.lib, hal_userled.lib,netct rl.lib,nettool.lib,os.lib, stack.lib以及evmdm642bsl.lib.

2)在CCS的配置文件中,必须包含初始化EVM板子的程序dm642.init.

3)TCP/IP协议栈的基本初始化过程为:①调用NC_SystemOpen()初始化操作系统环境; ②通过CfgNew()创建新配置; ③建立新配置,或通过CfgLoad()装载先前的配置; ④调用NC_ Net Start()启动协议栈,加入3个回调函数指针给“start”,“stop”和IP地址变化选项.

经过初步初始化后,NC_Net Start()创建一个调用用户提供的“start”回调函数的线程,而“start”回调函数创建网络需要的线程,用户网络应用在此编写.正常情况下除非调用NC_Net Stop(),否则网络不会停止.调用NC_Net Stop()后,最初的NC_ Net Start()线程调用用户提供的“stop”回调函数关闭所有操作,释放资源,但这时TCP/IP协议栈的函数都无法调用了.NC_Net Start()以NC_Net Stop()调用的返回值返回.应用程序可再次调用NC_ Net Start(),重启(reboot)TCP/IP协议栈.当系统准备好最终关闭时,在NC_Net Start()返回和会话结束后,调用Cf gFree()释放配置句柄,最后调用NC_SystemClo se()关闭系统.

4)在使用套接字(sockets)时,必须调用fdOpenSession(),结束任务时调用fdCloseSession()

.

图2 TCP/IP协议栈控制流

Fig.2 TCP/IP stack control flow

2.3 C/S(客户/服务器)体系的算法实现

客户/服务器模型是解决会聚点(rendezvous)问题的一种方式.它要求在任何一对进行通信的应用进程中,有一方必须在启动执行后(无限期地)等待对方与其联系,它减少了下层协议软件的复杂性.因为,下层协议不必对收到的通信请求作出响应.由于SIP终端既包含客户又包含服务器,必须同时实现客户端和服务器端的算法[6].

采用UDP传输、并发服务器算法同时处理多个连接请求,算法流程见图3.在具体的实现代码中,要用ND K提供的A PI代替相应的socket s A PI,主要是Network Tools Library和DNS两个

25 江南大学学报(自然科学版) 第5卷 

模块里的函数[7]

.

图3 U DP 客户/服务器程序算法流程

Fig.3 U DP C/S arithmetic flow

2.4 回调函数机制

从网络上接收到SIP 消息时,采用回调函数的方式为应用程序提供接口.采用该方式,用户可方便地使用SIP 协议栈,在回调函数中实现自己的应用逻辑,亦即实现自己的应用.另外,协议栈可以通过提供更多的回调函数,方便扩充对外接口.这些机制使协议栈非常灵活,方便使用.

当从网络上收到SIP 请求消息时,协议栈先对消息进行解析,根据SIP 消息的类型进行相应的处理.在实现协议栈内部的处理后,使用一个函数指针调用某个特定的函数,这个函数指针亦即回调函数指针.在应用程序中,需实现这个函数,在初始化协议栈时,把这个函数指针作为协议栈的初始化参数传入协议栈.这样,在协议栈对消息的处理过程中,就会"嵌入"用户所实现的应用.当接收到不同类型的SIP 消息后,需要让用户进行不同的处理,于是协议栈针对不同的消息,提供给用户不同的回

调函数.用户实现这些函数后,在初始化协议栈时

将函数指针作为参数传入即可.在代码中结合应用重新实现了自己的invite _accepted _cb 、bye _cb 、faillure_cb 、invite_cb 、informateve _cb 、set _audio _offer 、accept_audio_offer 、read_audio _answer 这些回调函数,完全实现了SIP 信令协议的功能.2.5 音、视频的接入方法

初始化时,注册音/视频编解码器(G711/G723.1;H.263,M PEG4):register_codecs (),并将其加入到对应的链表中list_append ().利用SIP 的offer/answer 模型机制协商会议参数(即音、视频编

解码器算法),这是通过set _audio _offer (),set _vidio_offer (),accept _audio_offer (),accept _vidio_offer (),read_audio _answer (),read_vidio _answer ()这些回调函数实现的.而媒体流的通信是在成功建立起SIP 双方对话后开始的,发起Invite 请求的主叫方(UAC )在收到200O K 应答后,用Invite _accepted_cb ()回调函数中启动音、视频数据流,而被叫方(UAS )在接受Invite 请求后启动音、视频数据流,这样通信双方就可以进行双向媒体通信了.:audio_st ream_start ()和vidio_st ream_start ()这两个函数启动了音、视频编解码处理流程:音视频数据采集->编码->R TP 打包发送(主叫方);和R TP 接收拆包->解码->音视频数据回放(被叫方).

3 结 语

将SIP 协议栈成功移植到了TI TMS320ΟDM642处理器上,并在其上实现了基于SIP 的VO IP 可视电话,达到了与Windows 下的SIP 软件终端的视音频互通.实践证明,SIP 协议结构简洁、易于扩展并适于Internet 接入,有良好的应用前景.

参考文献:

[1]雷正雄,朱晓民,廖建新.SIP 协议栈的设计与实现[J ].现代电信科技,2004,(3):17-20.

[2]Texas Instruments Incorporated.TMS320DM642Technical Overview[Z].USA :Texas Instruments Incorporated ,2002.[3]Rosenberg J ,Schulzrinne H.SIP :Session Initiation Protocol ,RFC3261[Z].USA :IETF ,2002.

[4]Texas Instruments Incorporated .TMS320DSP/BIOS User ’s Guide[Z].USA :Texas Instruments Incorporated ,2003.[5]Texas Instruments Incorporated .Texas Instruments TMS320C6000TCP/IP Network Developer ’s Kit User ’s Guide[Z].

USA :Texas Instruments Incorporated ,2003.

[6]Douglase Comer ,David L Steviens.用TCP/IP 进行网络互联(第3卷)客户-服务器编程与应用(Linux/POSIX 套接字

版)[M ].赵刚,林瑶,蒋慧译.北京:电子工业出版社,2001.20-50.

[7]Richard Stevens W.UN IX 网络编程(第1卷)套接口API 和X/Open 传输接口A PI[M ].施振川,周利民,孙宏晖,等译.

北京:清华大学出版社,1999.180-202;620-648.

(责任编辑:彭守敏)

3

5 第1期万春新等:SIP 协议栈在TMS320DM642上的实现

SIP协议呼叫流程及协议分析

一、SIP协议介绍: 会话发起协议SIP(Session Initiation Protocol)是一个应用层控制信令协议,用于建立、更改和终止多媒体会话或呼叫。SIP作为一个基础,可以在其上提供很多不同的服务。目前已经定义的媒体类型有音频、视频、应用、数据、控制。 二、SIP呼叫流程: 注册流程: (1)用户首次试呼时,终端代理A 向代理服务器发送REGISTER 注册请求; (2)代理服务器通过后端认证/计费中心获知用户信息不在数据库中,便向终端代理回送401Unauthorized 质询信息,其中包含安全认证所需的令牌; (3)终端代理提示用户输入其标识和密码后,根据安全认证令牌将其加密后,再次用REGISTER 消息报告给代理服务器; (4)代理服务器将REGISTER 消息中的用户信息解密,通过认证/计费中心验证其合法后,将该用户信息登记到数据库中,并向终端代理A 返回成功响应消息200 OK。 呼叫流程:

(1)用户摘机发起一路呼叫,终端代理A 向该区域的代理服务器发起Invite 请求;(2)代理服务器通过认证/计费中心确认用户认证已通过后,检查请求消息中的Via 头域中是否已包含其地址。若已包含,说明发生环回,返回指示错误的应答;如果没有问题,代理服务器在请求消息的Via 头域插入自身地址,并向Invite 消息的To 域所指示的被叫终端代理B 转送Invite 请求; (3)代理服务器向终端代理A 送呼叫处理中的应答消息,100 Trying; (4)终端代理B 向代理服务器送呼叫处理中的应答消息,100 Trying; (5)终端代理B 指示被叫用户振铃,用户振铃后,向代理服务器发送180 Ringing 振铃信息; (6)代理服务器向终端代理A 转发被叫用户振铃信息; (7)被叫用户摘机,终端代理B 向代理服务器返回表示连接成功的应答(200 OK);(8)代理服务器向终端代理A 转发该成功指示(200 OK); (9)终端代理A 收到消息后,向代理服务器发ACK 消息进行确认; (10)代理服务器将ACK 确认消息转发给终端代理B; (11)主被叫用户之间建立通信连接,开始通话; 结束流程:

sip协议原理分析及总结

SIP协议学习总结 1、SIP协议定义 SIP(Session Initiation Protocol,即初始会话协议)是IETF提出的基于文本编码的IP电话/多媒体会议协议。用于建立、修改并终止多媒体会话。SIP 协议可用于发起会话,也可以用于邀请成员加入已经用其它方式建立的会话。多媒体会话可以是点到点的话音通信或视频通信,也可以是多点参与的话音或视频会议等。SIP协议透明地支持名字映射和重定向服务,便于实现ISDN,智能网以及个人移动业务。SIP协议可以用多点控制单元(MCU)或全互连的方式代替组播发起多方呼叫。与PSTN相连的IP电话网关也可以用SIP协议来建立普通电话用户之间的呼叫。 SIP协议在IETF多媒体数据及控制体系协议栈结构的位置 H.323SIP RTSP RSVP RTCP H.263 etc. RTP TCP UDP IP PPP Sonet AAL3/4AAL5 ATM Ethernet PPP V.34 SIP协议支持多媒体通信的五个方面: ◆用户定位:确定用于通信的终端系统; ◆用户能力:确定通信媒体和媒体的使用参数; ◆用户有效性:确定被叫加入通信的意愿; ◆会话建立:建立主叫和被叫的呼叫参数; ◆会话管理:包括呼叫转移和呼叫终止; SIP协议的结构 SIP是一个分层的协议,也就是说SIP协议由一组相当无关的处理层次组成,这些层次之间只有松散的关系。 SIP最底层的是它的语法和编码层。编码方式是采用扩展的Backus-Naur Form grammar (BNF范式)。 第二层是传输层。它定义了一个客户端发送请求和接收应答的方式,以及一 个服务器接收请求和发送应答的方式。所有的SIP要素都包含一个通讯层。 第三层是事务层。事务是SIP的基本组成部分。一个事务是UAC向UAS发送的一个请求以及UAS向UAC发送的一系列应答。事务层处理应用服务层的重发,匹配请求的应答,以及应用服务层的超时。任何一个用户代理客户端完成的事情都是

SIP协议相关文件

Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层解析使得它的效率比较高。 eXosip是Osip2的一个扩展协议集,它部分封装了Osip2协议栈,使得它更容易被使用。 一、介绍 Osip2是一个开放源代码的sip协议栈,是开源代码中不多使用C语言写的协议栈之一,它具有短小简洁的特点,专注于sip底层解析使得它的效率比较高。但缺点也专门明显,首先确实是可用性差,没有专门好的api封装,使得上层应用在调用协议栈时专门破裂;其次,只做到了transaction层次的协议过程解析,

缺少call、session、dialog等过程的解析,这也增加了使用的难度;再次,缺少线程并发处理的机制,使得它的处理能力有限。 eXosip是Osip2的一个扩展协议集,它部分封装了Osip2协议栈,使得它更容易被使用。eXosip增加了call、dialog、registration、subscription等过程的解析,使得有用性更强。然而eXosip局限于UA的实现,使得它用于registrar、sip server等应用时极其不容易。另外,它并没有增加线程并发处理的机制。而且只实现了音频支持,缺少对视频和其它数据格式的支持。 综合来讲,Osip2加上eXosip协议栈仍然是个实现Sip协议不错的选择。因此需要依照不同的需求来增加更多的内容。 二、Osip2协议栈的组成 Osip2协议栈大致能够分为三部分:sip协议的语法分析、sip 协议的过程分析和协议栈框架。 1、Sip协议的语法分析:

要紧是osipparser2部分,目前支持RFC3261和RFC3265定义的sip协议消息,包括INVITE、ACK、OPTIONS、CANCEL、BYE、SUBSCRIBE、NOTIFY、MESSAGE、REFER和INFO。不支持RFC3262定义的PRACK。 遵循RFC3264关于SDP的offer/answer模式。带有SDP的语法分析。 支持MD5加解密算法。支持Authorization、www_authenticate 和proxy_authenticate。 2、Sip协议的过程分析: 要紧是osip2部分,基于RFC3261、RFC3264和RFC3265的sip 协议描述过程,围绕transaction这一层来实现sip的解析。 Transaction是指一个发送方和接收方的交互过程,由请求和应答组成。请求分为Invite类型和Non-Invite类型。应答分为响应型的应答和确认型的应答。响应型的应答是指那个应答仅代表

sip协议简单解释

引言 节省费用以及想把语音和数据融合在一起的需求,促使了IP电话的蓬勃发展。 为了使IP电话为大众所接受,成为主流,甚至最终取代传统的POTS(Plain Old Telephone Service旧式电话服务),有两个条件必须满足: 第一,话音通信的质量至少要达到POTS同样的水准; 第二,必须有信令的支持,就像PSTN(Pubic Switched Telephone Networks)公用交换电话网)中有No.7信令一样。 目前,IP电话系统有H.323和SIP两个完整和独立的信令标准,它们都对IP电话系统信令提出了完整的解决方案。它们对呼叫的连接都具有建立、管理和撤销的能力,具有网络管理功能,使端点用户具有进行建立和交互QoS(Quality of Service)的能力,且容易扩充新功能,支持不同类型的互操作性。当然,这两个协议都包含关于语音编码的解压缩方面的要求,只是这部分对两个协议而言是一样的。我们主要是从信令的角度对它们进行比较分析。 2 H.323简介 H.323是ITU-T第16工作组的建议,H.323由一组协议构成,其中有负责音频与视频信号的编码、解码和包装,有负责呼叫信令收发和控制的信令,还有负责能力交换的信令。1999年7月前,多数已实现的系统是基于H.323第二版的,而在此之后,H.323第三版开始应用。 2.1通信系统 H.323定义了4个主要部件构筑基于网络的通信系统:终端Terminals 、网关Gateways 、网守Gatekeepers 、多点控制单元(MCU)。 1终端 在基于IP的网络上是一个客户端点。它需要支持下面3项功能:支持信令和控制,即支持

SIP协议格式详解

1.SIP 1.1.1.SIP格式 每条SIP消息由以下三部分组成: (1)起始行(Start Line):每个SIP消息由起始行开始。起始行传达消息类型(在请求中是方法类型,在响应中是响应代码)与协议版本。起始行可以是一请求行(请求)或状态行(响应)。 (2)SIP头:用来传递消息属性和修改消息意义。它们在语法和语义上与HTTP头域相同(实际上有些头就是借自HTTP),并且总是保持格式:<名字>:<值>。 (3)消息体:用于描述被初始的会话(例如,在多媒体会话中包括音频和视频编码类型,采样率等)。消息体能够显示在请求与响应中。SIP清晰区别了在SIP起始行和头中传递的信令信息与在SIP 范围之外的会话描述信息。可能的体类型就包括本文将要描述的SDP会话描述协议。

1.1. 2.消息头 Header field where proxy ACK BYE CAN INV OPT REG Accept R - o - o m* o Accept 2xx - - - o m* o Accept 415 - c - c c c Accept-Encoding R - o - o o o Accept-Encoding 2xx - - - o m* o Accept-Encoding 415 - c - c c c Accept-Language R - o - o o o

Accept-Language 2xx - - - o m* o Accept-Language 415 - c - c c c Alert-Info R ar - - - o - - Alter-Info 180 ar - - - o - - Allow R - o - o o o Allow 2xx - o - m* m* o Allow r - o - o o o Allow 405 - m - m m m Authentication-Info 2xx - o - o o o Authorization R o o o o o o Call-ID c r m m m m m m Call-Info ar - - - o o o Contact R o - - m o o Contact 1xx - - - o - - Contact 2xx - - - m o o Contact 3xx d - o - o o o Contact 485 - o - o o o Content-Disposition o o - o o o Content-Encoding o o - o o o Content-Language o o - o o o Content-Length ar t t t t t t Content-Type * * - * * * Cseq c r m m m m m m Date a o o o o o o Error-Info 300-699 a - o o o o o Expires - - - o - o From c r m m m m m m In-Reply-To R - - - o - - Max-Forwards R amr m m m m m m Min-Expires 423 - - - - - m MIME-Version o o - o o o Organization ar - - - o o o Priority R ar - - - o - - Proxy-Authenticate 407 ar - m - m m m Proxy-Authenticate 401 ar - o o o o o Proxy-Authorization R dr o o - o o o Proxy-Require R ar - o - o o o Record-Route R ar o o o o o o Record-Route 2xx,18x mr - o o o o - Reply-To - - - o - - Require ar - c - c c c - o o o o o Retry-After 404, 413,

SIP协议讲解

SIP协议讲解 14 关于本章 SIP协议 内容本章描述内容如下表所示。标题 14.1 概述14.2 SIP 消息类型14.3 SIP消息结构14.4 SIP-T简介本节简要介绍SIP 协议的应用以及相关概念。本节介绍SIP消息的类型。本节介绍SIP消息的结构。本节介绍SIP-T的应用。 14.5 SIP消息流程本节举例介绍SIP相关的消息流程。本章将对SIP协议做一简要介绍,包括涉及的基本概念、消息结构以及简要的消息流程。 14.1 概述 SIP(Session Initiation Protocol)是一个应用层控制协议,用于创建、更改和终止会话。这里的会话类型包括多媒体会议、Inter电话等类似的应用。SIP是实现VOIP(Voice over IP)的关键协议之一。 SIP支持别名映射、重定向服务、ISDN和智能网业务。它支持个人移动(personal mobility),即终端用户能够在任何地方、任何时间请求和获得已订购的任何电信业务。总的来说,SIP能够支持下列五种多媒体通信的信令功能。 l用户定位:确定参加通信的终端用户的位置; l用户通信能力协商:确定通信的媒体类型和参数; l用户意愿交互:确定被叫是否乐意参加某个通信;

l建立呼叫:包括向被叫“振铃”,确定主叫和被叫的呼叫参数; l呼叫处理和控制:包括呼叫重定向、呼叫转移、终止呼叫等等。 SIP可以通过MCU(Multipoint Control Unit)、单播联网方式、或组播方式创建多方会话,支持PSTN和IP电话之间的网关功能。 SIP协议对低层协议作了最少的假设,低层协议可以为SIP协议提供可靠或非可靠传输,可以为分组或字节流业务。SIP可以使用UDP协议或TCP协议作为传输层协议,首选UDP协议。 14.1.1 相关概念 呼叫 一个呼叫是由一个会议中被同一个发起者邀请加入的所有成员组成的。一个SIP呼叫由Call-ID进行标识。因此,如果一个用户是被不同的人邀请参加同一个多点会议,那么每个邀请都构成一个呼叫。点到点IP电话会话是一种最简单的会话,它映射为单一的SIP呼叫。 呼叫分支 一个呼叫分支(Call leg)由Call-ID、To、From三个参数共同决定。在同一个Call-ID中,从A到B的请求与从B到A的请求都属于同一个呼叫分支,呼叫分支也可以理解成一次呼叫中消息经过的路径。 事务

sip协议解析与实现(c和c 使用osip)11

sip协议解析与实现(c和c++使用osip)11 第八章查询能力 SIP的OPTIONS方法允许一个UA查询另外一个UA或者一个代理服务器的能力。这能让客户端探测关于它们所支持的方法、内容类型、扩展和编码等信息,而不用"呼叫(ringing)"另外一端。例如,在客户端插入了一个Require头域到INVITE 中,并列出了不确定目标UAS是否支持的能力之前,它可以先使用OPTIONS方法查询目标UAS是否要查询的选项被目标UAS在应答的Supported头域中返回。所有UA必须支持OPTIONS方法。 OPTIONS方法的目标使用Request-URI来标识,因为它可以表示不同的UA或者SIP服务器。如果OPTIONS被定位到一个代理服务器,Request-URI不由客户端设置,这类似于REGISTER请求设置Request-URI的方法。 如果服务器接收到一个Max-Forwards头域的值为0的的OPTIONS请求,它要对这个请求进行应答而不用管Request-URI. 这个行为与HTTP/1.1一致。这个行为可以被用于"追踪路由线路(traceroute)"功能,从而使用发送一系列递增的 Max-Forwards值的OPTIONS请求的方法检查消息路由过程中个别服务器的能力。

作为一般UA的行为,如果OPTIONS长时间没有应答,事务层能够返回一个超时错误。这将指出,目标是不可到达的并且查询的能力是不可以使用的。 OPTIONS请求可能由建立一个对话的一端发送,用于查询对端在后面的对话中可能会被使用到的能力。 第一节构造OPTIONS请求 OPTIONS请求使用像RFC3261第8.1.1讨论的标准的构造SIP请求的规则来构造。 OPTIONS可能会有一个Contact头域。 应该包含一个Accept头域用来指出UAC希望接收到的应答中的消息体类型。典型的,这可能被设置成用来描述UA的媒体能力的类型,比如,SDP(application/adp)。OPTIONS请求的应答被认为是有限定范围的,它被限定在原始请求的Request-URI内。只有当OPTIONS被作为建立对话的一部分发送,它保证会话中后继的请求也由应答OPTIONS的服务器所接收时,对OPTIONS请求的应答才是可用的。 OPTIONS请求的例子: OPTIONS sip:carol@https://www.wendangku.net/doc/675639185.html, SIP/2.0 Via: SIP/2.0/UDP https://www.wendangku.net/doc/675639185.html,;branch=z9hG4bKhjhs8ass877 Max-Forwards: 70

SIP协议讲解

14 SIP协议关于本章

本章将对SIP协议做一简要介绍,包括涉及的基本概念、消息结构以及简要的消息流程。 14.1 概述 SIP(Session Initiation Protocol)是一个应用层控制协议,用于创建、更改和终止会话。这里的会话类型包括多媒体会议、Internet电话等类似的应用。SIP是实现VOIP(Voice over IP)的关键协议之一。 SIP支持别名映射、重定向服务、ISDN和智能网业务。它支持个人移动(personal mobility),即终端用户能够在任何地方、任何时间请求和获得已订购的任何电信业务。总的来说,SIP能够支持下列五种多媒体通信的信令功能。 l用户定位:确定参加通信的终端用户的位置; l用户通信能力协商:确定通信的媒体类型和参数; l用户意愿交互:确定被叫是否乐意参加某个通信; l建立呼叫:包括向被叫“振铃”,确定主叫和被叫的呼叫参数; l呼叫处理和控制:包括呼叫重定向、呼叫转移、终止呼叫等等。 SIP可以通过MCU(Multipoint Control Unit)、单播联网方式、或组播方式创建多方会话,支持PSTN和IP电话之间的网关功能。 SIP协议对低层协议作了最少的假设,低层协议可以为SIP协议提供可靠或非可靠传输,可以为分组或字节流业务。SIP可以使用UDP协议或TCP协议作为传输层协议,首选UDP协议。 14.1.1 相关概念 呼叫 一个呼叫是由一个会议中被同一个发起者邀请加入的所有成员组成的。一个SIP 呼叫由Call-ID进行标识。 因此,如果一个用户是被不同的人邀请参加同一个多点会议,那么每个邀请都构成一个呼叫。点到点IP电话会话是一种最简单的会话,它映射为单一的SIP呼叫。 呼叫分支 一个呼叫分支(Call leg)由Call-ID、To、From三个参数共同决定。在同一个Call-ID中,从A到B的请求与从B到A的请求都属于同一个呼叫分支,呼叫分支也可以理解成一次呼叫中消息经过的路径。 事务 事务是发生在客户端和服务器之间的,包括从客户端发给服务器的第一个请求消息直到服务器端发给客户端的最终响应消息,这期间的所有的消息。 事务是由一个呼叫分支中的CSeq顺序号来标识的。但也有例外,比如一个ACK 请求与对应的INVITE请求具有相同的CSeq,但它们却构成了各自的事务。 一个正常的呼叫一般包含三个事务。其中,呼叫启动包含两个操作请求:邀请(INVITE)和证实(ACK),前者需要回送响应,后者只是证实已收到最终响应,不需要回送响应。呼叫终结包含一个操作请求:再见(BYE)。 定位服务 SIP重定位服务器或代理服务器用来获得被叫位置的一种服务,可由定位服务器提供,但SIP协议不规定SIP服务器如何请求定位服务。 代理服务器 代理服务器(Proxy Server)是用于将SIP请求路由到目的地的中间路径。它既是客户端也是服务器。用户请求可以直接被代理服务器处理或被转发给别的代理服务器。代理服务器在转发之前要对消息进行解析,必要时还会改写请求。 重定向服务器

相关文档