logo资料库

SIP 3621 协议中文版.doc

第1页 / 共204页
第2页 / 共204页
第3页 / 共204页
第4页 / 共204页
第5页 / 共204页
第6页 / 共204页
第7页 / 共204页
第8页 / 共204页
资料共204页,剩余部分请下载后查看
1、SIP协议介绍
2、SIP协议功能概况
3、术语
4、实施概览
5、协议的结构
6、协议的定义
7、SIP消息:
7.1 请求
7.2应答
7.3 头域
7.3.1 头域格式。
7.3.2 头域分类。
7.3.3 缩写格式
7.4包体
7.4.1 消息正文类型(MessageBodyType)
7.4.2 消息体长度
7.5 分帧的SIP消息(Framing SIP Messages)
8 一般用户代理行为
8.1 UAC特性
8.1.1 产生一个请求
8.1.1.1 Request-URI
8.1.1.2 TO
8.1.1.3 From
8.1.1.4 Call-ID
8.1.1.5 Cseq
8.1.1.6 Max-Forwards
8.1.1.7 Via
8.1.1.8 Contact
8.1.1.9 Supported 和 Require
8.1.1.10 附加信息部分
8.1.2 发送一个请求
8.1.3 处理应答
8.1.3.1: transaction 层的错误
8.1.3.2 未知的应答
8.1.3.3 Vias
8.1.3.4 处理3xx应答
8.1.3.5 处理4xx应答
8.2 UAS特性
8.2.1 方法判定
8.2.2 包头判断
8.2.2.1 TO 和Request-URI
8.2.2.2 合并的请求
8.2.2.3 Require
8.2.3 内容处理
8.2.4 应用扩展
8.2.5 处理请求
8.2.6 产生应答
8.2.6.1 发送一个临时应答
8.2.6.2 包头和Tags
8.2.7 无状态UAS行为
8.3 重定向服务器
9 取消一个请求(Cancel)
9.1 客户行为(Client Behavior)
9.2 服务端行为(Server Behavior)
10 注册(Registrations)
10.1 概览
10.2 构造一个REGISTER请求
10.2.1 增加绑定
10.2.1.1 设置Contact地址的过期参数
10.2.1.2 Contact Adress的参数选择
10.2.2 删除绑定
10.2.3 访问绑定
10.2.4 刷新绑定
10.2.5 设置内部时钟
10.2.6 寻找注册服务器
10.2.7 传送一个请求
10.2.8 错误响应
10.3 处理REGISTER请求
11 查询能力
11.1 构造OPTIONS请求
11.2 处理OPTIONS请求
12 对话(Dialog)
12.1 创建一个对话
12.1.1 UAS行为
12.1.2 UAC行为
12.2 对话中的请求
12.2.1 UAC行为
12.1.1.1 产生请求
12.2.1.2 处理应答
12.2.2 UAS行为
12.3 终止对话
13 初始化一个会话
13.1 概览
13.2 UAC处理
13.2.1 创建一个初始化的INVITE
13.2.2 处理INVITE应答
13.2.2.1 1xx应答
13.2.2.2 3xx应答
13.2.2.3 4xx,5xx,6xx应答
13.2.2.4 2xx 应答
13.3 UAS处理
13.3.1 处理INVITE
13.3.1.1 提示进度
13.3.1.2 INVITE请求转发
13.3.1.3 INVITE请求的拒绝
13.3.1.4 接受INVITE请求
14 更改已经存在的会话
14.1 UAC行为
14.2 UAS行为
15 结束一个会话
15.1 使用BYE请求终止一个会话
15.1.1 UAC行为
15.1.2 UAS行为
16 proxy行为
16.1 概述
16.2 有状态的proxy
16.3 验证请求
16.4 路由信息预处理
16.5 确定请求的目的
16.6 请求转发
16.7 应答的处理
16.8 处理定时器C
16.9 处理通讯层的错误
16.10 CANCEL处理
16.11 无状态的proxy
16.12 Proxy Route处理的总结
16.12.1例子
16.12.1.1 基本SIP四边形
16.12.1.2 穿越一个严格路由proxy
16.12.1.3 重写Record-Route头域值。
17事务
17.1 客户端事务
17.1.1 INVITE客户事务
17.1.1.1 INVITE事务概述
17.1.1.2 正式的描述
17.1.1.3 构造ACK请求
17.1.2 非INVITE客户端事务
17.1.2.1 非INVITE事务概览
17.1.2.2 正式的描述
17.1.3 客户端事务匹配应答
17.1.4 处理通讯错误。
17.2 服务端事务
17.2.1 INVITE服务端事务
17.2.2 非INVITE服务端事务
17.2.3 为服务端事务匹配请求。
17.2.4 处理通讯错误
18 通讯(transport)
18.1 客户Clients
18.1.1 发送请求
18.1.2 接收应答
18.2 服务端
18.2.1 接收请求
18.2.2 发送应答
18.3 分块
18.4 错误处理
19 常见消息部件(Common Message Components)
19.1 SIP和SIPS统一资源标记
19.1.1 SIP和SIPS部件
19.1.2 Character Escaping Requirements(字符转码要求)
19.1.3 SIP和SIPS URI例子
19.1.4 URI比较
19.1.5 从URI中产生请求
19.1.6 关联SIP URI和tel URL
19.2 Option Tags
19.3 Tags
20 头域
20.1 Accept
20.2 Accept-Encoding
20.3 Accept-Language
20.4 Alert-Info
20.5 Allow
20.6 Authentication-Info
20.7 Authorization
20.8 Call-ID
20.9 Call-Info
20.10 Contact
20.11 Content-Disposition
20.12 Content-Encoding
20.13 Content-Language
20.14 Content-Length
20.15 Content-Type
20.16 Cseq
20.17 Date
20.18 Error-Info
20.19 Expires
20.20 From
20.21 In-Reply-To
20.22 Max-Forwards
20.23 Min-Expires
20.24 MIME-Version
20.25 Organization
20.26 Priority
20.27 Proxy-Authenticate
20.28 Proxy-Authorization
20.29 Proxy-Require
20.30 Record-Route
20.31 Reply-To
20.32 Require
20.33 Retry-After
20.34 Route
20.35 Server
20.36 Subject
20.37 Supported
20.38 Timestamp
20.39 To
20.40 Unsupported
20.41 User-Agent
20.42 Via
20.43 警告
20.44 WWW-Authenticate
21 应答代码
21.1 临时应答1xx
21.1.1 100 Trying
21.1.2 180 Ringing
21.1.3 818 Call is Being Forwarded(呼叫被转发)
21.1.4 182 Queued
21.1.5 183 会话进度
21.2 成功信息2xx
21.2.1 200 OK
21.3 转发请求3XX
21.3.1 300 Multiple Choices
21.3.2 301 Moved Permently
21.3.3 302 Moved Temporarily
21.3.4 305 Use Proxy
21.3.5 380 Alternative Service
21.4 请求失败4xx
21.4.1 400 Bad Request
21.4.2 401 Unauthorized
21.4.3 402 Payment Required
21.4.4 403 Forbidden
21.4.5 404 Not Found
21.4.6 405 Method Not Allowed
21.4.7 Not Acceptable
21.4.8 407 Proxy Authentication Required
21.4.9 408 Request Timeout
21.4.10 410 Gone
21.4.11 413请求实体过大。
21.4.12 414 Request-URI Too Long
21.4.13 415 Unsupported Media Type
21.4.14 416 Unsupported URI Scheme
21.4.15 Bad Extension
21.4.16 421Extension Required
21.4.17 423 Interval Too Brief
21.4.18 480 Temporarily Unavailable
21.4.19 481 Call/Transaction Does Not Exist
21.4.20 482 Loop Detected
21.4.21 483 Too Many Hops
21.4.22 484 Address InComplete
21.4.23 485 Ambiguous
21.4.24 486 Busy Here
21.4.25 487 Request Terminated
21.4.26 488 Not Acceptable Here
21.4.27 491 Request Pending
21.4.28 493 Undecipherable
21.5 Server Failure 5xx
21.5.1 500 Server Internal Error
21.5.2 501 Not Implemented
21.5.3 502 Bad Gateway
21.5.4 503 Service Unavailable
21.5.5 504 Server Time-out
21.5.6 505 Version Not Supported
21.5.7 Message To Large
21.6 Global Failures 6xx
21.6.1 600 Busy Everywhere
21.6.2 603 Decline
21.6.3 604 Does Not Exists Anywhere
21.6.4 606 Not Acceptable
22 使用HTTP认证
22.1 框架
22.2 用户到用户的认证。
22.3 Proxy到用户的认证
22.4 Digest 认证方案
23 S/MIME
23.1 S/MIME 认证
23.2 S/MIME 密钥交换
23.3 加密MIME 包体
23.4 SIP头隐私和用S/MIME的完整性:SIP地道
23.4.1 SIP头的完整性和机密属性
23.4.1.1 完整性
23.4.1.2 机密性
23.4.2 隧道的完整性和身份认证
23.4.3 隧道加密
24 例子
24.1 注册
24.2 建立会话
25 SIP协议的BNF范式
25.1 基本规则
26 安全考虑:威胁模式和安全应用建议。
26.1 攻击和威胁模式
26.1.1 注册服务 Hijacking。
26.1.2 模仿一个服务器
26.1.3 修改消息包体
26.1.4 破坏会话
26.1.5 拒绝服务和扩展。
26.2 安全机制
26.2.1 通讯和网络层的安全
26.2.2 SIPS URI方案
26.2.3 HTTP Authentication
26.2.4 S/MIME
26.3 安全机制的实现
26.3.1 对SIP实现者的要求
26.3.2 安全解决方案
26.3.2.1 注册
26.3.2.2 在域之间的请求
26.3.2.3 点对点请求
26.3.2.4 DoS 防护
26.4 限制
26.4.1 HTTP Digest
26.4.2 S/MIME
26.4.3 TLS
26.4.4 SIPS URI
26.5 Privacy(隐私)
27 IANA 认证
27.1 Option Tags
27.2 Warn-Codes
27.3 头域名
27.4 方法和应答码
27.5 “message/sip” MIME类型
27.6 新Content-Disposition 参数注册
28 同RFC 2543的改变
28.1 主要的功能改变
28.2 小功能性的变更
29 标准索引
30 信息索引:
1、SIP 协议介绍............................................................................................................... 4 2、SIP 协议功能概况....................................................................................................... 4 3、术语.............................................................................................................................. 5 4、实施概览...................................................................................................................... 5 5、协议的结构 ................................................................................................................ 11 6、协议的定义 ................................................................................................................ 12 7、SIP 消息:................................................................................................................. 17 7.1 请求 ................................................................................................................ 17 7.2 应答................................................................................................................. 18 7.3 头域 ................................................................................................................... 19 7.4 包体 .................................................................................................................... 21 7.5 分帧的 SIP 消息(Framing SIP Messages)..................................................22 8 一般用户代理行为 ......................................................................................................22 8.1 UAC 特性 ...........................................................................................................23 8.2 UAS 特性 ...........................................................................................................29 8.3 重定向服务器 ...................................................................................................32 9 取消一个请求(Cancel)................................................................................................ 33 9.1 客户行为(Client Behavior)...............................................................................34 9.2 服务端行为(Server Behavior)..........................................................................35 10 注册(Registrations)..................................................................................................35 10.1 概览................................................................................................................. 35 10.2 构造一个 REGISTER 请求 ............................................................................36 10.3 处理 REGISTER 请求 ....................................................................................41 11 查询能力....................................................................................................................43 11.1 构造 OPTIONS 请求...................................................................................... 43 11.2 处理 OPTIONS 请求...................................................................................... 44 12 对话(Dialog) ...............................................................................................................45 12.1 创建一个对话.................................................................................................45 12.2 对话中的请求.................................................................................................47 12.3 终止对话......................................................................................................... 50 13 初始化一个会话........................................................................................................50 13.1 概览................................................................................................................. 50 13.2 UAC 处理 .........................................................................................................50 13.3 UAS 处理......................................................................................................... 53 14 更改已经存在的会话 ................................................................................................55 14.1 UAC 行为 .........................................................................................................56 14.2 UAS 行为......................................................................................................... 57 15 结束一个会话 ............................................................................................................57 15.1 使用 BYE 请求终止一个会话 .......................................................................58 16 proxy 行为 ...................................................................................................................59 16.1 概述................................................................................................................. 59 16.2 有状态的 proxy...............................................................................................60 16.3 验证请求......................................................................................................... 61 16.4 路由信息预处理.............................................................................................62 1
16.5 确定请求的目的.............................................................................................62 16.6 请求转发......................................................................................................... 64 16.7 应答的处理.....................................................................................................69 16.8 处理定时器 C................................................................................................. 74 16.9 处理通讯层的错误.........................................................................................74 16.10 CANCEL 处理 ...............................................................................................75 16.11 无状态的 proxy.............................................................................................75 16.12 Proxy Route 处理的总结 ...............................................................................77 17 事务 .............................................................................................................................80 17.1 客户端事务.....................................................................................................82 17.2 服务端事务.....................................................................................................89 18 通讯(transport)....................................................................................................95 18.1 客户 Clients.....................................................................................................96 18.2 服务端............................................................................................................. 97 18.3 分块................................................................................................................. 99 18.4 错误处理......................................................................................................... 99 19 常见消息部件(Common Message Components).............................................100 19.1 SIP 和 SIPS 统一资源标记...........................................................................100 19.2 Option Tags .................................................................................................... 108 19.3 Tags .................................................................................................................109 20 头域 ..........................................................................................................................109 20.1 Accept............................................................................................................. 110 20.2 Accept-Encoding............................................................................................ 112 20.3 Accept-Language............................................................................................113 20.4 Alert-Info........................................................................................................ 113 20.5 Allow .............................................................................................................. 114 20.6 Authentication-Info........................................................................................ 114 20.7 Authorization.................................................................................................. 114 20.8 Call-ID ............................................................................................................115 20.9 Call-Info..........................................................................................................115 20.10 Contact..........................................................................................................115 20.11 Content-Disposition......................................................................................116 20.12 Content-Encoding.........................................................................................117 20.13 Content-Language........................................................................................ 117 20.14 Content-Length.............................................................................................117 20.15 Content-Type................................................................................................ 118 20.16 Cseq.............................................................................................................. 118 20.17 Date...............................................................................................................118 20.18 Error-Info......................................................................................................119 20.19 Expires..........................................................................................................119 20.20 From............................................................................................................. 120 20.21 In-Reply-To.................................................................................................. 120 20.22 Max-Forwards.............................................................................................. 120 20.23 Min-Expires..................................................................................................121 2
20.24 MIME-Version............................................................................................. 121 20.25 Organization................................................................................................. 121 20.26 Priority..........................................................................................................121 20.27 Proxy-Authenticate.......................................................................................122 20.28 Proxy-Authorization.....................................................................................122 20.29 Proxy-Require.............................................................................................. 123 20.30 Record-Route................................................................................................123 20.31 Reply-To.......................................................................................................123 20.32 Require......................................................................................................... 123 20.33 Retry-After................................................................................................... 124 20.34 Route.............................................................................................................124 20.35 Server............................................................................................................124 20.36 Subject..........................................................................................................125 20.37 Supported......................................................................................................125 20.38 Timestamp.................................................................................................... 125 20.39 To..................................................................................................................125 20.40 Unsupported................................................................................................. 126 20.41 User-Agent................................................................................................... 126 20.42 Via.................................................................................................................126 20.43 警告 ............................................................................................................. 127 20.44 WWW-Authenticate.....................................................................................129 21 应答代码 ..................................................................................................................129 21.1 临时应答 1xx................................................................................................129 21.2 成功信息 2xx................................................................................................130 21.3 转发请求 3XX.............................................................................................. 130 21.4 请求失败 4xx................................................................................................132 21.5 Server Failure 5xx.......................................................................................... 137 21.6 Global Failures 6xx........................................................................................ 139 22 使用 HTTP 认证 ..................................................................................................... 140 22.1 框架............................................................................................................... 141 22.2 用户到用户的认证。...................................................................................142 22.3 Proxy 到用户的认证 ..................................................................................... 143 22.4 Digest 认证方案 ........................................................................................... 145 23 S/MIME .................................................................................................................... 146 23.1 S/MIME 认证................................................................................................146 23.2 S/MIME 密钥交换........................................................................................147 23.3 加密 MIME 包体 .........................................................................................149 23.4 SIP 头隐私和用 S/MIME 的完整性:SIP 地道 ..........................................150 24 例子 .......................................................................................................................... 155 24.1 注册............................................................................................................... 156 24.2 建立会话.......................................................................................................157 25 SIP 协议的 BNF 范式 .............................................................................................161 25.1 基本规则.......................................................................................................162 26 安全考虑:威胁模式和安全应用建议。............................................................. 175 3
26.1 攻击和威胁模式...........................................................................................176 26.2 安全机制.......................................................................................................179 26.3 安全机制的实现...........................................................................................181 26.4 限制............................................................................................................... 186 26.5 Privacy(隐私)................................................................................................. 189 27 IANA 认证............................................................................................................... 190 27.1 Option Tags .................................................................................................... 190 27.2 Warn-Codes.................................................................................................... 190 27.3 头域名...........................................................................................................191 27.4 方法和应答码...............................................................................................191 27.5 “message/sip” MIME 类型 ............................................................................192 27.6 新 Content-Disposition 参数注册............................................................... 192 28 同 RFC 2543 的改变............................................................................................. 192 28.1 主要的功能改变...........................................................................................193 28.2 小功能性的变更...........................................................................................195 29 标准索引 ..................................................................................................................196 30 信息索引:..............................................................................................................197 1、SIP 协议介绍 Internet 的许多应用都需要建立和管理一个会话,会话在这里的含义是在参与者之间的 数据的交换。由于考虑到参与者的实际情况,这些应用的实现往往是很复杂的:参与者 可能是在代理间移动,他们可能可以有多个名字,他们中间的通讯可能是基于不同的媒 介(比如文本,多媒体,视频,音频等)-有时候是多种媒介一起交互。人们创造了无 数种通讯协议应用于实时的多媒体会话数据比如声音,影像,或者文本。本 SIP(会话 初始协议)和这些协议一样,同样允许使用 Internet 端点(用户代理)来寻找参与者并 且允许建立一个可共享的会话描述。为了能够定位精确的会话参与者,并且也为了其他 的目的,SIP 允许创建基础的 network hosts(叫做代理服务器),并且允许终端用户注 册上去,发出会话邀请,或者发出其他请求。SIP 是一个轻形的,多用途的工具,可以 用来创建,修改和终止会话,它独立运作于通讯协议之下,并且不依赖建立的会话类型。 2、SIP 协议功能概况 SIP 是一个应用层的控制协议,可以用来建立、修改、和终止多媒体会话(或者会议) 例如 Internet 电话。SIP 也可以邀请参与者参加已经存在的会话,比如多方会议。媒体 可以在一个已经存在的会话中方便的增加(或者删除)。SIP 显示的支持名字映射和重 定向服务,这个用于支持个人移动业务-用户可以使用一个唯一的外部标志而不用关系 他们的实际网络地点。SIP 在建立和维持终止多媒体会话协议上,支持 5 个方面: 用户定位: 检查终端用户的位置,用于通讯。 用户有效性:检查用户参与会话的意愿程度。 用户能力:检查媒体和媒体的参数。 4
建立会话:”ringing”,建立会话参数在呼叫方和被叫方。 会话管理:包括发送和终止会话,修改会话参数,激活服务等等。 SIP不是一个垂直集成的通讯系统。SIP可能叫做是一个部件更合适,它可以用作其他IETF 协议的一个部分,用来构造完整的多媒体架构。比如,这些架构将会包含实时数据传输协议(RTP) (RFC 1889)用来传输实时的数据并且提供QoS反馈,实时流协议(RSTP)(RFC 2326)用于 控制流媒体的的传输,媒体网关控制协议(MEGACO)(RFC 3015)用来控制到公共电话交换网 (PSTN)的网关,还有会话描述协议(SDP)(RFC 2327)用于描述多媒体会话。因此,SIP 应该和其他的协议一起工作,才能提供完整的对终端用户的服务。虽然基本的SIP协议的功能组 件并不依赖于这些协议。 SIP 本身并不提供服务。但是,SIP 提供了一个基础,可以用来实现不同的服务。比如,SIP 可以定位用户和传输一个封装好的对象到对方的当前位置。并且如果我们利用这点来通过 SDP 传输会话的描述,立刻,对方的用户代理可以得到这个会话的参数。如果我们用这个 像传输会话描述(SESSION DESCRIPTION SD)一样呼叫方的照片,一个”呼叫 ID”服务 很容易就建立了。这个简单的例子说明了,SIP 作为一个基础,可以在其上提供很多不同的 服务。 SIP 并不提供会议控制服务(比如议席控制或者投票系统),并且并没有建议会议应该则那 样管理。可以通过在 SIP 上建立其他的会议控制协议来发起一个会议。由于 SIP 可以管理 参与会议的各方的会话,所以会议可以跨异构的网络,SIP 并不能,也不打算提供任何形 式的网络资源预留管理。 安全对于提供的服务来说特别重要。要达到理想的安全程度,SIP 提供了一套安全服务,包 括防止拒绝服务,认证服务(用户到用户,代理到用户),完整性保证,加密和隐私服务。 SIP 可以基于 IPV4 也可以基于 IPV6 3、术语 在这个文档中,关键词”必须”,”不允许”,”要求”,”可以”,”不可以”,”应该”,”不应该”,”建议”,”不建议”,” 可能”,”可选” 是根据BCP14,RFC 2119[2]的规范描述SIP实现需要的不同层次 4、实施概览 这节通过简单的示例介绍了SIP的基本实现。本节是通过自然的而非正则的示例来介绍的。 第一个例子说明了 SIP 的基本功能:定位一个断点,发出通讯请求,通过协商会话参 数建立会话,拆卸刚才建立的会话。 图一表示一个典型的 Alice 和 Bob 两个用户间的 SIP 消息交易交换例子.(每一个消息 采用字母”F”和一个用来指向正文的一个数字做标记)在这个例子里,Alice 在她的 PC 上使 5
用一个 SIP 的应用程序(比如说一个软的电话),呼叫 Bob 在 Internet 上的一个 SIP 电话。 这个例子也掩饰了两个 SIP 代理之间,怎样为 Alice 和 Bob 建立会话连接。This typical arrangement is often referred to as the "SIP trapezoid" as shown by the geometric shape of the dotted lines in Figure 1. Alice 通过 Bob 的 SIP 标志 “呼叫” Bob,这个 SIP 标志是统一分配的资源(Uniform Resource Identifier URI)称作 SIP URI。SIP URI 在 19.1 节中定义。它很像一个 email 地址,典型的 SIP URI 包括一个用户名和一个主机名。在这个范例中,SIP URI 是 sip:bob@biloxi.com,biloxi.com 是 Bob 的 SIP 服务提供商。Alice 有一个 SIP URI: sip:alice@atlanta.com。 Alice 可以输入 Bob 的 URI,也可以直接在地址本的一个超级链接上点击一下 Bob 的 URI。SIP 也提供保密 URI, 称作 SIPS URI。例如:sips: bob@biloxi.com。 一个基于 SIPS URI 的通话保证这个通话是安 全的,并且对呼叫者和被叫的所有的 SIP 消息是加密传输的(叫做 TLS)。在 TLS 中,请求是 通过加密方式传输给被叫方,但是这个加密机制是基于被叫方宿主服务器的实现的。 SIP 是基于一个类似 HTTP 协议的请求应答的通讯模式。每一个通讯都包含对某个功能的请求, 并且起码需要一个应答。在这个应答中,Alice 的软电话发送一个含有 Bbo 的 SIP URI 抵制的 INVITE 通讯请求。INVITE 是一个 SIP 请求的例子,表示请求方(Alice)希望服务方(Bob)应 答。INVTE 请求包含一系列的包头域(Header fields)。包头中包含很多属性并且包含了传输 消息的附加信息。在 INVITE 中有如下的字段:呼叫的唯一标志,目的抵制,Alice 的地址,Alice 和 Bob 建立会话的类型。INVITE 请求(图 1 中的 F1)可能看起来像这样的: INVITE sip:bob@biloxi.com SIP/2.0 Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds Max-Forwards: 70 To: Bob From: Alice ;tag=1928301774 Call-ID: a84b4c76e66710@pc33.atlanta.com CSeq: 314159 INVITE Contact: Content-Type: application/sdp Content-Length: 142 (Alice’s SDP not shown) atlanta.com . . . biloxi.com proxy proxy . . . . Alice’s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . Bob’s softphone | | INVITE F1 |---------------> | 100 Trying F3 |<--------------- | | | INVITE F2 |---------------> | 100 Trying F5 | | | | INVITE F4 |---------------> SIP Phone | | | | | 6
| 180 Ringing F6 |<--------------- | 200 OK F9 |<--------------- | | |<-------------- | 180 Ringing F7 |<--------------- | 200 OK F10 |<--------------- | | | | 180 Ringing F8 |<--------------- | 200 OK F11 |<--------------- | | | |<================================================> | | | | | 图一:SIP矩形表达的SIP会话建立例子。 <------------------------------------------------- -------------------------------------------------> ACK F12 Media Session BYE F13 200 OK F14 -------------------------------------------------> | | | | | | | | | | | | | | | 在文本消息的第一行,包含了请求的类型(INVITE)。在这行之后的是这个请求的头域。这 个例子中包含了最少需要的头域集合。简单介绍一下: VIA 域包含了 Alice 接收发送请求的服务器地址(pc33.atlanta.com)。同样这个包含了一个 分支参数来标志 Alice 和这个服务器的会话事务。 TO 域包含了显示姓名(Bob)和一个 SIP 或者 SIPS URI(sip:bob@biloxi.com)请求将 首先传输到这个 URI 中。显示姓名(Display names)在 RFC 2822 中描述。 From 域 也 同 样 包 含 一 个 显 示 姓 名 ( Alice ) 和 一 个 SIP 或 者 SIPS URI (sip:alice@atlanta.com)这个 URI 用来标志请求的原始发起者。 这个域也包含了一个 TAG 参数,这个 TAG 参数是一个随机字串(1928301774),是软电话 (softphone)在 URI 上增加的一个随机串。用来做标志用途的。 Call_ID 包含一个全局的唯一标志,用来唯一标志这个呼叫,通过随机字串和 softphone 的 自己名字或者 IP 地址混和产生的。通过 TO TAG, FROM TAG 和 CALL-ID 完整定义了 Alice 和 Bob 之间的端到端的 SIP 关系,并且表示这个是一个对话性质的关系。 CSEQ 或者 Command Sequence 包含了一个整数和一个请求名字。这个 Cseq 数字是顺序 递增的。每当对话中发起一个新的请求都会引起这个数字的顺序递增。 Contact 域包含一个 SIP 或者 SIPS URI 用来表示访问 Alice 的直接方式,通常由用户名和 一个主机的全名(Fully Qualified Domain Name FQDN)组成。当 FQDN 作为首选的时候, 许多终端用户由于不会由名字登记(而导致不能访问 Alice 的主机),所以 IP 地址是可选的。 VIA 域告诉大家本请求发送到哪里并且应答到哪里,Contract 域告诉大家将来的请求将发送 到哪里(奇怪…不是 Alice 发起的么,将来的请求应该是 Bob 才对啊)。 Max-Forwards:最大转发数量限制了通讯中转发的数量。它是由一个整数组成,每转发一次, 整数减一。 Content-type 包含了消息正文的描述(消息正文在本范例中没有列出) Content-length:包含消息正文的长度(字节数) 完整的 SIP 包头域的定义在 20 节。会话的细节,比如媒体的类型,codec,或者采样速率, 7
没有通过 SIP 来描述。这个可以通过 SIP 的消息正文来描述,可以通过其他定义的协议在 正 文 中 进 行 描 述 。 有 一 种 是 会 话 描 述 协 议 ( Session Descripotion Protocol SDP ) (RFC2327[1])。这个 SDP 消息(没有在例子中列出)通过 SIP 的消息中传送,就像通过 附件发送 EMAIL 一样,或者说通过 HTTP 传输的网页一样。 由于 softphone 并不知道 bob 或者 bob 的 sip 服务器 biloxi.com 在哪里,所以 softphone 发 送 INVITE 请求到 Alice 的 sip 服务器,atlanta.com。这个 atlanta.com SIP 服务器应该已经 在 Alice 的 softphone 中配置了,或者可以通过 DHCP 获得。atlanta.com SIP 服务器是一 台代理服务器。代理服务器接收 SIP 请求并且根据请求转发。在这个例子中,代理服务器 接收到 INVITE 请求,并且回送一个 100(Trying)应答给 Alice 的 softphone。100(Trying) 应答表示 INVITE 请求已经收到,并且代理服务器正在转发 INVITE 请求。SIP 的应答是通 过一个三位数的数字表示的。SIP 应答同样包含 TO、FROM、Call-ID,CSEQ 和在 VIA 中 的分支参数,这个参数使得 Alice 的 softphone 可以把请求和应答关联起来。atlanta.com 代 理服务器收到 INVITE 请求之后,就去找 biloxi.com 可能通过 DNS 服务来找提供这个 biloxi.com 的 SIP 服务器。这在[4]中有描述。最后,转发 INVITE 请求到 biloxi.com 或者能 到达 biloxi.com 的代理服务器。在转发请求之前,atlanta.com 代理服务器会在 via 头上增 加一个一段包含自己抵制的值(INVITE 已经包含了 Alice 的的地址 VIA 域)。biloxi.com 代 理服务器收到这个 INVITE 请求并且返回一个 100(Trying)应答给 atlanta.com 代理服务器 标志这它已经收到这个请求并且正在处理这个请求。这个代理服务器通过查询数据库,通常 叫做地址服务,这个服务中包含了 bob 的当前 ip 地址。(我们在下一节可以看到这个数据库 是怎么回事)biloxi.com 代理服务增加另一段包含自己地址的 VIA 头域并且发送它到 bob 的 sip 电话。 Bob 的 SIP 电话接收到 INVITE 请求并且提醒 bob 有一个从 Alice 的呼入,这样 bob 可以决 定是否响应这个呼入。这个意思就是:bob 的电话响了。bob 的 sip 电话发送一个 180 (Ringing)回应,这个回应将通过两个代理服务器原路返回给 Alice。每一个代理服务器通 过 via 头域决定该把这个应答发送给哪里,并且在发送之前把自己的地址从头上拿走。虽然 DNS 和定位服务在路由最初的 INVITE 请求,180(ringing)响应可以简单返回给发起者而 不需要查找发起者在哪里,并且不需要在代理服务器保留状态,同时,每一个转发 INVITE 的代理也可以得到 INVITE 的每一个应答,这样的特性也非常有用。 当Alice的softphone收到180(Ringing)应答的时候,它提示Alice,可能是通过一个回铃音,或 者屏幕上的一个消息提示。 在这个例子中,Bob决定响应这个呼叫。当他拿起电话,他的SIP电话发送200(OK)回应给发 送者,表示这个电话已经接起来了。这个200(OK)包含了一个消息体,这个消息体包含SDP 媒体描述,这个媒体描述包含Bob希望和Alice建立何种媒体连接。同样,SDP消息也是两段交换: Alice发送一个给Bob,Bob发送一个回给Alice。这个两段的交换提供基本的兼容性协商,并且基 于简单的SDP提出/应答交换模型。如果Bob不想响应这个呼叫或者正在响应别的呼叫,一个错 误的响应会代替正常的200(OK)回送出去,这样,就不会有连接建立。SIP完整的返回代码在 21节有介绍。Bob发出的200(OK)(图一的F9消息)可能长得像这样的: SIP/2.0 200 OK Via: SIP/2.0/UDP server10.biloxi.com 8
分享到:
收藏