源于20世纪90年代中期美国哥伦比亚大学计算机系研究小组的研究。因特网工程任务组(Internet engineering task force,IETF)在1999年提议SIP成为一个标准,SIP由SIP基本协议和一系列针对移动业务的SIP扩展组成。SIP基础协议由IETF的征求意见稿(request for comments,RFC)3261定义,SIP扩展则由一系列RFC文档组成。SIP的底层传输可以采用无连接的传输协议,如用户数据报协议(user datagram protocol,UDP),也可以采用面向连接的传输协议,如传输控制协议(transmission control protocol,TCP)和流控制传输协议(stream control transmission protocol,SCTP)等,音视频媒体流一般由实时传输协议(real-time transport protocol,RTP)和实时传输控制协议(real-time transport control protocol,RTCP)负责实时可靠传送。SIP在电信和互联网领域得到了广泛应用,如电信网的软交换和IP多媒体子系统(IP multimedia subsystem,IMS),互联网的互联网电话(voice over internet protocol,VoIP)系统,作为系统设备之间以及系统设备与终端设备之间的信令控制协议。
会话起始协议
传输控制协议/互联网协议(transmission control protocol/internet protocol,TCP/IP)网络应用层的信令控制协议。是用于创建、修改和终止跟另一方或多方进行的会话。
- 英文名称
- session initiation protocol; SIP
- 所属学科
- 信息与通信工程
SIP借鉴了互联网的标准和协议设计思想,坚持简洁、开放和可扩展、可重用的原则,为组建多媒体通信网络、部署多媒体业务提供了一种可以将简单的应用结合到复杂的服务中去的方法。
SIP的主要功能包括:①名字翻译和用户定位。对呼叫路由信息进行地址解析,执行路由信息到定位信息的映射,确保呼叫(会话)的正确路由。②特征协商。允许与呼叫有关的呼叫双方在支持的特征上达成一致。③呼叫参与者管理。呼叫中参与者能够引入其他用户加入呼叫或取消到其他用户的连接。④呼叫特征改变。用户应该能够改变呼叫过程中的呼叫特征。
SIP的网络元素包括SIP用户代理(user agent,UA)和SIP网络服务器。根据终端在会话中角色的不同,SIP用户代理又可划分为客户机元素(用户代理客户机)和服务器元素(用户代理服务器)。客户机元素是会话的发起方,而服务器元素是会话的应答方。用户代理的常见形式包括固定SIP硬终端、个人计算机(personal computer,PC)软终端、手机客户端,另外还包括自动留言机等。
SIP网络服务器的主要功能是提供被叫方名字解析、用户定位和业务触发。根据被呼叫方用户SIP统一资源标识符(universal resource identifier,URI)形式的地址或与被呼叫方关联的E.164电话号码,呼叫者的SIP用户代理能够选择特定类型的SIP网络服务器来解析地址信息。SIP网络服务器存在4种不同的类型:代理服务器、定位服务器、重定向服务器和注册服务器。
①代理服务器。代理服务器用于接收请求,决定将请求传送到何处,然后将请求传送到下一个SIP服务器。在网络中可以有多跳。代理服务器分为有状态代理和无状态代理服务器两种。有状态和无状态代理服务器的区别是有状态代理服务器记录SIP请求和响应消息的上下文信息,无状态代理服务器仅完成消息的转发,不保存上下文信息。有状态代理服务器可以生成并行地尝试多个可能的用户位置的请求,并送回最好的响应。无状态代理服务器的效率要高于有状态代理服务器。
②定位服务器。用于获得被呼叫方位置的服务器。定位服务器存储并向用户返回可能的位置信息,注册服务器接收到位置信息时会立即将这些信息上载到定位服务器。定位服务器用来向客户提供代理服务器或重定向服务器的位置。
③重定向服务器。重定向服务器用于接收请求,但不是将这些请求直接传递给下一个服务器,而是向呼叫者发送响应以指示被呼叫用户的地址。这使得呼叫者可以直接联系在下一个服务器上被呼叫方的地址。
④注册服务器。用来接收寄存器请求消息的服务器,通常与代理服务器或重定向服务器在同一位置。注册服务器的作用是用来完成对用户代理服务器的注册,在SIP系统的网元中,所有用户代理服务器都要在某个登录服务器中注册,以便用户代理客户机通过服务器能找到它们。
SIP网络中各网元依赖于SIP信息的交互来进行通信。SIP存在两种类型的消息:请求(从客户机发到服务器)和响应(从服务器发到客户机)。SIP的请求和响应消息均由3部分组成,即起始行(start line)、消息头(header)和消息体(body)。起始行的内容根据SIP消息是请求还是响应而有所不同,若是请求消息,起始行又称为请求行;若是响应消息,起始行又称为状态行。请求消息中的起始行即请求行,用于区分不同类型的SIP请求,请求行包含3个元素:方法名、请求URI和协议版本。RFC 3261中定义的基本的SIP方法对参数的说明如表1所示。
方法(method) | 方法用于表示SIP请求的类型,SIP规范RFC 3261定义了6种方法:注册(register)用于登记联系信息,邀请(invite)、确认(ack)和取消(cancel)用于建立会话,再见(bye)用于结束会话,选择(options)用于查询服务器负载 |
请求URI(request-URI) | 请求URI是一个SIP或者SIPS URI,也可以是一个通用的URI(RFC 2396)。它标识了这个请求的目标用户或者服务的地址 |
协议版本(SIP-version) | 请求和应答消息都包含当前使用的SIP版本 |
如表2所示,响应消息通过状态行与请求消息进行区分,响应消息的状态行由3部分组成:协议版本、状态码和原因短语。SIP消息的消息头(header)包含与请求有关的信息。例如,请求的发起者、请求的接收者和呼叫标识等。消息头遵循在RFC 2822的通用消息头格式。不同的SIP请求和响应消息通常包含的消息头也具有差异。
协议版本(SIP-version) | 请求和应答消息都包含当前使用的SIP版本 |
状态码(status-code) | 状态码是一个3位的数字,用来标志处理请求的一个结果。状态码的第一个数字表示了应答的类型。状态码可以分为6类:①1xx。临时应答—请求已经接收,正在处理这个请求。②2xx。成功处理—请求已经成功接收,并且正确处理了这个请求。③3xx。重定向—还需要附加的操作才能完成这个请求,本请求转发到其他的服务器上处理。④4xx。客户端错误—请求包含错误的格式或者不能在这个服务器上完成。⑤5xx。服务器错误—服务器不能正确处理这个显然合法的请求。⑥6xx。全局错误—请求不能被任何服务器处理 |
原因短语(reason-phrase) | 原因短语是一个简短的状态码的说明 |
请求和响应消息都可以包含一个消息体。对消息体正文的解释需要结合请求消息的方法及响应消息的状态码。当SIP消息用来描述一个会话时,通常SIP消息体中会包含一个会话描述协议(session description protocol,SDP)消息。