您的位置:首页 > 其它

sip理解

2007-09-17 16:38 253 查看
[align=left]功能[/align]
[align=left]sip协议的信令功能[/align]
[align=left]用户定位:确定通信中终端的位置;[/align]
[align=left]用户可用性:确定被叫方是否愿意参与通信;[/align]
[align=left]性能协商:确定通信中所用媒体及媒体参数;[/align]
[align=left]会话建立:呼叫双方会话参数的建立;[/align]
[align=left]会话管理:包括会话转移和中止,会话参数变更,调用新业务等内容.[/align]

要素
sip的物理要素 客户端 服务器
客户端
1 phones 可作为 uac 或者 uas
2 gateways 在sip终端 与其他类型终端之间实现 传输格式或通信规程的转换功能 可进行音频或视频编码的转换以及建立或拆除呼叫
用户代理 是呼叫的终端系统元素 包括
用户代理客户机 UAC (用户端用于创建请求 并使用客户端事务状态)
用户代理服务器 UAS (用户端用于接收请求并产生相应响应消息的逻辑实体)
客户机元素初始呼叫而服务器元素应答呼叫。这允许点到点的呼叫通过客户机-服务器协议完成。

服务器

处理与多个呼叫相关联信令的网络设备
由于呼叫者未必知道被呼叫方的IP地址或主机名,sip服务器的主要功能是提供名字解析和用户定位。可以获得的是email形式的地址或与被呼叫方关联的电话号码。使用该信息,呼叫者的用户代理能够确定特定服务器来解析地址信息--这可能涉及网络中很多服务器
三种服务器形式
有状态代理服务器 无状态代理服务器 重定向服务器
sip代理服务器接收请求,决定将这些请求传送到何处,并且将它们传送到下一服务器(使用下一跳 路由原理)。在网络中可以有多跳。
有状态和无状态代理服务器的区别是有状态代理服务器记住它接收的入请求,以及回送的响应和它转送的出请求。无状态代理服务器一旦转送请求后就忘记所有的信息。这允许有状态代理服务器生成请求以并行地尝试多个可能的用户位置并且送回最好的响应。无状态代理服务器可能是最快的,并且是sip结构的骨干。有状态代理服务器可能是离用户代理最近的本地设备,它控制用户域并且是应用服务的主要平台。
重定向服务器接收请求,但不是将这些请求传递给下一服务器而是向呼叫者发送响应以指示被呼叫用户的地址。这使得呼叫者可以直接联系在下一服务器上被呼叫方的地址。

注册服务器接收用户端的注册请求,完成用户地址的注册。
2 四层
sip的协议构架 四层 transaction user / transaction layer / transport layer / syntax and encoding
l1 规定使用扩展的巴克斯诺尔范式语法进行编码
l2 定义了客户端如何发送请求消息和接受相应消息 以及服务器如何接受请求发送相应消息 所有的sip要素都包含传送层
l3 处理应用层的重发和超时 以及匹配请求的响应 包含一个客户端元素client transaction 和一个服务器元素 server transaction 他们都可以用一个有效状态机来表示
l4 除了无状态代理服务器,每个SIP实体都是一个事务用户(TU)。当TU发送一个请求时,它首先创建一个客户端事务实例(client transaction instance),再将请求连同目的IP地址,端口号和所使用的底层传输协议传递给该实例。此外,TU可通过CANCEL请求来取消一个事务。

消息
sip消息采用utf-8 字符集(rfc 2279) 采用rfc 2822中的基本格式 分为两类
请求消息客户端为了激活特定操作而发给服务器的sip消息
响应消息 用于对请求消息进行响应知识呼叫的成功或者失败状态
消息格式
generic-message = start-line

*message-header

CRLF

[ message-body ]

1 start-line
其中 start-line = request-line / status-line (请求/响应)
Request-Line = Method SP Request-URI SP SIP-Version CRLF
Method rfc3261种定义了6种方法 sip扩展中还定义了其他方法
INVITE 发起建立会话请求 邀请用户参与一个会话 其消息体内包含了会话描述符 用于描述该会话的相关信息
ACK 用于最终响应信息的确认
CANCEL用于取消一个尚未完成的请求 对已发出最终响应的请求没有作用 不能用于结束一个正在进行的会话
BYE 用于结束一个正在进行的会话
REGISTER 用户发出该请求向注册服务器注册自己目前的位置
OPTIONS 用于查询服务器的性能信息
Request-URI 是一个sip-uri 或者sips-uri 它标示了这个请求所要到达的用户或服务
SIP-Version 所使用的sip的版本号
Status-Line = SIP-Version SP Status-Code SP Reason-Phrase CRLF
Status-Code是一个三位数的整数值,用于表示处理请求的结果目前定义了六类响应消息
1** ---- 临时响应 表示请求已收到 正在对其进行处理
2** ---- 成功响应 表示请求已经被成功接受和处理了
3** ---- 重定向响应 表示需要采取进一步的动作以完成该请求
4** ---- 客户端出错响应 表示该请求包含语法错误 或服务器不能完成该请求
5** ---- 服务器错误响应 表示服务器不能完成对正确请求的处理
6** ---- 全局错误响应 表示任何服务器都不能处理该请求
Reason-Phase 是对status-code的简短文字说明
2 *message-header
rfc 3261 – 7.3
Header Fields
Header Field Format
Header Field Classification
Compact Form
3 [ message-body ]
rfc 3261 – 7.4
bodies
Message Body Type
Message Body Length
4 Framing SIP Messages
sip可以建立在udp等不可靠交付传输协议上 每一个数据报携带一个独立的请求或相应报文(rfc3261-section18)
sip 建立在面向流传输的协议之上时必须忽略start-line之前的所有crlf 面向流传输时 Content-Length header field 用于定位流中的每一个sip消息
sip过程
SIP协议支持3种呼叫方式:
用户代理客户机(UAC)向对方用户代理服务器(UAS)直接呼叫;
由代理服务器代表用户代理向客户服务器发起代理呼叫;
由用户代理客户机在重定向服务器的辅助下进行重定向呼叫

系统基本工作流程
(1)用户注册
用户开机上线后,通过用户代理客户机自动向其所在域的服务器端发送注册信息;该服务器的SIP注册服务模块接收注册信息后,要先对客户端进行身份验证,确认其合法后再对该用户的状态信息,IP地址信息等进行更新.
(2)会话建立
在本系统设计方案中采用代理呼叫和重定向呼叫相结合的方式进行会话建立.即同一域内客户之间采用代理呼叫方式,域之间采用重定向呼叫方式.
假设1域的用户A准备要与用户B建立一次通话时,A首先通过其用户代理客户机将呼叫请求传至其所在域的代理服务器1,服务器1首先判断B是否也属于该服务器所管理的域.
① 如果B和A同属1域,则通过该域服务器进一步查找B的有关信息,进行精确定位,服务器1判定B是否为可接通状态,如可以则将A的呼叫请求直接转发给B,否则向A返回拒绝信息.
② 如果B不在1域,而在其它域(如2域),则代理服务器1将请求信息转发至2域的重定向服务器2,重定向服务器2对B进行精确定位,并判定B是否为可接通状态,如可接通则将B的精确地址信息传送给代理服务器1,代理服务器1将A的呼叫请求传送给B;否则向代理服务器1返回不可接通信息,代理服务器1再向A返回拒绝信息.
(3)通话过程
如果A和B之间的通信链路建立成功,则他们之间直接进行通信直至会话结束,通话结束时向代理服务器发送会话结束请求.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: