SIP协议
SIP(Session Initiation Protocol)会话发起协议
SIP协议是由IETF提出的IP电话信令协议。基于文本的应用层控制协议,独立于底层协议,用于建立、修改和终止IP网上的双方或多方多媒体会话。(多媒体会话可以是多媒体会议、远程教学、因特网电话等各种应用)
SIP协议结构
SIP 协议是 IETF 多媒体数据和控制体系结构的一部分,与其它协议相互合作。
RSVP( Resource ReServation Protocol )用于预约网络资源,
RTP( Real-time Transmit Protocol )用于传输实时数据并提供服务质量( QoS )反馈,
RTSP ( Real-Time Stream Protocol )用于控制实时媒体流的传输,
SAP( Session Announcement Protocol )用于通过组播发布多媒体会话,
SDP( Session Description Protocol )用于描述多媒体会话。
但是 SIP 协议的功能和实施并不依赖这些协议。
SIP协议的特点
- 应用层协议, 独立于较低层次的传输协议
- 基于文本的消息编码 使用UTF-8字符集,易于实现、调试方 便, 便于跟踪和手工操作具有多个层次的可实现性, 最小的实现非常简单。最完全的 实现相对复杂, 但能够完成非常多的功能通过代理、重定向功能支持用户的移动性。
- 易实现,易扩展
VOIP
普通电话经电话网连到IP电话网关, 用电话号码呼叫
- 传统电话网将IP网络视为其业务承载网
- 发端IP网关鉴别主叫用户, 将被叫电话号码翻译成网关IP地址, 将呼叫 连接到最靠近被叫的网关, 完成语音编码和打包
- 收端IP网关完成拆包、解码及反向地址翻译, 将呼叫连到被叫终端用户
- 若主叫和被叫在同一个域内,可以利用域内代理服务器完成呼叫,若不在同一个服务器,则需要重定向服务和位置服务器的参与
SIP系统的组成
- 用户代理(UA-终端用户设备):用于创建和管理SIP会话的移动电话、多媒体手持设备。用户代理客户机发出消息,代理服务对消息进行响应。
- 注册服务器:包含域中所有用户代理的位置的数据库。在SIP通信中, 这些服务器会检索参与方的IP地址和其他相关信息,并将其发送到 SIP 代理服务器。
- 代理服务器:接受 SIP UA 的会话请求并查询 SIP 注册服务器, 获取收件方 UA 的地址信息。然后, 将会话邀请转发给收件方 UA(如果它位于同一域 中)或代理服务器(如果 UA 位于另一域中)。
- 重定向服务: 允许 SIP代理服务器将 SIP 会话邀请信息定向到外部域。SIP 重定向服务器可以与SIP 注册服务器和 SIP 代理服务器同在一个硬件上。
- 位置服务器:配合代理服务器和重定向服务器提供可能的被叫用户的地址
SIP用户代理(UA): 包括逻辑实体 - User Agent Client (UAC), 用于发起一个呼叫请求
- User Agent Server (UAS), 用于对呼叫请求进行回应
- UA=UAC+UAS 一个UA, 既可以作为UAC发起呼叫, 也可以作为UAS接收呼叫, UAC和UAS是逻辑上的不同角色, 不是独立的物理实体
SIP网络服务器
- 注册服务器:接收用户的注册请求, 记录终端的IP地址, 记录用户的当前位置信息, 是实现号码移动性的基础
- ProxyServer 代理服务器:完成路由功能,将SIP用户请求发送到下一跳代理或用户
- RedirectServer 重定向服务器:提供地址解析服务, 类似于DNS
- LocationServer 位置服务器:配合代理服务器和重定向服务器提供可能的被叫用户的地址(或位置)
SIP通话流程
- 主叫发送呼叫请求,主叫所在的sip代理服务器中会识别主叫和被叫不在同一个域内
- sip代理服务会在sip重定向服务中查询被叫ip地址,sip重定向服务器可以利用sip位置服务器查询被叫ip地址
- sip重定向服务器将信息返回给sip代理服务器,提供被叫的ip地址
- 当主叫sip代理服务器收到sip重定向服务器发送来的ip地址时,将会话的邀请信息转发给被叫所在域的代理服务器
- 被叫所在域的代理服务器会向被叫发送会话邀请的信息,
- 被叫获得会话邀请信息时,经过分析接受呼叫,被叫向域中的代理服务器发送响应信息
- 被叫所在的代理服务器进而转发信息到主叫所在域的代理服务器
- 主叫所在的代理服务器在转发信息给主叫
- 然后主叫和被叫在协商好的通道上进行话音传输
VOIP通信需要的相关的协议
- 控制通道的建立
sip是用户代理和注册服务器之间执行的协议
端和端之间呼叫的建立和拆除 - 媒体通道的建立
sdp协议,会话描述协议,控制媒体会话的信令,不控制媒体,只是建立通道拆除通道,协商媒体类型,带宽需求,
控制通道,网络管理点, - 通话
实时协议rtp和实时传输控制协议rtcp
SIP的消息格式
请求UAC到UAS:INVITE、ACK、OPTIONS、BYE、 CANCEL、 REGISTER等。
响应UAS到UAC: 1XX、2XX、3XX、4XX、5XX、6XX等。
消息格式:
开始行 (请求行|状态行)
消息头域(主被叫号码信息)
空行 (CRLF)
[消息体] 消息体包含媒体信息, 采用SDP协议描述
SDP的消息是在传输的过程中都是夹带在sip消息中的
请求消息
- 呼叫控制请求
INVITE 发起呼叫, 并对会话进行描述
ACK 主叫确认收到被叫发送的对INVITE的确认响应
BYE 释放连接, 可以由主叫方发出,也可以由被叫方发出
CANCEL 主叫取消呼叫,在连接建立起来之前发送 - 注册请求
REGISTER 在注册服务器上注册用户代理 - 能力查询请求
OPTIONS 查询服务器的能力、
响应消息
- 1XX:通知服务器或代理正在执行处理, 终端应该等待响应
100:Trying
180:Ringing - 2XX:请求成功
200:OK - 3XX:重定向响应, 终端应向新地址发起新请求
- 4XX:请求失败, 终端的请求被拒绝
- 5XX:服务器内部错误造成请求不能被响应
- 6XX : 全局错误, 所有末来的对该用户的请求都将失败
AOR与Contact地址
AOR的全称是Address-of-Record
AOR地址格式为SIP:user@domain
Contact地址格式为Contact: <sip:22018@10.8.22.4:5060>
AOR就是一个带域名的用户帐户,相当于一个用户的公网地址,它具有唯一性,表示用户本身的身份
Contact的具体的联系方式是这个终端的IP地址
一个AOR地址可以对应多个Contanct地址(一个SIP终端可以支持多种形式的物理终端)
SIP消息过程
- A向SIP server1发送INVITE消息,INVITE消息中会夹带着SDP消息
- SIP server1向SIP server2转发消息,
- SIP server2向B继续转发消息
- B会查看SDP消息,如果可以支持,则响应200,经过一系列转发到A
- A在响应ACK消息进行证实,确认媒体通道的建立
- 建立好之后,就可以在协商好的媒体通道上进行话音通信
消息体
- 消息体主要是SDP会话描述协议
- 用于描述这次会话的媒体信息
- 话音流使用RTP/RTCP传输