没有合适的资源?快使用搜索试试~ 我知道了~
sip rfc3261 中文版
5星 · 超过95%的资源 需积分: 14 37 下载量 103 浏览量
2008-11-12
00:30:40
上传
评论
收藏 1.41MB DOC 举报
温馨提示
试读
64页
sip rfc3261 中文版 sip rfc3261 中文版 sip rfc3261 中文版 sip rfc3261 中文版
资源推荐
资源详情
资源评论
1、SIP 协议介绍
Internet 的许多应用都需要建立和管理一个会话,会话在这里的含义是在参
与者之间的数据的交换。由于考虑到参与者的实际情况,这些应用的实现往
往是很复杂的:参与者可能是在代理间移动,他们可能可以有多个名字,他
们中间的通讯可能是基于不同的媒介(比如文本,多媒体,视频,音频等)
-有时候是多种媒介一起交互。人们创造了无数种通讯协议应用于实时的多
媒体会话数据比如声音,影像,或者文本。本 SIP(会话初始协议)和这些
协议一样,同样允许使用 Internet 端点(用户代理)来寻找参与者并且允许
建立一个可共享的会话描述。为了能够定位精确的会话参与者,并且也为了
其他的目的,SIP 允许创建基础的 network hosts(叫做代理服务器),并
且允许终端用户注册上去,发出会话邀请,或者发出其他请求。SIP 是一个
轻形的,多用途的工具,可以用来创建,修改和终止会话,它独立运作于通
讯协议之下,并且不依赖建立的会话类型。
2、SIP 协议功能概况
SIP 是一个应用层的控制协议,可以用来建立、修改、和终止多媒体会话
(或者会议)例如 Internet 电话。SIP 也可以邀请参与者参加已经存在的会
话,比如多方会议。媒体可以在一个已经存在的会话中方便的增加(或者删
除)。SIP 显示的支持名字映射和重定向服务,这个用于支持个人移动业务
-用户可以使用一个唯一的外部标志而不用关系他们的实际网络地点。 SIP
在建立和维持终止多媒体会话协议上,支持 5 个方面:
用户定位: 检查终端用户的位置,用于通讯。
用户有效性:检查用户参与会话的意愿程度。
用户能力:检查媒体和媒体的参数。
建立会话:”ringing”,建立会话参数在呼叫方和被叫方。
会话管理:包括发送和终止会话,修改会话参数,激活服务等等。
SIP不是一个垂直集成的通讯系统。SIP可能叫做是一个部件更合适,它可
以用作其他IETF协议的一个部分,用来构造完整的多媒体架构。比如,这些架
构将会包含实时数据传输协议(RTP)(RFC 1889)用来传输实时的数据并且
提供QoS反馈,实时流协议(RSTP)(RFC 2326)用于控制流媒体的传输,媒
体网关控制协议(MEGACO)(RFC 3015)用来控制到公共电话交换网
(PSTN)的网关,还有会话描述协议(SDP)(RFC 2327)用于描述多媒体
会话。因此,SIP应该和其他的协议一起工作,才能提供完整的对终端用户的
服务。虽然基本的SIP协议的功能组件并不依赖于这些协议。
SIP 本身并不提供服务。但是,SIP 提供了一个基础,可以用来实现不同的服
务。比如,SIP 可以定位用户和传输一个封装好的对象到对方的当前位置。并
且如果我们利用这点来通过 SDP 传输会话的描述,立刻,对方的用户代理可以
1
得 到 这 个 会 话 的 参 数 。 如 果 我 们 用 这 个 像 传 输 会 话 描 述 ( 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 上使用一个 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 服务提供
2
商 。 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 的软电话发送
一个含有 Bob 的 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 <sip:bob@biloxi.com>
From: Alice <sip:alice@atlanta.com>;tag=1928301774
Call-ID: a84b4c76e66710@pc33.atlanta.com
CSeq: 314159 INVITE
Contact: <sip:alice@pc33.atlanta.com>
Content-Type: application/sdp
Content-Length: 142
(Alice’s SDP not shown)
atlanta.com . . . biloxi.com
. proxy proxy .
. .
Alice’s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . Bob’s
softphone SIP Phone
| | | |
| INVITE F1 | | |
|---------------> | INVITE F2 | |
| 100 Trying F3 |---------------> | INVITE F4 |
|<--------------- | 100 Trying F5 |---------------> |
| |<-------------- | 180 Ringing F6 |
| | 180 Ringing F7 |<--------------- |
| 180 Ringing F8 |<--------------- | 200 OK F9 |
|<--------------- | 200 OK F10 |<--------------- |
| 200 OK F11 |<--------------- | |
3
|<--------------- | | |
| ACK F12 |
| -------------------------------------------------> |
| Media Session |
|<================================================> |
| BYE F13 |
| <------------------------------------------------- |
| 200 OK F14 |
| -------------------------------------------------> |
| |
图一:SIP矩形表达的SIP会话建立例子。
在文本消息的第一行,包含了请求的类型(INVITE)。在这行之后的是这个请
求的头域。这个例子中包含了最少需要的头域集合。简单介绍一下:
VIA 域包含了 Alice 接收发送请求的服务器地址(pc33.atlanta.com)。同样这个
包含了一个分支参数来标志 Alice 和这个服务器的会话事务。
TO 域 包 含 了 显 示 姓 名 ( Bob ) 和 一 个 SIP 或 者 SIPS URI ( sip :
bob@biloxi.com ) 请 求 将 首 先 传 输 到 这 个 URI 中 。 显 示 姓 名 ( Display
names)在 RFC 2822 中描述。
From 域也同样包含一个显示姓名 display name(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 才
对啊)。
4
Max-Forwards:最大转发数量限制了通讯中转发的数量。它是由一个整数组成,
每转发一次,整数减一。
Content-type 包含了消息正文的描述(消息正文在本范例中没有列出)
Content-length:包含消息正文的长度(字节数)
完整的 SIP 包头域的定义在 20 节。会话的细节,比如媒体的类型,codec,或
者采样速率,没有通过 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电话发送
5
剩余63页未读,继续阅读
资源评论
- T_ALmighty2017-11-21最近在了解这个
itsvirtualme
- 粉丝: 1
- 资源: 26
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功