SIP协议原理
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SIP协议原理
ISSUE 2.0
固网产品课程开发室
学习目标
了解SIP协议的作用 掌握SIP命令 掌握SIP协议的消息交互过程
内容
第一节 概述 第二节 协议消息
第三节 呼叫流程
SIP协议概念
会话启动协议SIP(Session Initiation Protocol)是一个在IP网 络上进行多媒体通信的应用层控制协议,它被用来创建、修改、 和终结一个或多个参加者参加的会话进程。
Cseq Cseq称之为命令序号。客户在每个请求中应加入此字段,它由命令名称和一个十 进制序号组成,该序号由请求客户选定,在 Call-ID范围内唯一确定。序号初值 可为任意值,其后具有相同 Call-ID值,但不同命令名称、消息体的请求,其 Cseq序号应加1。重发请求的序号保持不变。服务器将请求中的 Cseq值复制到响 应消息中,用于将请求和其触发的响应相关联。 ACK和CANCEL请求的Cseq值(十进制序号)和对应的 INVITE 请求相同,BYE 请求的Cseq序号应大于INVITE 请求。服务器必须记忆相同 Call-ID的INVITE 请 求的最高序号,收到序号低于此值的INVITE 请求应在给出响应后予以丢弃。 由代理服务器并行分发的请求,其Cseq 值相同。严格来说,Cseq 对于任何可由 BYE或CANCEL请求取消的请求以及客户可连续发送多个具有相同Call-ID请求的 情况都是需要的,其作用是判定响应和请求的对应关系。
事务 SIP是一个客户/服务器协议。客户和服务器之间的操作从第 1个请求至最终响应为止的所有消息构成一个SIP事务。一个SIP 事务由客户和服务器之间的一个单个请求和这个请求的所有应 答组成,这些应答包括了零个或者多个临时应答以及一个或者 多个终结应答。
(RINGING 是 1xx 响应, OK是 2xx 响应)
Call-ID:该字段用以唯一标识一个特定的邀请或标识某一客户的所有登 记。 需要注意的是,一个多媒体会议可能会有多个呼叫,每个呼叫有其 自己的Call-ID。例如,某用户可数次邀请某人参加同一历时很长的会议。 用户也可能会收到数个参加同一会议或呼叫的邀请,其Call-ID各不相同。 用户可以利用会话描述中的标识,例如SDP中的 o(源)字段的会话标识 和版本号判定这些邀请的重复性。 Call-ID的一般格式为: Call-ID:本地标识@主机
消息头
空格
SDP
消息体
SIP地址 SIP URL 的一般结构为: SIP:用户名@主机:端口 “SIP”表示需采用 SIP 协议和所指示的端系统通信。为了与Internet 地址形式相区别,在写SIP地址时一定要加上“sip:”,即sip: user@host。 “用户名”可以由任意字符组成,一般可取类似与 E-mail 用户名形 式,也可以是电话号码。 “主机”可为主机域名或IPv4地址。 “端口”指示请求消息送往的端口号,其缺省值为5060,即公开的 SIP 端口号。 参数 如果把地址理解为可以与目的地取得联系的必要信息的话,那么 SIP协议中还有其他一些与地址有关的重要参数。比如: branch(分支)参数; tag参数等 参数可以出现在各种头域中 举例: From: sip:2125551212@ To: Bob sip:bob@>; tag=376364382
SIP请求消息结构
命令名称 对端URI Call-ID:值 版本
起始行
Form:值
To :值 Cseq :值
消息头
Via :值
Contact :值 Max-Forwards : 值
SIP请求消息结构 (续)
Allow :值 Content-Length :值 Supported :值 User-Agent :值 Content-Type :值 ……
Via Via字段用以指示请求历经的路径。它可以防止请求消息传送产生环路,并确保 响应和请求消息选择同样的路径,以保证通过防火墙或满足其它特定的选路要求。 发起请求的客户必须将其自身的主机名或网络地址插入请求的Via 字段,如果未 采用缺省端口号,还需插入此端口号。在请求前传过程中,每个代理服务器必须 将其自身地址作为一个新的Via 字段加在已有的Via 字段之前。如果代理服务器 收到一个请求,发现其自身地址位于Via头部中,则必须回送响应“检测到环 路”。 当请求消息通过网络地址翻译点(如防火墙)时,请求的源地址和端口 号可能被改变,此时Via 字段就不能成为响应消息选路的依据。为了防止这一点, 代理服务器应校验顶端Via 字段,如果发现其值和代理服务器检测到的前站地址 不符,则应在该Via 字段中加入“receive”参数,如此修改后的字段称为“接收方 标记Via 头部字段”。例如: Via:SIP/2.0/UDP :5060 Via:SIP/2.0/UDP 10.0.0.1:5060;received=191.169.12.30 由点10.0.0.1 发出的请求消息路径外部地址为191.169.12.30的网络地址翻译点后, 到达代理服务器。后者注意到前站发送地址和 Via字 段地址不符,就把实际发送地址作为接收方标记加在顶端Via 字段的末尾,然后 再将代理自己的地址作为新加的Via字段置于最上面。 若代理服务器向多播地址发送请求,则必须在其Via 头部字段中加入“多播地址 (maddr) ”参数,此参数指明该多播地址。 代理服务器或UAC收到Via头部字段时的处理规则是: 规则1:第1 个Via头部字段应该指示本代理服务器或UAC。如果不是,丢弃该消 息,否则,删除该Via字段。
注意:UAC和UAS的划分是针对一个事务而言的。
注册服务器(Registrar) SIP 注册服务器是包含域中所有用户代理的位置的数据库。 在 SIP 通信中,这些服务器会检索参与方的 IP 地址和其他 相关信息,并将其发送到 SIP 代理服务器。
重定向服务器(Redirect server)
ACK BYE CANCEL REGISTER OPTIONS INFO
响应消息
序号
1xx 2xx 3xx 4xx 5xx 6xx
状态码
信息响应(呼叫 进展响应) 成功响应 重定向响应 客户出错 服务器出错 全局故障
消息功能
表示已经接收到请求消息,正在对其进行处理 表示请求已经被成功接受、处理 表示需要采取进一步动作,以完成该请求 表示请求消息中包含语法错误或者SIP服务器 不能完成对该请求消息的处理 表示SIP服务器故障不能完成对正确消息的处 理 表示请求不能在任何SIP服务器上实现
To: 该字段指明请求的接收者,其格式和 From相同,仅第一个关键词代 之以 To。所有请求和响应消息必须包含此字段。 字段中的标记参数 可用于区分由同一SIP URL 标识的不同的用户实例。由于代理服务器 可以并行分发多个请求,同一请求可能到达用户的不同实例(如住 宅电话等)。由于每个实例都可能响应,因此需用标记来区分来自 不同实例的响应。需要注意的是,To字段中的标记是由每个实例至 于响应消息中的。
SIP 协议可用于发起会话,也可以用于邀请成员加入已经用其 它方式建立的会话。
SIP协议透明地支持名字映射和重定向服务,便于实现ISDN、 智能网以及个人移动业务。
SIP协议的通用性
会话可以是双方会话,也可以是多方会话。 会话所采用媒体形式不受设备的限制,而受SIP协议的限制, SIP协议只是在会话发起过程中,对通信各方的性能进行勾通 而已。
用户通信能力协商:确定通信的媒体类型和参数;
用户意愿交互:确定被叫是否乐意参加某个通信; 建立呼叫:包括向被叫“振铃”,确定主叫和被叫的呼叫参数; 呼叫处理和控制:包括呼叫重定向、呼叫转移、终止呼叫等等。
SIP主要由于 4 种元素组成:用户代理、代理服务器、重定 向服务器以及注册服务器。
From: 所有请求和响应必须包含此字段,以指示请求的发起者。服务器将此字 段从请求消息复制到响应消息。 该字段的一般格式为: From: 显示名<SIP-URL>;tag=xxxx 其中,显示名为用户界面上显示的字符,如果系统不予显示,应置显示 名为“匿名(Anonymous) ”。显示名为任选字段。tag 称为标记,为16进 制数字串,中间可带连字符“-”。当两个共享同一SIP 地址的用户实例用 相同的Call-ID发起呼叫邀请时,就需用此标记予以区分。标记值必须全 局唯一。用户在整个呼叫期间应保持相同的Call-ID和标记值。
内容
第一节 概述 第二节 协议消息
第三节 呼叫流程
SIP协议消息的分类
SIP 消息采用文本方式编码,分为两类:请求消息和响应消息。 请求消息:客户端为了激活按特定操作而发给服务器的 SIP 消 息 , 包 括 INVITE , ACK , OPTIONS , BYE , CANCEL 和 REGISTER消息等。
SIP 代理服务器接受 SIP UA 的会话请求并查询 SIP 注册
服务器,获取收件方 UA 的地址信息。然后,它将会话邀
请信息直接转发给收件方 UA(如果它位于同一域中)或代理 服务器(如果 UA 位于另一域中)。
代理服务器的主要功能:路由、认证鉴权、计费监控、呼 叫控制、业务提供等。
对话(Dialog) 一个对话是持续一段时间的两个 UA之间的端到端的SIP 关 系。一个对话由SIP 消息建立,就像用 2xx 响应INVITE 请求。 我们用 Call identifier ,local tag (本地tag ),remote tag (对 方tag )来标志一个对话。
响应消息:用于对请求消息进行响应,指示呼叫的成功或失败 状态。
请求消息和响应消息都包括SIP头字段和SIP消息字段。
请求消息
请求消息 INVITE 消息含义 发起会话请求,邀请用户加入一个会话,会话描述含于消息体中。对 于两方呼叫来说,主叫方在会话描述中指示其能够接受的媒体类型及 其参数。被叫方必需在成功响应消息的消息体中指明其希望接受哪些 媒体,还可以指示其行将发送的媒体。 如果收到的是关于参加会议的邀请,被叫方可以根据Call-ID或者会话 描述中的标识确定用户已经加入该会议,并返回成功响应消息。 证实已收到对于INVITE请求的最终响应。该消息仅和INVITE消息配 套使用。 结束会话 取消尚未完成的请求,对于已完成的请求(即已收到最终响应的请求) 则没有影响 注册 查询服务器的能力 用于承载带外信息,如DTMF信息
SIP协议的应用要求与底层的传输协议无关。在SIP最低配置 情况下,SIP协议至少要在TCP和UDP两个协议体系下都能够 应用。
SIP协议用户定位基于登 记。SIP 用户终端上电后即向登记服务器登记,SIP专门为此定 义了一个“登记”(REGISTER)请求消息,并规定了登记操 作过程。
SIP协议栈
H.323 SIP RTSP RSVP RTCP H.263 etc. RTP
TCP
UDP
IP
PPP Sonet
AAL3/4
AAL5 ATM Ethernet
PPP V.34
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 协议承载在IP 网,网络层协议为 IP ,传输层协议可用 TCP 或 UDP,推荐首选UDP。
重定向服务器将请求中的目的地址映射为零个或多个新的 地址,然后返回给客户端,客户端直接再次向这些新的地 址发起请求。
重定向服务器用于在需要时将用户新的位置返回给呼叫方。 呼叫方可根据得到新位置重新呼叫。
代理,代理服务器(Proxy、Proxy sever)
作为一个逻辑网络实体代表客户端转发请求或者响应,可 以同时作为客户端和服务器端;
用户代理(User Agent) SIP 用户代理(UA) 是终端用户设备,如用于创建和管理 SIP 会话的移动电话、多媒体手持设备、PC、PDA 等。
用户代理客户(User Agent Client)发起请求的一方。 用户代理服务器(User Agent Server)负责接受消息并做出 响应。
ISSUE 2.0
固网产品课程开发室
学习目标
了解SIP协议的作用 掌握SIP命令 掌握SIP协议的消息交互过程
内容
第一节 概述 第二节 协议消息
第三节 呼叫流程
SIP协议概念
会话启动协议SIP(Session Initiation Protocol)是一个在IP网 络上进行多媒体通信的应用层控制协议,它被用来创建、修改、 和终结一个或多个参加者参加的会话进程。
Cseq Cseq称之为命令序号。客户在每个请求中应加入此字段,它由命令名称和一个十 进制序号组成,该序号由请求客户选定,在 Call-ID范围内唯一确定。序号初值 可为任意值,其后具有相同 Call-ID值,但不同命令名称、消息体的请求,其 Cseq序号应加1。重发请求的序号保持不变。服务器将请求中的 Cseq值复制到响 应消息中,用于将请求和其触发的响应相关联。 ACK和CANCEL请求的Cseq值(十进制序号)和对应的 INVITE 请求相同,BYE 请求的Cseq序号应大于INVITE 请求。服务器必须记忆相同 Call-ID的INVITE 请 求的最高序号,收到序号低于此值的INVITE 请求应在给出响应后予以丢弃。 由代理服务器并行分发的请求,其Cseq 值相同。严格来说,Cseq 对于任何可由 BYE或CANCEL请求取消的请求以及客户可连续发送多个具有相同Call-ID请求的 情况都是需要的,其作用是判定响应和请求的对应关系。
事务 SIP是一个客户/服务器协议。客户和服务器之间的操作从第 1个请求至最终响应为止的所有消息构成一个SIP事务。一个SIP 事务由客户和服务器之间的一个单个请求和这个请求的所有应 答组成,这些应答包括了零个或者多个临时应答以及一个或者 多个终结应答。
(RINGING 是 1xx 响应, OK是 2xx 响应)
Call-ID:该字段用以唯一标识一个特定的邀请或标识某一客户的所有登 记。 需要注意的是,一个多媒体会议可能会有多个呼叫,每个呼叫有其 自己的Call-ID。例如,某用户可数次邀请某人参加同一历时很长的会议。 用户也可能会收到数个参加同一会议或呼叫的邀请,其Call-ID各不相同。 用户可以利用会话描述中的标识,例如SDP中的 o(源)字段的会话标识 和版本号判定这些邀请的重复性。 Call-ID的一般格式为: Call-ID:本地标识@主机
消息头
空格
SDP
消息体
SIP地址 SIP URL 的一般结构为: SIP:用户名@主机:端口 “SIP”表示需采用 SIP 协议和所指示的端系统通信。为了与Internet 地址形式相区别,在写SIP地址时一定要加上“sip:”,即sip: user@host。 “用户名”可以由任意字符组成,一般可取类似与 E-mail 用户名形 式,也可以是电话号码。 “主机”可为主机域名或IPv4地址。 “端口”指示请求消息送往的端口号,其缺省值为5060,即公开的 SIP 端口号。 参数 如果把地址理解为可以与目的地取得联系的必要信息的话,那么 SIP协议中还有其他一些与地址有关的重要参数。比如: branch(分支)参数; tag参数等 参数可以出现在各种头域中 举例: From: sip:2125551212@ To: Bob sip:bob@>; tag=376364382
SIP请求消息结构
命令名称 对端URI Call-ID:值 版本
起始行
Form:值
To :值 Cseq :值
消息头
Via :值
Contact :值 Max-Forwards : 值
SIP请求消息结构 (续)
Allow :值 Content-Length :值 Supported :值 User-Agent :值 Content-Type :值 ……
Via Via字段用以指示请求历经的路径。它可以防止请求消息传送产生环路,并确保 响应和请求消息选择同样的路径,以保证通过防火墙或满足其它特定的选路要求。 发起请求的客户必须将其自身的主机名或网络地址插入请求的Via 字段,如果未 采用缺省端口号,还需插入此端口号。在请求前传过程中,每个代理服务器必须 将其自身地址作为一个新的Via 字段加在已有的Via 字段之前。如果代理服务器 收到一个请求,发现其自身地址位于Via头部中,则必须回送响应“检测到环 路”。 当请求消息通过网络地址翻译点(如防火墙)时,请求的源地址和端口 号可能被改变,此时Via 字段就不能成为响应消息选路的依据。为了防止这一点, 代理服务器应校验顶端Via 字段,如果发现其值和代理服务器检测到的前站地址 不符,则应在该Via 字段中加入“receive”参数,如此修改后的字段称为“接收方 标记Via 头部字段”。例如: Via:SIP/2.0/UDP :5060 Via:SIP/2.0/UDP 10.0.0.1:5060;received=191.169.12.30 由点10.0.0.1 发出的请求消息路径外部地址为191.169.12.30的网络地址翻译点后, 到达代理服务器。后者注意到前站发送地址和 Via字 段地址不符,就把实际发送地址作为接收方标记加在顶端Via 字段的末尾,然后 再将代理自己的地址作为新加的Via字段置于最上面。 若代理服务器向多播地址发送请求,则必须在其Via 头部字段中加入“多播地址 (maddr) ”参数,此参数指明该多播地址。 代理服务器或UAC收到Via头部字段时的处理规则是: 规则1:第1 个Via头部字段应该指示本代理服务器或UAC。如果不是,丢弃该消 息,否则,删除该Via字段。
注意:UAC和UAS的划分是针对一个事务而言的。
注册服务器(Registrar) SIP 注册服务器是包含域中所有用户代理的位置的数据库。 在 SIP 通信中,这些服务器会检索参与方的 IP 地址和其他 相关信息,并将其发送到 SIP 代理服务器。
重定向服务器(Redirect server)
ACK BYE CANCEL REGISTER OPTIONS INFO
响应消息
序号
1xx 2xx 3xx 4xx 5xx 6xx
状态码
信息响应(呼叫 进展响应) 成功响应 重定向响应 客户出错 服务器出错 全局故障
消息功能
表示已经接收到请求消息,正在对其进行处理 表示请求已经被成功接受、处理 表示需要采取进一步动作,以完成该请求 表示请求消息中包含语法错误或者SIP服务器 不能完成对该请求消息的处理 表示SIP服务器故障不能完成对正确消息的处 理 表示请求不能在任何SIP服务器上实现
To: 该字段指明请求的接收者,其格式和 From相同,仅第一个关键词代 之以 To。所有请求和响应消息必须包含此字段。 字段中的标记参数 可用于区分由同一SIP URL 标识的不同的用户实例。由于代理服务器 可以并行分发多个请求,同一请求可能到达用户的不同实例(如住 宅电话等)。由于每个实例都可能响应,因此需用标记来区分来自 不同实例的响应。需要注意的是,To字段中的标记是由每个实例至 于响应消息中的。
SIP 协议可用于发起会话,也可以用于邀请成员加入已经用其 它方式建立的会话。
SIP协议透明地支持名字映射和重定向服务,便于实现ISDN、 智能网以及个人移动业务。
SIP协议的通用性
会话可以是双方会话,也可以是多方会话。 会话所采用媒体形式不受设备的限制,而受SIP协议的限制, SIP协议只是在会话发起过程中,对通信各方的性能进行勾通 而已。
用户通信能力协商:确定通信的媒体类型和参数;
用户意愿交互:确定被叫是否乐意参加某个通信; 建立呼叫:包括向被叫“振铃”,确定主叫和被叫的呼叫参数; 呼叫处理和控制:包括呼叫重定向、呼叫转移、终止呼叫等等。
SIP主要由于 4 种元素组成:用户代理、代理服务器、重定 向服务器以及注册服务器。
From: 所有请求和响应必须包含此字段,以指示请求的发起者。服务器将此字 段从请求消息复制到响应消息。 该字段的一般格式为: From: 显示名<SIP-URL>;tag=xxxx 其中,显示名为用户界面上显示的字符,如果系统不予显示,应置显示 名为“匿名(Anonymous) ”。显示名为任选字段。tag 称为标记,为16进 制数字串,中间可带连字符“-”。当两个共享同一SIP 地址的用户实例用 相同的Call-ID发起呼叫邀请时,就需用此标记予以区分。标记值必须全 局唯一。用户在整个呼叫期间应保持相同的Call-ID和标记值。
内容
第一节 概述 第二节 协议消息
第三节 呼叫流程
SIP协议消息的分类
SIP 消息采用文本方式编码,分为两类:请求消息和响应消息。 请求消息:客户端为了激活按特定操作而发给服务器的 SIP 消 息 , 包 括 INVITE , ACK , OPTIONS , BYE , CANCEL 和 REGISTER消息等。
SIP 代理服务器接受 SIP UA 的会话请求并查询 SIP 注册
服务器,获取收件方 UA 的地址信息。然后,它将会话邀
请信息直接转发给收件方 UA(如果它位于同一域中)或代理 服务器(如果 UA 位于另一域中)。
代理服务器的主要功能:路由、认证鉴权、计费监控、呼 叫控制、业务提供等。
对话(Dialog) 一个对话是持续一段时间的两个 UA之间的端到端的SIP 关 系。一个对话由SIP 消息建立,就像用 2xx 响应INVITE 请求。 我们用 Call identifier ,local tag (本地tag ),remote tag (对 方tag )来标志一个对话。
响应消息:用于对请求消息进行响应,指示呼叫的成功或失败 状态。
请求消息和响应消息都包括SIP头字段和SIP消息字段。
请求消息
请求消息 INVITE 消息含义 发起会话请求,邀请用户加入一个会话,会话描述含于消息体中。对 于两方呼叫来说,主叫方在会话描述中指示其能够接受的媒体类型及 其参数。被叫方必需在成功响应消息的消息体中指明其希望接受哪些 媒体,还可以指示其行将发送的媒体。 如果收到的是关于参加会议的邀请,被叫方可以根据Call-ID或者会话 描述中的标识确定用户已经加入该会议,并返回成功响应消息。 证实已收到对于INVITE请求的最终响应。该消息仅和INVITE消息配 套使用。 结束会话 取消尚未完成的请求,对于已完成的请求(即已收到最终响应的请求) 则没有影响 注册 查询服务器的能力 用于承载带外信息,如DTMF信息
SIP协议的应用要求与底层的传输协议无关。在SIP最低配置 情况下,SIP协议至少要在TCP和UDP两个协议体系下都能够 应用。
SIP协议用户定位基于登 记。SIP 用户终端上电后即向登记服务器登记,SIP专门为此定 义了一个“登记”(REGISTER)请求消息,并规定了登记操 作过程。
SIP协议栈
H.323 SIP RTSP RSVP RTCP H.263 etc. RTP
TCP
UDP
IP
PPP Sonet
AAL3/4
AAL5 ATM Ethernet
PPP V.34
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 协议承载在IP 网,网络层协议为 IP ,传输层协议可用 TCP 或 UDP,推荐首选UDP。
重定向服务器将请求中的目的地址映射为零个或多个新的 地址,然后返回给客户端,客户端直接再次向这些新的地 址发起请求。
重定向服务器用于在需要时将用户新的位置返回给呼叫方。 呼叫方可根据得到新位置重新呼叫。
代理,代理服务器(Proxy、Proxy sever)
作为一个逻辑网络实体代表客户端转发请求或者响应,可 以同时作为客户端和服务器端;
用户代理(User Agent) SIP 用户代理(UA) 是终端用户设备,如用于创建和管理 SIP 会话的移动电话、多媒体手持设备、PC、PDA 等。
用户代理客户(User Agent Client)发起请求的一方。 用户代理服务器(User Agent Server)负责接受消息并做出 响应。