SIP 协议学习总结.docx_第1页
SIP 协议学习总结.docx_第2页
SIP 协议学习总结.docx_第3页
SIP 协议学习总结.docx_第4页
SIP 协议学习总结.docx_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SIP 协议学习1 初识SIP 1.1 SIP定义Session Initiation Protocol会话初始协议是基于文本的信令协议。是一个在IP网络上进行多媒体通信的应用层控制协议。用来创建、修改和终结一个或多个参与者参加的会话进程。SIP协议可用于发起会话,也可用于邀请成员加入已经用其他方式建立的会话。SIP基于文本编解码。采用事务机制,每一个请求出发Server的操作方法,请求和响应构成一个事务。事务间彼此独立。SIP独立于底层传输协议。SIP协议承载在IP网,传输层协议可用TCP或UDP,推荐首选UDP。SIP支持5方面功能:1. 用户定位:确定通信所用的端系统位置2. 用户能力交换:确定所用的媒体类型和媒体参数3. 用户可用性判定:确定被叫方是否空闲和是否愿意加入通信4. 呼叫建立:邀请和提示被叫,在主被叫之间传递呼叫参数5. 呼叫处理:包括呼叫终结和呼叫转移等1.2 SIP特点1. 一个正在发展和不断研究中的协议。2. 简练、开放、兼容和可扩展等原则。3. 充分注意到因特网开放而复杂的网络环境下的安全问题。4. 充分考虑了对PSTN的各种业务,包括IN(Intelligent Network智能网)业务和ISDN业务(Integrated Services Digital Network综合业务数字网)的支持。2 SIP协议2.1 SIP协议结构1. 最底层的是它的语法和编码层。编码方式是采用扩展的Backus-Naur Form grammar(BNF范式)。2. 第二层是传输层。定义了一个客户端如何发送请求和接收应答,以及一个服务器如何接收请求和发送应答。所有的SIP要素都包含一个通讯层。3. 第三层是事务层。事务层处理应用服务层的重发,匹配请求的应答,以及应用服务层的超时。任何一个用户代理客户端(user agent client UAC)完成的事情都是由一组事务构成的。有状态的代理服务器包含一个事务层;无状态的代理服务器不包含事务层。4. 事务层之上是事务用户TU。每个SIP实体,除了无状态代理,都是一个事务用户。TU可以创建客户事务,也可以取消客户事务。2.2 SIP网络结构User Agent Client (UAC) 用户代理客户端:是一个逻辑的概念,是请求的创建方。UAC角色只在事务中存在。User Agent Server(UAS) 用户代理服务器:是一个逻辑的实体,对SIP请求做出接受、拒绝或者转发的响应。UAS角色在事务中存在。注: UAC和UAS,是在串行事务处理的原理上定义的。当主叫方A发出INVITE请求的时候,A作为UAC创建一个呼叫动作,当接收到被叫方B的BYE请求的时候,A作为UAS响应。UAC和UAS都可重定向。Proxy Server代理服务器:是中间实体,即作为客户端也作为服务端,为客户端提供请求的转发服务。代理服务器首先提供的是路由服务。Location Server 定位服务器:是Internet中的公共服务器,查询可采用多种协议,如LDAP或基于多播的协议。Redirect Server重定位服务器:产生3xx应答的UAS服务器,指示客户端连接别的URI。2.3 SIP协议要素SIP要素:包含用户代理客户端和服务器,无状态和有状态代理服务器和注册服务器,以及互相区别的核心Cores。Cores:除了无状态代理服务器,都是事务用户。UAC(用户代理客户端)和UAS(用户代理服务端)的cores的行为依赖于实现,对所有的实现都有几个公共原则。对UAC来说,这些规则约束请求的建立;对UAS来说,这些规则约束请求的处理和应答。UAC Core:在事务层和传输层之上实现的功能集合。UAS Core:在事务层和传输层之上实现的功能集合。2.3.1 服务器类型Server服务器:用来接收请求、处理请求并且发送回应给请求方。典型的服务器有代理服务器,重定向服务器,登记服务器。Proxy Server代理服务器:是中间实体,即作为客户端也作为服务端,为客户端提供请求的转发服务。代理服务器首先提供的是路由服务。Redirect Server重定向服务器:产生3xx应答的UAS服务器,指示客户端连接别的URI。Registrar Server登记服务器:接收REGISTER请求的服务器。将请求的信息放到定位服务器中,以便定位服务器方便查找位置信息。2.3.2 常用术语Call呼叫:非正式的术语,指在端点之间的通讯行为,通常用于建立多媒体对话。Dialog对话:持续一段时间的两个UA之间的端到端的SIP连接。一个对话由SIP消息建立,例如对INVITE请求回应的2xx响应。用Call-id,local tag,remote tag来唯一标志一个对话。Session会话:一个多媒体会话是一个由多媒体发送方和接受方组成得集合,并且包括在发送方和接受方之间的数据流。一个多媒体会议是一个典型的多媒体会话。SDP中定义的会话可由一个或多个RTP(实时传输协议)组成。一个被叫方可被多次邀请,被不同的呼叫方邀请到同一个会话。一个会话可由SDP用户名,session id, 网络类型,地址类型和地址元素的连接组成。事务:客户端和服务端的事件,包括了从第一个由客户端发送到服务端的请求,到最后一个(非1xx)服务端向客户端发出得终结应答。如果请求是一个INVITE请求,并且终结应答是非2xx的应答,则事务还包括一个ACK给服务器做应答。给INVITE请求的2xx应答的ACK回应,是一个独立的事务。Message消息:SIP元素之间传送的协议数据。SIP消息可以是请求或者应答。Method方法:在服务器请求处理的主要功能。REGISTER用于登记联系信息,INVITE,ACK, CANCEL用于建立会话,BYE用于结束会话,OPTIONS用于查询服务器负载。Request请求:客户端发到服务端的SIP信息,用于执行特定得功能。INVITE、ACK、OPTION、BYE、CANCEL都是请求消息。Response应答:服务端发到客户端的SIP信息,用来标志从客户端发往服务端的请求处理得情况。Provisional Response临时应答:服务器用来标志正在处理的应答,本应答并不结束一个SIP事务。1xx应答就是临时的,其他应答标志着事务的结束。Final Response终结响应:终止SIP事务的应答。所有的2xx,3xx,4xx,5xx,6xx响应都是终结响应。2.3 SIP协议消息SIP消息采用文本方式编码,分两类:请求消息和应答消息。请求消息和响应消息的格式,一般由起始行、若干消息头和消息体构成。SIP一般消息 = 起始行*消息头CRLF(空行)消息体起始行 = 请求行/状态行(SIP请求消息起始行是请求行RL,响应消息起始行是状态行SL)每一个头域都由一个域名加上冒号(“:”)和域值组成。Field-name:Field-value2.3.1 请求消息Request请求消息:客户端发到服务端的SIP信息,用于执行特定得功能。INVITE、ACK、OPTION、BYE、CANCEL都是请求消息。INVITE:发起会话请求。用于邀请用户加入一个会话,会话描述消息体中。它在SIP报头中包含了呼叫方、Call-ID、被叫方、呼叫顺序编号和其他内容。也可以在呼叫过程中通过INVITE请求修改呼叫的操作状态(如让一方等待)。INVITE消息通常包含呼叫参数的SDP说明,如媒体类型和传输地址。当提供了SDP参数的多个选择时,选定的那个在应答消息中和200 OK一起返回。ACK:证实已收到对于INVITE请求的最终响应。该消息仅和INVITE消息配套使用,且是已被成功接受(编码200)的INVITE请求用ACK应答。ACK消息可能包含被叫方的媒体类型能力的SDP描述。如果成功应答中没有包含SDP说明,最初的INVITE消息中的SDP参数将被用于媒体连接。BYE:结束会话。发送端终止介质流,认为呼叫已经终止,而不对对端的应答做出确认。CANCEL:取消尚未完成的请求,对于已完成的请求(既已经收到最终响应的请求)没有影响。也就是说,如果SIP服务器已收到一个INVITE请求但仍没有返回一个最终应答,收到一个CANCEL后,将停止处理这个INVITE呼叫;如果已为INVITE呼叫返回了最终应答,则CANCEL请求对这个事件无效。CANCEL方法必须通过SIP报头中的Call-ID、Cseq、TO和FROM等值明确标示呼叫。REGISTER:客户端用REGISTER方法向SIP服务器注册TO报头域中列出的地址,通知当前所处位置。注册可由用户完成,也可由第三方完成,在FROM中进行指定。REGISTER消息也包含注册附属的时间。一个用户可同时在几个地点注册,通过这个方法告诉服务器,需要子啊所有注册地点查找该用户,直到用户被找到为止。OPTIONS:查询服务器的能力,包括服务器所支持的方法和SDP。如用户在某服务器上登记并处于在激活状态,该用户代理收到请求OPTIONS后就可发回响应消息,告知其能力集。被叫用户代理还可回复忙闲等状态,并应回复一个Allow头部字段,指示它支持的方法。2.3.2 应答消息Response应答消息:服务端发到客户端的SIP信息,用来标志从客户端发往服务端的请求处理得情况。应答消息由状态码来区分,状态码包含三位整数。第一位用于定义响应类型,其余两位用于进一步对响应码进行更加详细的说明。响应码主要有以下六种:1xx:临时应答请求已经接收,正在处理这个请求。2xx:成功处理请求已经成功接收,并且正确处理了这个请求。3xx:重定向需要附加的操作才能完成这个请求,本请求转发到其他的服务器上处理。4xx:客户端错误请求包含错误的格式或者不能在这个服务器上完成。5xx:服务器错误服务器不能正确的处理这个显然合法的请求。3 呼叫流程3.1 用户注册流程1. 用户首次试呼时,终端代理A 向代理服务器发送REGISTER 注册请求;2. 代理服务器通过后端认证/计费中心获知用户信息不在数据库中,便向终端代理回送401 Unauthorized 质询信息,其中包含安全认证所需的令牌;3. 终端代理提示用户输入其标识和密码后,根据安全认证令牌将其加密后,再次用REGISTER 消息报告给代理服务器;4. 代理服务器将REGISTER 消息中的用户信息解密,通过认证/计费中心验证其合法后,将该用户信息登记到数据库中,并向终端代理A 返回成功响应消息200 OK。3.2 用户呼叫流程根据上述的呼叫信息,对其进行详细的讲解。1. 主叫方“+861069690069”发起语音呼叫,主叫方地址:10,向代理服务器(10:)发送INVITE请求,需要和被叫方“69690067”建立呼叫。2. 代理服务器收到主叫方,发送的INVITE请求后,回复100 Trying。100 Trying表示代理服务器已经收到了INVITE请求,不需要UAC,即主叫方启用INVITE重发定时间,再次发送INVITE消息。3. 代理服务器需要主叫方的鉴权数据。4. 主叫方收到代理服务器的鉴权要求,回复100 Trying。5. 主叫方“+861069690069”再次发出INVITE请求,这次INVITE中携带了其鉴权信息。6. 代理服务器收到主叫方,发送的INVITE请求后,回复100 Trying。7. 代理服务器对收到的INVITE消息进行合法性检查,检查通过后,在注册服务器上查找被叫,是否存在这样的注册被叫号码,如果被叫不存在向主叫方发送404消息结束本次呼叫请求,否则,想被叫注册的地址发送呼叫请求INVITE消息。8. 被叫方收到INVITE请求消息后,回复100 Trying。并对INVITE消息的合法性检测。9. 被叫方对INVITE消息的合法性检测通过后,开始振铃,并且向代理服务器发送180,表示被叫方开始振铃,主叫方停回铃音或彩铃。10. 代理服务器收到180后,修改代理服务器的状态机状态,修改为振铃状态,并且发送振铃消息给主叫方,主叫方停回铃音。11. 被叫方摘机,向代理服务器发送200 OK消息,表示被叫方已经摘机。12. 代理服务器收到200 OK消息后修改状态机,并且发送200 OK消息到主叫,告诉主叫,被叫已经接通。13. 主叫收到200 OK后,打开媒体通道,建立通话,并且向代理服务器发送ACK消息,表示已经收到200 OK消息。14. 代理服务器收到ACK后,向被叫方发送200 OK对应的ACK消息,表示200 OK消息已经收到,并且主叫和被叫可以进行通话。15. 被叫发送收到ACK消息后,通话建立成功。16. 通过以上11个步骤,通话终于建立成功。17. 主叫方挂机,向代理服务器发送BYE消息。18. 代理服务器收到,BYE消息后,确认挂机后,向主叫方发送200 OK,表示主叫方已经成功挂机,并且向被叫方发送BYE消息,通知其挂机。19. 被叫方收到BYE消息后,确认挂机,并且回复200 OK,表示挂机操作已经成功完成。20. 经过以上步骤,通话到此结束。在该次呼叫中,(1)-(6)和(10)、(12)、(13)一起组成一个事务。终端A和代理服务器之间的建立起一个对话,代理服务器和终端B之间建立了一个对话。终端A发给代理服务器的INVITE请求如下:INVITEsip:69690067;user=phoneVia: SIP/2.0/UDP10:5060;branch=z9hG4bK-1c6-6f0cc-66d0e581SIP/2.0From:+861069690069;tag=8741b8-ac1014d2-13c4-1c6-10e9bfd8-1c6To:Call-ID:88CSeq: 1 INVITEMax-Forwards: 70Contact: Content-Type: application/SDPContent-Length: 236第一行INVITE是一个请求类型,后面跟的是请求的头域。VIA域包含了请求方+861069690069接收发送请求的服务器地址,branch是用来标志请求方+861069690069和服务器会话事务的分支参数。FROM域包含了请求方的显示姓名+861069690069和一个SIP或者SIP URI,这个URI标志请求的原始发起者。该域包含一个TAG参数,该参数是SIP电话在URI上增加的用于标志一个随机字串。 TO域包含了接收发的显示姓名69690067和一个SIP或者SIPS URI,请求会首先传输到这个URI中。Call_ID包含全局的唯一标识,来唯一标志一个呼叫。Cseq(Command Sequence)包含一个整数和一个请求名字,该值是顺序递增的。对话中每发起一个新的请求都会因此该值的顺序递增。Contact域包含一个SIP或者SIP URI来表示访问请求方+861069690069的直接方式,通常由用户名和一个主机的全名(FQDN)组成。当FQDN作为首选的时候,许多终端用户由于不会由名字登记而导致不能够访问请求方+861069690069的主机,所以IP地址是可选的。Content-type

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论