sip协议原理分析及总结文档格式.docx
《sip协议原理分析及总结文档格式.docx》由会员分享,可在线阅读,更多相关《sip协议原理分析及总结文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
◆会话管理:
包括呼叫转移和呼叫终止;
SIP协议的结构
SIP是一个分层的协议,也就是说SIP协议由一组相当无关的处理层次组成,
这些层次之间只有松散的关系。
SIP最底层的是它的语法和编码层。
编码方式是采用扩展的Backus-Naur
Formgrammar(BNF范式)。
第二层是传输层。
它定义了一个客户端发送请求和接收应答的方式,以及一
个服务器接收请求和发送应答的方式。
所有的SIP要素都包含一个通讯层。
第三层是事务层。
事务是SIP的基本组成部分。
一个事务是UAC向UAS发送的一个请求以及UAS向UAC发送的一系列应答。
事务层处理应用服务层的重发,匹配请求的应答,以及应用服务层的超时。
任何一个用户代理客户端完成的事情都是由一组事务构成的。
用户代理与有状态的代理服务器都包含一个事务层,无状态的代理服务器并不包含事务层。
事务层包含一个客户元素(可以认为是一个客户事务)和一个服务器元素(可以认为是一个服务器事务),他们都可以用一个有限状态机来处理特定的请求。
在事务层之上是事务用户(TransactionUserTU)。
每一个SIP实体,除了
无状态代理,都是一个事务用户。
当一个TU发出一个请求,它首先创建一个客户事务实例并将目标IP地址、端口号、以及发送请求的设备信息一起发送。
事务用户可以创建客户事务,也可以取消客户事务。
当客户取消一个事务,它请求服务器终止正在处理的事务,并且回滚状态到该事务开始前的状态,并且产生指定的该事务的错误报告。
这是由CANCEL请求完成的,这个请求有自己的事务,并且包含一个被取消的事务。
2、SIP协议主要概念模型
2.1实体模型概述
SIP协议模型定义了UserAgent(用户代理)和Server(服务器)等两类主要实体。
SIP协议把UserAgent(即UA)分为两个部分:
UserAgentClient和UserAgentServer。
呼叫方(称UserAgentClient)发出邀请(或呼叫),被叫方(称UserAgentServer)接受或拒绝邀请(或呼叫)。
分组终端设备、媒体网关/媒体设备通常是包括UserAgentClient和UserAgentServer在内的UserAgent。
另外,下面所说的ProxyServer也要实现UserAgent功能。
SIP协议定义了ProxyServer、RedirectServer和RegisterServer等三类主要Server。
RegisterServer:
主要用于登记分组终端的当前位置和位置服务的原始数据。
ProxyServer:
作为UserAgentClient和UserAgentServer间的中间媒体,它转发UserAgentClient来的的邀请,在转发之前,根据被叫标识请求位置服务器获得被叫的可能位置,然后分别向它们发出邀请;
RedirectServer:
接受UserAgentClient来的邀请,根据被叫标识请求位置服务器获得被叫的可能位置,把这些信息返回给邀请的发起者(UserAgentClient),和ProxyServer的不同之处就在于它不转发邀请,邀请由主叫终端自己完成。
Sip协议基本网络模型,如下图所示:
2.2SIP协议相关概念
呼叫(Call):
一个呼叫是由一个会议中被同一个发起者邀请加入的所有成员组成的。
一个SIP呼叫用全局唯一呼叫标识符(CALL_ID)来识别。
因此,如果一个用户被不同的人邀请参加同一个多点会议,每个邀请都有一个唯一的呼叫。
一个点对点因特网电话交谈也被认为是一个SIP呼叫。
在一个基于多点控制单元(MCU)的电话交谈节目中,每个参与者都用一个独立的呼叫与MCU相连。
呼叫支路(Callleg):
一个呼叫支路由Call-ID、To以及From之中的addr-spec和tag共同标识。
只有addr-spec中的user和hostport部分有意义。
在同一个Call-ID中,从A到B的请求与从B到A的请求都属于同一个呼叫支路。
呼叫支路也可以说是一次呼叫里消息经过的路径。
会议(Conference):
一个多媒体会话,由公共的会话描述来标识。
一个会议可由零个或多个成员组成,可以是多点会议,全互连会议,点对点会议,或者是它们的组合。
可以用任意数目的呼叫来建立一个会议。
发起者、主叫(Initiator,Caller):
发起会议邀请的一方。
注意,发起者不一定是会议的建立者。
被邀请者、被叫(Invitee,Callee):
被主叫方邀请参加会话的一方。
邀请(Invitation):
要求用户加入会话的请求。
一个成功的SIP邀请包括2个事务:
一个INVITE请求,后面跟一个ACK请求。
同构请求/响应(Isomorphicrequestorresponse):
两个含有相同Call-ID、To、From和CSeq头域的请求/响应。
此外,同构请求还必须含有相同的Rquest-URI。
并行查询(Parallelsearch):
在一个并行查询中,代理收到请求后向可能的被叫用户发出多个请求。
并行查询在发出请求时并不等待以前所发请求的响应。
最终响应(Finalresponse):
用于结束SIP事务的响应,与临时响应相对。
所有的2XX,3XX,4XX,5XX和6XX响应都是最终响应。
临时响应(Provisionalresponse):
服务器用来表示工作进展,并不结束SIP事务的一种响应。
编码为1XX的响应是临时响应,其他响应都是最终响应。
会话(Session):
根据SDP(会话描述协议)规范的定义:
“多媒体会话是由多媒体发送者,接收者以及从发送者到接收者的数据流组成的集合。
SIPTransaction(SIP事务):
一个SIP事务是发生在客户和服务器之间的,包括从客户向服务器发出的第一个请求直到服务器发给客户一个最终响应这期间所有的消息。
事务是由一个呼叫支路(Callleg)中的Cseq顺序号来标识的。
一个ACK请求与对应的INVITE请求拥有相同的CSeq,构成自己的事务;
B2BUA(背靠背用户代理):
B2BUA是接收请求并作为用户代理服务器的一个逻辑实体。
为了确定应该如何响应请求,它作为一个用户代理客户(UAC)发出请求。
与代理服务器不同的是它维护对话状态并必须参与所有在已建立的对话上所发的请求。
由于它是一个串联UAC和UAS,对于它的行为无须作显式定义。
Address-of-Record(记录地址):
一个address-of-record(AOR)是一个SIP或者SIPSURI它指向了一个具有定位服务的主机,这个主机可以把URI映射成为用户真正物理位置的URI。
通常情况下,定位服务器是通过登记服务来建立的。
一个AOR经常被认为是一个用户的”公共地址”。
Message(消息):
SIP元素之间传送的协议数据就是消息。
SIP消息既可以是请求也可以是应答。
Method(方法):
方法是在服务器请求处理的主要功能。
方法是请求消息自身携带的。
典型的方法就是INVITE和BYE。
Request:
(请求):
一个由客户端发到服务端的SIP信息,用于执行特定的功能。
Response(应答):
一个由服务端发到客户端的SIP信息。
用来标志从客户端发往服务端的请求处理的情况。
Ringback(回铃音):
回铃音是一个信号音。
是给呼叫方的一个信号表示被叫方正在振铃(Ringing)。
RouteSet(路由集):
路由集合是一个顺序的SIP或者SIPSURI。
这些URI描述了传递一个请求所必须经历的代理列表。
一个路由集可以是自适应的,因为包头中包含了Record-Route(记录路由),也可以是依赖配置得到的。
3、SIP协议主要消息
3.1SIP消息分类
SIP协议是以层协议的形式组成的,就是说它的行为是以一套相对独立的处理阶段来描述的,每个阶段之间的关系不是很密切。
SIP协议将Server和UserAgent之间的通讯的消息分为两类:
请求消息和响应消息。
请求消息:
客户端为了激活特定操作而发给服务器的SIP消息,包括INVITE、ACK、BYE、CANCEL、OPTION和UPDATE消息。
响应消息:
服务器向客户反馈对应请求的处理结果的SIP消息,包括1xx、2xx、3xx、4xx、5xx、6xx响应
3.2SIP消息结构
请求消息和响应消息都包括SIP消息头字段和SIP消息体字段。
SIP消息头主要用来指明本消息是有由谁发起和由谁接受,经过多少跳转等基本信息;
SIP消息体主要用来描述本次会话具体实现方式。
3.2.1SIP消息头类型
在SIP消息中,有四种类型的头字段:
通用头字段
请求头字段
响应头请求
实体头字段
SIP消息头的通用结构
<
头字段的名字>
:
字段值>
层次和在消息头中所有行的层次相同
对于客户机/服务器都不能理解的头字段仅仅是被忽略,而不移除.
常见的头字段如下表
GeneralHeader
EntityHeader
RequestHeader
ResponseHeader
Accept
Content-Encoding
Authorization
Allow
Accept-Encoding
Content-Length
Contact
Proxy-Authenticate
CallID
Conten-Type
Hide
Retry-After
Max-Forwards
Server
CommandSequence
Organization
Unsupported
Encryption
Proxy-Authorization
WWW-Authenticate
Expires
Proxy-Require
From
Route
Record-Route
Require
Timestamp
Response-Key
To
Subject
Via
UserAgents
Date
Priority
Waming
一些重要的通用头
◆Call-Id:
统一独特的呼叫标识
◆Cseq:
请求命令顺序号
◆Via:
用于记录一个请求传送的路径
◆From:
存在于每个SIP消息中,包含请求发起者的显示名和地址。
SIP响应的From域是请求中From域的拷贝。
◆To:
存在于每个SIP消息中,表示一个请求的预期目的地。
SIP响应中的To域是请求中To域的拷贝。
◆Max