logo资料库

自己动手写SIP协议栈.pdf

第1页 / 共47页
第2页 / 共47页
第3页 / 共47页
第4页 / 共47页
第5页 / 共47页
第6页 / 共47页
第7页 / 共47页
第8页 / 共47页
资料共47页,剩余部分请下载后查看
第一章 绪论
第二章 SIP协议基本介绍
第三章 SIP协议栈ZmhSipStack的实现
第四章 基于ZmhSipStack的应用程序编写
第五章 ZmhSipStack在嵌入式环境下的应用
第六章 局域网内的SIP通信实验
结 论
参考文献
1 自己动手写 SIP 协议栈 Author:张梦晗 E_mail:enyaxp@student.dlut.edu.cn 2006 年 9 月 13 日
前言 本文由作者的本科毕设论文改写而成。由于时间仓促及作者 水平所限,本文中的 SIP 协议栈尚不能实用,仅供初学 SIP 协议 的朋友们入个门而已。不足之处还请多多包涵。 2
摘 要 ............................................ Ⅰ Abstract ........................................... Ⅱ 致 谢 .............................................. 5 第一章 绪论 ....................................... 5 1.1 SIP协议简介........................................................................ 5 1.2 论文各章内容.................................................................... 5 第二章 SIP协议基本介绍........................... 7 2.1 SIP系统基本组成................................................................ 7 2.2 SIP消息描述........................................................................ 7 2.2.1 起始行(start-line) .................................................. 8 2.2.2 消息头(message-header)..................................... 10 2.3 SIP基本会话过程...............................................................11 第三章 SIP协议栈ZmhSipStack的实现............. 14 3.1 协议栈工作原理................................................................ 14 3.2 协议栈处理器的实现........................................................ 16 3.2.1 传输层模块............................................................. 17 3.2.2 文本解析器............................................................. 18 3.2.3 文本生成器............................................................. 23 3.2.4 数据处理器............................................................. 24 3.2.5 SIP状态机............................................................... 26 第四章 基于ZmhSipStack的应用程序编写 ......... 30 4.1 基于ZmhSipStack的应用程序开发.................................. 30 4.2 用户代理程序SipUA的实现.............................................. 31 4.2.1 RTP模块................................................................... 32 4.2.2 编解码器模块........................................................... 32 3
4.2.3 音视频采集与输出模块......................................... 33 4.2.4 用户对话框设计以及程序运行效果..................... 34 4.3 无状态服务器程序SipProxyServer的实现.................... 36 第五章 ZmhSipStack在嵌入式环境下的应用 ........ 38 5.1 ARM/μCOS-Ⅱ嵌入式开发环境介绍................................ 38 5.2 ZmhSipStack的嵌入式移植.............................................. 39 5.3 基于ZmhSipStack的嵌入式应用程序构建...................... 40 5.3.1 ArmSipUA构建......................................................... 41 5.3.2 ArmSipProxy构建................................................... 42 第六章 局域网内的SIP通信实验 .................... 43 6.1 实验条件介绍..................................................................... 43 6.2 实验步骤说明.................................................................... 43 结 论 ........................................... 46 参考文献 ........................................... 47 4
第一章 绪论 1.1 SIP 协议简介 SIP(Session Initiation Protocal)称为会话初始化协议, 是由 IETF(Internet Engineering Task Force)组织于 1999 年 提出的一个基于 IP 网络中实现实时通信应用的一种信令协议。作 为一个由 IETF 提出的标准,SIP 协议很大程度上借鉴了其他各种 广泛存在的 Internet 协议,采用基于文本的编码方式,这也是 SIP 协议同下一代网络视音频通信领域其他现有标准相比最大的 特点之一。 和原有的多媒体会话协议(如 H.323)相比,SIP 具有以下优 点: 可与 Voice XML、JSP、J2ME 等结合,快速开发增值业务; 支持多媒体应用,如语音、视频、图像、音频、文字、 数据等业务; 可将语音、视频、Presence、短消息、Web 浏览、定位信 息、Push、文件共享等业务结合起来,在语音、数据业 务结合和互通方面有天然优势; 业务网络和承载网络分离,两者可独立发展; 业务网络可以融合现有的固网和移动网业务; 协议简单,具有公认的扩展潜力。 基于以上优势,SIP 协议被广泛应用于下一代网络的业务开 发当中。而在现代软交换网络和未来移动网络中,SIP 协议更是 将作为各个功能单元之间互通的基础协议,因此,有人也称 SIP 协议为下一代网络中的“TCP/IP”协议(图 1.1)。 1.2 论文各章内容 本论文的各章内容如下: ⑴ 本文第二章介绍 SIP 协议的基本原理、格式和与其他辅 5
助协议的结合,然后介绍 SIP 系统的工作原理和基本会话过程; (a) VoIP 软件 (b) 可视电话终端 (c) 多媒体网关 (d) 3G 手机 图 1.1 基于 SIP 协议的通信应用 ⑵ 第三章介绍 SIP 系统的核心—SIP 协议栈的编写:首先 进行方案论证,然后分析协议栈的工作原理和需要实现的机能, 紧接着介绍自主开发的 SIP 协议栈 ZmhSipStack 的软件架构、结 构体定义和各具体功能函数; ⑶ 第四章介绍了基于此协议栈编写的应用于 PC 机的用户 代理程序 SipUA 和服务器程序 SipProxyServer,并对实现程序各 功能的函数进行解释,最后展示程序运行效果; ⑷ 第五章中介绍了如何将 SIP 协议栈 ZmhSipStack 移植到 嵌入式 ARM/μCOS-Ⅱ 环境下,并介绍了基于此协议栈编写的应 用于嵌入式 ARM 平台的用户代理程序和服务器程序; ⑸ 第六章应用用户代理和服务器程序在 PC 机和 ARM 平台之 间进行 SIP 协议会话实验,并给出实验结果。 6
第二章 SIP 协议基本介绍 本章主要介绍了 SIP 系统的基本组成和 SIP 协议的消息格式, 并介绍了 SIP 系统的四种基本会话过程。 2.1 SIP 系统基本组成 SIP系统在RFC3261中有详细的定义。为了描述问题方便, RFC3261定义了几种逻辑功能实体,协议对每种实体的功能和行为 都进行了详尽描述。实际应用中,一个物理实体可能集成了多个 逻辑功能。 在RFC3261看来,SIP系统可按逻辑功能分为4种元素:User Agent(用户代理),Proxy(代理服务器),Redirect Sever(重 定向服务器),Registrar(注册服务器)。 图 2.1描述了一个完备SIP系统的网络结构。从中我们可以发 现用户代理、注册服务器、代理服务器都在同一个网域中,而重 定向服务器可以在这个网域中,也可以在另一个网域中。SIP系统 的会话过程请参看本章2.4节。 图 2.1 SIP 系统的网络结构 2.2 SIP消息描述 SIP协议是基于文本的通信信令协议。SIP消息以文本形式表 示消息的语法、语义和编码,因此相对于二进制的信令,SIP消息 7
显得简单、易懂。 SIP消息有两种:客户端到服务器的请求消息和服务器到客户 端的响应消息。SIP消息由一个起始行(start-line)、一个或多 个字段(field)组成的消息头、一个标志消息头结束的空行(CRLF) 以及作为可选项的消息体(message body)组成。其中描述消息 体的头称为实体头(entity header),其格式如下: generic-message = start-line *message-header CRLF [message-body] 下面分别对起始行、消息头及消息体一一进行解释。 2.2.1 起始行(start-line) 起始行分请求行(Request-Line)和状态行(Status-Line)两 种,其中请求行是请求消息的起始行,状态行是响应消息的起始 行。 1.请求行(Request-Line) 请求行已方法(method)标记开始,后面是统一定位标示符 (URI)和协议版本号(SIP-Version),最后以回车换行符结束, 各个元素间用空格键字符间隔。 Request-Line = Method SP Request-URI SP SIP-Version CRLF 方法标记“Method ”来对说明部分进行描述。SIP 协议在 RFC3261中一共定义了六种方法。具体定义如下: INVITE:用于邀请用户或服务参加一个会话。INVITE 消息中必须包含主叫方和被叫方的信息和双方交换的多 媒体信息流类型。除了能够用用于启动双方通信会话外, 还具有启动多方会议的能力; ACK:用于客户机向服务器证实它已经收到了对INVITE 请求的最终响应。ACK消息中的主叫、被叫信息是由前 8
分享到:
收藏