SIP协议讲解

时间:2022-11-24 12:58:07 作者:壹号 字数:10856字

14

关于本章

SIP协议

内容 本章描述内容如下表所示。 标题 14.1 概述14.2 SIP消息类型14.3 SIP消息结构14.4 SIP-T简介本节简要介绍SIP协议的应用以及相关概念。 本节介绍SIP消息的类型。 本节介绍SIP消息的结构。 本节介绍SIP-T的应用。 14.5 SIP消息流程本节举例介绍SIP相关的消息流程。 本章将对SIP协议做一简要介绍,包括涉及的基本概念、消息结构以及简要的消息流程。

14.1 概述

SIP(Session Initiation Protocol)是一个应用层控制协议,用于创建、更改和终止会话。这里的会话类型包括多媒体会议、Internet电话等类似的应用。SIP是实现VOIP(Voice over IP)的关键协议之一。 SIP支持别名映射、重定向服务、ISDN和智能网业务。它支持个人移动(personal mobility),即终端用户能够在任何地方、任何时间请求和获得已订购的任何电信业务。总的来说,SIP能够支持下列五种多媒体通信的信令功能。

l用户定位:确定参加通信的终端用户的位置; l用户通信能力协商:确定通信的媒体类型和参数; l用户意愿交互:确定被叫是否乐意参加某个通信;

l建立呼叫:包括向被叫“振铃”,确定主叫和被叫的呼叫参数; l呼叫处理和控制:包括呼叫重定向、呼叫转移、终止呼叫等等。

SIP可以通过MCU(Multipoint Control Unit)、单播联网方式、或组播方式创建多方会话,支持PSTN和IP电话之间的网关功能。

SIP协议对低层协议作了最少的假设,低层协议可以为SIP协议提供可靠或非可靠传输,可以为分组或字节流业务。SIP可以使用UDP协议或TCP协议作为传输层协议,首选UDP协议。

14.1.1 相关概念

呼叫

一个呼叫是由一个会议中被同一个发起者邀请加入的所有成员组成的。一个SIP呼叫由Call-ID进行标识。 因此,如果一个用户是被不同的人邀请参加同一个多点会议,那么每个邀请都构成一个呼叫。点到点IP电话会话是一种最简单的会话,它映射为单一的SIP呼叫。

呼叫分支

一个呼叫分支(Call leg)由Call-ID、To、From三个参数共同决定。在同一个Call-ID中,从A到B的请求与从B到A的请求都属于同一个呼叫分支,呼叫分支也可以理解成一次呼叫中消息经过的路径。

事务

事务是发生在客户端和服务器之间的,包括从客户端发给服务器的第一个请求消息直到服务器端发给客户端的最终响应消息,这期间的所有的消息。

事务是由一个呼叫分支中的CSeq顺序号来标识的。但也有例外,比如一个ACK请求与对应的INVITE请求具有相同的CSeq,但它们却构成了各自的事务。 一个正常的呼叫一般包含三个事务。其中,呼叫启动包含两个操作请求:邀请(INVITE)和证实(ACK),前者需要回送响应,后者只是证实已收到最终响应,不需要回送响应。呼叫终结包含一个操作请求:再见(BYE)。

定位服务

SIP重定位服务器或代理服务器用来获得被叫位置的一种服务,可由定位服务器提供,但SIP协议不规定SIP服务器如何请求定位服务。

代理服务器

代理服务器(Proxy Server)是用于将SIP请求路由到目的地的中间路径。它既是客户端也是服务器。用户请求可以直接被代理服务器处理或被转发给别的代理服务器。代理服务器在转发之前要对消息进行解析,必要时还会改写请求。

重定向服务器

重定向服务器(Redirect server)将请求中的目的地址映射为零个或多个新的地址,然后返回给客户端,客户端直接再次向这些新的地址发起请求。重定向服务器并不接收或者拒绝呼叫,主要完成路由功能。

注册员

注册员(Registrar)为接收注册请求的服务器,通常与Proxy Server或者Redirect Server共存。注册员需要将注册请求中的地址映射关系保存到数据库中,供后续的相关呼叫过程使用,同时可以提供定位服务。

用户助理

…… 此处隐藏2367字 ……

lCall-ID

该字段用以唯一标识一次SIP呼叫。Call-ID的一般格式为:

Call-ID:local-id@host

其中,“host”为主机域名或IP地址,“local-id”是在“host”范围内唯一的标识符。Call-ID字符需区分大小写。 lFrom

所有请求和响应消息都必须包含此字段,以指示请求的发起者。服务器将此字段从请求消息复制到响应消息。该字段的一般格式为:

From: display-name ;tag=xxxx

其中,“display-name”为用户界面上显示的字符,如果系统不予显示,应置显示名为“Anonymous”。 “tag”出现在请求消息的From字段中,当两个共享同一SIP地址的用户实例用相同的Call-ID发起呼叫邀请时,就需用此标记予以区分。“tag”必须全局唯一。用户在整个呼叫期间应保持相同的Call-ID和“tag”值。