SIP协议解析与实现

发布 2019-08-22 08:49:57 阅读 7436

本文将按照rfc3261逐步的介绍sip协议,介绍了c和c++语言的实现,分析了osip库的使用和实现。

第一章概述。

一概述。sip协议是一个基于应用层的会话控制协议。它可以创建、修改、终止多**会话(会议),也可以邀请参与者加入到一个现有的会话。

因为sip是一个基于应用层的协议,所以它不是一套完整的通讯系统方案,它需要和其它的方案或者协议结合起来实现整套系统。例如,实时传输协议(rtp)(rfc1889)用来传输音**等实时的流**数据。实时流协议(rtsp)(rfc2326)用来***体流的传递。

**网关控制协议(megaco)(rfc3015)用来控制pstn网关。

由此可见,sip协议应该用来组合其它协议,从而实现完整的服务。但是,sip基础的功能和操作不依赖于其它协议。

窗体顶端。sip( session initiation protocol ,rfc 3261)是由 ietf (国际互联网标准制定组织)制定的面向 internet 会议和**的信令协议。sip是一个应用层的协议,可以建立,修改或者中止多**会话或者呼叫。

它是一个基于ascii的端到端的协议,它实际上是在因特网上提供“约会”服务。用来实现voip的开放协议,最常用的有三种,sip、mgcp(media gateway controlprotocol)和h.323。

sip协议是专门为 ip **,尤其是结合 internet 设计的协议,同传统的 h.323 协议相比,sip 拥有明显的优越性:优异的可扩展性--大大提高了系统的处理能力;与 internet 紧密结合--使通讯更加轻松便捷的;卓越的开放性--不仅能够对手机、 pda 等移动设备提供良好的支持,对于**即时交流、语音和**数据传输等多**应用也能够很好地完成。

sip协议的特性和优势。

与sip兼容的协议。

sip协议可以单独地工作,也可以与下面的协议一起工作。

二第一个例子

下面引用rfc3261的例子来说明sip的基本功能,包括:定位终端,发送通讯请求,协商会话参数,建立会话和撤销建立的会话。图1显示了用户alice和bob使用sip交换信息的一个典型的例子(每一个消息用字母f和一个数字来标号,标号的前面有一个简短的消息类型说明)。

在这个例子中,alice使用一个在她的pc机中的sip应用程序呼叫bob,bob使用他的sip**,这个sip**登录了互联网。同时,请注意两个sip**服务器在alice和bob的会话的建立中起到的作用。

alice呼叫bob是使用他的sip标识符。sip标识符是一种uri(uniform resource identifier),称之为sip uri。sip uri格式很象email地址,包含一个用户名和一个主机名,如:

这里是bob的sip服务提供者的域名。alice的sip uri是:也支持安全uri,叫做sips uri,例如,一个向sips uri的呼叫使用加密传输(也就是tls)来携带从呼叫者到被呼叫者所有的sip消息。

sip是一个与http协议很像的,请求/应答式的事务模型。每一个事务最少由一个要完成特定方法或功能的请求,和服务器端的一个应答组成。在这个例子中,这个事务从alice的软**发送一个invite请求到bob的sip uri开始。

invite是一个sip消息,它表示请求者alice想与bob通话。invite请求包含一些头域。头域被称为属性,可以提供关于这个消息的额外信息。

关于头域我们一会儿将会详细说明它们。图1中的invite信息(f1)可能像这样:

第一行文本是这个请求的方法名(invite)。后面的行是多个头域。这里只列出了最少需要的头域。先在这里对这些头域做一个简要的介绍:

via头域包含alice希望收到对于这个请求的应答的地址。也就是她告诉请求的接收者,应答应该发送到 后面的branch参数是这个事务的标识符。

