1. SIP
1.1. 概况
1.1.1. SIP系统的基本组成
(1)用户代理 User Agent
在SIP中,用户代理(UA)是端点实体。用户代理通过交换请求和响应初始和终止会话。UA作为一应用程序,它包含用户代理客户机和用户代理服务器,
如下:
· 用户代理客户机(UAC):客户机应用程序,它初始SIP请求。
· 用户代理服务器(UAS):服务器应用程序,当接收到SIP请求时它联系用户并且代表用户返回一响应。
在SIP网络中具有UA功能的设备是:工作站,IP电话,电话网关,呼叫代理,自动应答服务。
(2)代理服务器 Proxy Server
代理服务器是同时作为服务器和客户机的中间实体,其目的是代表其他客户机生成请求。具有解析名字的能力,能够代理前面的用户向下一跳服务器发出呼叫请求。然后服务器决定下一跳的地址,这有点类似另一个动态路由协议BGP (Border Gateway Protocol).
(3)重定向服务器 Redirect Server
在获得了下一跳的地址后,立刻告诉前面的用户,让该用户直接向下一跳地址发出请求而自己则退出对这个呼叫的控制,访问这样的服务器就像访问一个数据库一样。
(4)注册服务器 Register Server
用来完成对UAS的登录,在SIP系统的网元中,所有UAS都要在某个登录服务器中登录,以便UAC通过服务器能找到它们,只接收UAC发送的登记请求。注册服务器通常和代理服务器或重定向服务器处于同一物理实体中。
注册服务器是接受REGISTER请求的服务器,其目的是根据用户在请求中规定的联系信息更新位置数据库。
SIP通过E-mail形式的地址来标明用户地址。每一用户通过一等级化的URL来标识,它通过诸如用户电话号码或主机名等元素来构造(例如:SIP:user@company.com)。因为它与E-mail地址的相似性,SIP URLs容易与用户的E-mail地址关联。
(5)定位服务器 Location Server
它可以把各个登录服务器的内容汇总起来,便于SIP服务器查找。它可以作为一个全局的数据库,作用就像DNS,它的访问和接入可以是非SIP的,如Finger或LDAP。定位服务器可以在物理上与SIP网络服务器(代理服务器或重定向服务器)处于同一位置,也可以是单独配置的。
1.1.2. 请求方法及其响应
INVITE | 发起呼叫 | 1XX 进展指示 |
ACK | 响应应答,确认INVITE的最终应答。 | 2XX 成功 |
REGISTER | 用户登记,注册位置服务。 | 3XX 重定向 |
OPTIONS | 能力询问,查询另一方能力。 该消息可以作为心跳消息,用来确认对端实体是否存活,两个实体之间是否可达。 | 4XX 客户端错误 |
CANCEL | 取消呼叫,撤消搜索和振铃。 | 5XX 服务器错误 |
BYE | 终止呼叫 | 6XX 全局错误 |
其他请求消息:
INFO: 发送会话中信息而不改变会话状态。
PRACK: 与ACK作用相同,但是用于临时响应。
SUBSCRIBE:该方法用来向远端端点预订其状态变化的通知。
NOTIFY: 该方法发送消息以通知预订者它所预定的状态的变化。
UPDATE: 允许客户更新一个会话的参数而不影响该会话的当前状态。
MESSAGE: 通过在其请求体中承载即时消息内容实现即时消息。
REFER: 其功能是指示接受方通过使用在请求中提供的联系地址信息联系第三方。
1.2. 格式
1.2.1. SIP格式
每条SIP消息由以下三部分组成:
(1)起始行(Start Line):每个SIP消息由起始行开始。起始行传达消息类型(在请求中是方法类型,在响应中是响应代码)与协议版本。起始行可以是一请求行(请求)或状态行(响应)。
(2)SIP头:用来传递消息属性和修改消息意义。它们在语法和语义上与HTTP头域相同(实际上有些头就是借自HTTP),并且总是保持格式:<名字>:<值>。
(3)消息体:用于描述被初始的会话(例如,在多媒体会话中包括音频和视频编码类型,采样率等)。消息体能够显示在请求与响应中。SIP清晰区别了在SIP起始行和头中传递的信令信息与在SIP范围之外的会话描述信息。可能的体类型就包括本文将要描述的SDP会话描述协议。