没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
SIP 协议解析与实现(c 和 c++ 使用 osip)
本文将按照 逐步的介绍 协议,介绍了 c 和 c++语言的实现,
分析了 osip 库的使用和实现。
第一章 概述
一 概述
协议是一个基于应用层的会话控制协议。它可以创建、修改、终止
多媒体会话会议,也可以邀请参与者加入到一个现有的会话。
因为 是一个基于应用层的协议,所以它不是一套完整的通讯系统方
案,它需要和其它的方案或者协议结合起来实现整套系统。例如,实时传输协
议用来传输音视频等实时的流媒体数据。实时流协议
用来控制媒体流的传递。媒体网关控制协议
用来控制 网关。
由此可见, 协议应该用来组合其它协议,从而实现完整的服务。但
是, 基础的功能和操作不依赖于其它协议。
二 第一个例子
图
下面引用 的例子来说明 的基本功能,包括:定位终端,
发送通讯请求,协商会话参数,建立会话和撤销建立的会话。图 显示了用户
和 !" 使用 交换信息的一个典型的例子每一个消息用字母 和一个
数字来标号,标号的前面有一个简短的消息类型说明。在这个例子中,
使用一个在她的 机中的 应用程序呼叫 !", !" 使用他的 电话,
这个 电话登录了互联网。同时,请注意两个 代理服务器在 和
!" 的会话的建立中起到的作用。
呼叫 !" 是使用他的 标识符。 标识符是一种
##$%!&'!(&)$*+&,称之为 #。# 格式很象
', 地址,包含一个用户名和一个主机名,如:-"!"."!/0!'。这
里 "!/0!' 是 !" 的 服务提供者的域名。 的 # 是:
-,.,*,$*,0!'。 也支持安全 #,叫做 #,例如,
-"!"."!/0!'。一个向 # 的呼叫使用加密传输也就是 1
来携带从呼叫者到被呼叫者所有的 消息。
是一个与 2 协议很像的,请求/应答式的事务模型。每一个事
务最少由一个要完成特定方法或功能的请求,和服务器端的一个应答组成。在
这个例子中,这个事务从 的软电话发送一个 3 请求到 !" 的
# 开始。3 是一个 消息,它表示请求者 想与 !" 通话。
3 请求包含一些头域。头域被称为属性,可以提供关于这个消息的额外信
息。关于头域我们一会儿将会详细说明它们。图 中的 3 信息可能
像这样:
3-"!"."!/0!'40
3,-404#5
0,*,$*,0!'6"&,$7897:";<<,)7)
,/=!&>,&)-<
!- !"?-"!"."!/0!'@
&!'-?-,.,*,$*,0!'@6*,A8<<:
,=5-,:":<<.0,*,$*,0!'
B-:3
!$*,*-?-,.0,*,$*,0!'@
!$*$*=C-,,*!$4)
!$*$*=1$A*7-:
D5$!*7!>$
第一行文本是这个请求的方法名3。后面的行是多个头域。这里
只列出了最少需要的头域。先在这里对这些头域做一个简要的介绍:
3, 头域包含 希望收到对于这个请求的应答的地址。也就是她告
诉请求的接收者,应答应该发送到 0,*,$*,0!'。后面的 "&,$7 参数
是这个事务的标识符。
! 头域包含一个显示名 !"和一个 # 或者 #,这里是
使用的 #-"!"."!/0!'。这个 # 就是这个请求要发送的
目标。
&!' 头域也包含一个显示名和一个 # 或者 #,
这里是使用的 #-,.,*,$*,0!'来指出请求的发起人。这个
头域还包含了一个 *,A 参数,这个参数包含了一个随机字符串
<<:,这个字符串的数字会被软电话自动增加,它主要起到鉴别的
作用,后面还会说明它。
,=5 头域包含一个全局唯一标识符来标识这次呼叫。这个标识符使
用一个随即字符串和软电话所在的主机名或者 地址一起生成。这样,! 头
域、&!' 头域和 ,=5 这三个头域就可以唯一的确定了 和 !" 的这条
点对点的通信关系,并且将这个通信关系交给一个对话),!A来处理了。
B 头域命令序列包含一个整数和一个方法名字。在这个对话中每
一个新的请求都会增加这个整数的值,保证这个数值是有序的。
!$*,* 头域包含一个 # 或者 # 指出一个能够接触到
的直接路由,一般这个 # 由用户名和一个完全限定域名E5构
成。因为许多终端系统没有注册域名,所以也可以使用 地址代替
E5。3, 头域向对方指出了这个请求的应答应该发送到哪里,而 !$*,*
头域向对方指出了将来的请求应该发送到哪里。
,/=!&>,&) 头域限制了在这个请求传送到目的地的时候最多可以有
多少跳。它包含一个整数,在每一跳这个整数都会被减少。
!$*$*=C 头域描述消息体的类型在这个例子里消息体采用了
5 描述,但是消息体内容没有给出。
!$*$*=1$A*7 头域指出了消息体的字节数。
在后面我们将完整的介绍 头域 第 节。
在会话中像媒体类型、编码方式、采样率等信息都不使用 描述,而
是在消息体中使用其它会话描述协议的格式。这个例子中采用了 5 描述
<。
软电话不知道 !" 或者拥有 "!/0!' 域名的 服务器,它将
3 请求发送给为 提供服务的域名为 ,*,$*,0!' 的 服务器。关
于 如何获得 ,*,$*,0!' 服务器的地址,可以使用由 的软电
话指定,或者使用 52 探测到等方式。
,*,$*,0!' 服务器是一个 代理服务器。一个代理服务器接收
请求,为请求的发送者转发请求。在这个例子中,代理服务器接收到
3 请求后发送一个 应答&C$A给 的软电话。 应答
&C$A指出这个 3 请求已经被代理服务器接收到,并且已被经进一步向
目的地路由。 中的应答使用 位数字表示,每一个编号都表示一个描述短
语。这个 应答&C$A也同样包含和 3 请求一样的
!、&!'、,-5、B 和 3, 以及 "&,$7 参数,这样可以使 的
软电话知道这个应答是对应发送的 3 请求的。,*,$*,0!' 代理服务器
定位出 "!/0!' 代理服务器这可能需要通过域名解析服务器5等实现,
后面还会详细讲解获得了它的 地址,并且准备把 3 请求转发给
"!/0!' 代理服务器。在转发请求之前,,*,$*,0!' 代理服务器增加了一
剩余38页未读,继续阅读
资源评论
weide001
- 粉丝: 71
- 资源: 16
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功