to头域包含一个显示名(bob)和一个sip uri或者sips uri,这里是使用的sip uri(这个sip uri就是这个请求要发送的目标。

from头域也包含一个显示名(alice)和一个sip uri或者sips uri,这里是使用的sip uri(来指出请求的发起人。这个头域还包含了一个tag参数,这个参数包含了一个随机字符串(1928301774),这个字符串的数字会被软**自动增加,它主要起到鉴别的作用,后面还会说明它。

call-id头域包含一个全局唯一标识符来标识这次呼叫。这个标识符使用一个随即字符串和软**所在的主机名(或者ip地址)一起生成。这样,to头域、from头域和call-id这三个头域就可以唯一的确定了alice和bob的这条点对点的通信关系,并且将这个通信关系交给一个对话(dialog)来处理了。

cseq头域(命令序列)包含一个整数和一个方法名字。在这个对话中每一个新的请求都会增加这个整数的值,保证这个数值是有序的。

contact头域包含一个sip uri或者sips uri指出一个能够接触到alice的直接路由,一般这个sip uri由用户名和一个完全限定域名(fqdn)构成。因为许多终端系统没有注册域名,所以也可以使用ip地址代替fqdn。via头域向对方指出了这个请求的应答应该发送到**,而contact头域向对方指出了将来的请求应该发送到**。

max-forwards头域限制了在这个请求传送到目的地的时候最多可以有多少跳。它包含一个整数,在每一跳这个整数都会被减少。

content-type头域描述消息体的类型(在这个例子里消息体采用了sdp描述,但是消息体内容没有给出)。

content-length头域指出了消息体的字节数。

在后面我们将完整的介绍sip头域(rfc3261第20节)。

在会话中像**类型、编码方式、采样率等信息都不使用sip描述,而是在消息体中使用其它会话描述协议的格式。这个例子中采用了sdp描述(rfc2327)。

软**不知道bob或者拥有域名的sip服务器,它将invite请求发送给为alice提供服务的域名为的sip服务器。关于alice如何获得 sip服务器的地址,可以使用由alice的软**指定,或者使用dhcp探测到等方式。

sip服务器是一个sip**服务器。一个**服务器接收sip请求,为请求的发送者**请求。在这个例子中,**服务器接收到invite请求后发送一个100应答(trying)给alice的软**。

100应答(trying)指出这个invite请求已经被**服务器接收到,并且已被经进一步向目的地路由。sip中的应答使用3位数字表示,每一个编号都表示一个描述短语。这个100应答(trying)也同样包含和invite请求一样的to、from、call-id、cseq和via以及branch参数,这样可以使alice的软**知道这个应答是对应发送的invite请求的。

**服务器定位出**服务器(这可能需要通过域名解析服务器(dns)等实现,后面还会详细讲解)获得了它的ip地址,并且准备把invite请求**给**服务器。在**请求之前,**服务器增加了一个额外的via头域,这个via头域包含自己的地址(这时候这个invite请求的第一个via头域包含alice的软**的地址)。**服务器接收到这个invite请求,并且也发送一个100(trying)应答给**服务器指出它已经接收到这个invite请求,并正在处理这个请求。

**服务器知道bob的ip地址(这可能需要定位服务),它又在这个invite请求中加入了一个新的via头域,值为自己的地址,然后它把这个invite请求发送给bob的sip**。

超市管理系统的设计与实现

软件学院。课程设计报告书。课程名称软件工程。设计题目超市管理系统的设计与实现 专业班级。学号。姓名。指导教师唐晓亮。2012年 6月。目录。1.设计时间 1 2.设计目的 1 3.设计任务 1 4.设计内容 1 4.1.设计内容概述 1 4.1.1.组织机构介绍 1 4.1.2.新业务流程介绍与分析...

资源与运营管理案例解析

案例162001年,某镇煤矿发生瓦斯 事故,死亡29人。该煤矿上一年产量3万吨,税利60万元,企业上一年平均职工人数是105人,工作日数是300天。这次事故因人身 所支出的费用是640万元,善后处理费用是130万元,财产损失价值达280万元,停产 减产损失价值20万元,资源损失价值30万元。并经过有...

议当代大学生价值观塑造与实现

在我看来,自身价值观践行与塑造就是一个不断交替的过程,一味的践行是盲目的,我们只有不断的学习塑造,才能更好地实现自身价值,再从中发现问题,不断地完善对社会主义价值体系的了解。但由于计划经济向市场经济的转变,潜移默化地改变着人们的思想观念 行为方式 思维方式。特别是效率优先原则 物质利益原则 竞争法则...

餐饮管理信息系统的开发与实现步骤

1 规划首先要制定发展战略。2 组织的信息需求分析。3 资源分配。系统分析工作是信息系统生存周期中重要的一步,也是决定性的一步,只有通过系统分析才能把软件功能和性能的总体概念描述为具体的信息系统软件的需求规格说明,从而奠定开发的基础。1 系统初步调查。目的是明确系统开发的目标和规模。调查内容有包括企...

如何实现自我价值

自我价值。从客观来说,自我价值是指个人在生活和社会活动中对社会作出的贡献及别人的评价 从主观来说,它是自尊 自爱 自信。自尊就是尊重自己,一个人不尊重自己 就不能尊重别人 别人也就不会尊重他 自爱就是爱护自己,一个人不爱自己 就不能爱别人 别人也不会爱他 自信就是相信自己有能力,一个人对自己没有信心...

考题解析第六讲招聘与配置 二

问题5.员工任务的指派方法p95 98 四 综合题 看教材上对应讲解 第一节 问题6.筛选简历的方法p67 68 解析 1 分析简历结构。通常应聘者为了强调自己近期的工作,书写教育背景和工作经历时,可以采取从现在到过去的时间排列方法。相关经历常被突出表述。2 审察简历的客观内容。在筛选简历时注意力应...

全面质量管理解析试题与答案

学习课程 全面质量管理解析。单选题。1.全面质量管理的主张中不包括 回答 正确。1.a设计过程质量管理。2.b制造过程质量管理。3.c员工质量意识管理。4.d使用过程质量管理。2.下列选项不属于 三不政策 的是 回答 正确。1.a不制造不良品。2.b不流出不良品。3.c不废除不良品。4.d不接受不良...

小学生必备古诗词鉴赏与解析

长歌行 节录 汉乐府。青青园中葵,朝露待日晞。阳春布德泽,万物生光辉。常恐秋节至,焜黄华叶衰。百川东到海,何时复西归?少壮不努力,老大徒伤悲。注释 1 青青 植物生长得旺盛时颜色。2 晞 x 晒干。3 阳春 暖和的春天。4 德泽 恩惠。5 秋节 秋季。6 焜 k n 黄 枯黄色。7 华 同 花 8 ...