当前位置:首页 > 代码 > 正文

sip协议代码(sip协议代码讲解)

admin 发布:2022-12-19 05:50 124


本篇文章给大家谈谈sip协议代码,以及sip协议代码讲解对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

SIP协议 SUBSCRIBE订阅 404出错码

404错误的意思是没有找到匹配的用户,也就是请求URI里user部分(你包里的340200.。。。)。你需要查一下这个值你是从哪里来的,server是否有与之匹配的已经注册的用户。

此外订阅如果想要成功的话,几个sip头也必须是server能够认识的,比如订阅的事件包类型(Event header),消息体类型(content-type)。至于消息体力的内容,你这个看起来是私有协议,别人是帮不到你的。

sip和H323协议的区别?

H.323是国际电信联盟(ITU)用于音频、视频和在数据包(IP)网络上共享数据的总括标准。这个标准已经在广泛应用并且拥有了巨大的市场份额。

SIP(会话起始协议)是IETF(互联网工程任务组)制定的多媒体信号协议。由于这个协议具有简单和模块化的特点,这个协议正在受到关注,但是,到目前为止的商业性应用还很少。

企业一般都把SIP解决方案与H.323 (和/或者TDM协议)协议一起部署,以便保护投资,保证更有效地向新技术转变,向能够从中受益的用户提供SIP应用。

H.323和SIP的相同之处

H.323和SIP协议原来都是用于在IP网络上提供多媒体服务的。这两个协议都在IP网络上运行,使用TCP和UDP会话发出信号并且使用RTP(实时协议)传输语音/视频流。这两种协议都不产生新的编码/解码方式,而是利用现有的其它协议(如G.711和G.729)。

这两个协议一般都是利用一台服务器作为建立会话的中间人。在H.323协议中,一个看门人(gatekeeper)通过发送和接收信号保持活跃状态,并且向各个终端发送数据包,然后各个终端建立自己的通向PSTN网关的媒体流。采用SIP协议,一个代理服务器能够处理和发送用户代理的请求,直接与其它用户代理建立会话,或者通过网关呼叫传统的PSTN成员。这就是说,SIP能够在有限的范围内以点对点的方式实施,因为用户代理不用中间的服务器就可以建立会话,就像在one-X Quick Edition平台中一样。

两个协议的区别

虽然这两个协议在概念上是相同的,但是,它们在结构和提供的服务方面有很大的区别。H.323协议是在1996年首次为VoIP应用扩展的协议,现在是第五个版本,是以ISDN Q.931等电话协议为基础的。IETF的思想家最初在90年代中期接受了SIP协议,并且从那以后发表了两个RFC,最新版本的RFC 3261是在2002年发表的。SIP同HTTP和SMTP一样,是一种基于文本的协议。许多程序员都非常了解这个协议。他们发现SIP协议非常简单并且很容易排除故障。H.323协议是用二进制代码编写的,没有丰富经验和开发工具的程序员都不熟悉这个协议。

这两个协议之间的主要区别是,SIP协议用来建立和断开媒体会话,而H.323协议用来具体指定用哪一个协议提供媒体服务。使用H.323协议,媒体本身是不依赖于信号传输协议的。事实上,SIP是依赖另一种会话描述协议来定义、协商和处理媒体流的。因此,SIP能够像它建立游戏或者即时消息会话一样方便地用来建立一个语音或者视频会话。换句话说,SIP不是一个VoIP协议。由于SIP协议在许多领域都有用,开发人员对于SIP协议的熟悉程度和创造性都要高于他们对H.323协议的情况。

创建服务 SIP协议的关键属性

SIP协议允许开发人员创建更多的新服务,比他们使用H.323协议创建的新服务还要多。SIP是IETF工具集的一部分,这就意味着对于这个协议的接口和扩展没有明确定义的要求。除了建立和中断传统的媒体流之外,已经增加了一些使用SIP协议的扩展功能。像蜂窝运营商提供的一键通服务等新型的媒体会话就是以SIP协议为基础的。使用一种名为SIMPLE (SIP for Instant Messaging and Presence Leveraging Extensions)的SIP扩展协议能够实现即时消息服务。SIMPLE协议提供了一种即时消息实施结构。这种即时消息服务是基于传统的好友名单的,并拥有一个基于标准核心的在线状态显示应用程序。

SIP协议本身对在线状态的支持将扩展到其它设备中,实现类似于一号连接和多种设备(也就是说PC、桌面电话和手机)在线状态可见性等令人激动的新功能。这些功能将允许主叫方在最合适的时间使用最佳的设备连接被叫方,而不是仅仅观察即时消息客户端软件中的状态和猜测这个人是否在电话机旁。这个功能将减少在即时消息中频繁地输入的“我能给你打电话吗?”的信息。

更有趣的是,SIP和开放式Web服务提供了把在线状态显示和通讯集成到传统的企业应用程序中的许多选择。例如,在商业应用程序中发生的事件(如存货短缺)能够启动一个相关的管理人员(如产品线经理和零件供应商)的会议,利用在线状态显示(在他们的掌上电脑、台式电脑或者手机上的显示)确定联系相关管理人员的最佳方式。

sip协议如何用C语言实现

1、开源的sip服务器端,比较好用的是Asterisk,标准C程序实现,代码清晰。

2、sip的client相对比较多,主要有exosip,pjsip和opal。exosip简单易用,在PC上用比较方便。但是涉及的相关资源太多,用了osip,srtp,ms2等众多的开源库,ms2下面还用到了ffmpeg,别的不说,光编译就是噩梦。opal功能最强,虽然也用到了ffmpeg ,但是自己封装的非常好,采用插件方式,调用灵活。opal采用class方式提供封装,接口非常友好。感觉唯一不爽的地方,就是低层使用了ptlib,虽然多平台下都很好用,但放在嵌入式下感觉稍庞大了一些。pjsip精巧,方便移植,嵌入式下应该是首选。不过视频频支持方面扩展起来比opal麻烦。个人感觉,对于windows开发者来说,pjsip最大的好处就是代码调试方便。整个工程一次编译通过,另外两个库还要找很多相关的资源

3、其他的一些协议栈也调试过,比如reSipphone,好象是这个名字,还有Yate,不过从快速开发角度看,都不太合适。现在搞sip开发的,一开始就是先找好协议栈。linphone,ekiga什么的,但庞大。对于刚开始做的,最好是一个精简的demo。后来找到pjsip下面的几个例子,慢慢地了解了sip的工作流程,当然少不了抓包工具和tcpdump。

不过,其实,sip没有想象中的那么麻烦。现在回头看,刚开始做项目,使用协议栈绝对不是好想法。如果换个方向,先熟悉SIP基本协议,然后自己改造一个,或完全写一个,可能效果更好。

语音业务VOIP开发之SIP协议篇(二) —— SIP报文浅析

一、SIP消息

     SIP消息是SIP客户终端和服务器之间通信的的基本信息单元。SIP消息基于文本,采用UTF-8编码(RFC 2279)中的ISO 10646字符集。SIP协议借鉴了HTTP协议(RFC 2068)的设计思想,有很多消息格式与之相同。SIP协议支持UDP传输协议

     SIP消息消息分两类:请求消息 和 响应消息

请求消息(Request):客户端为了激活特定操作而发给服务器的SIP消息,包括INVITE,ACK,OPTIONS,BYE,CANCEL和REGISTER消息。UAC到UAS。

响应消息(Response):服务器向客户端反馈对应请求的处理结果的SIP消息,包括1xx,2xx,3xx,4xx,5xx,6xx响应消息,UAS到UAC

二、SIP消息格式与结构:

      SIP消息由三个部分组成:标识消息类型和目的地址的起始行,携带消息参数的头部以及承载任意附加信息的消息体。消息体中传送的最重要的信息就是由SDP(Session Description Protocol)协议描述的媒体控制信息,供终端协商并建立媒体信道。

       SIP消息格式:由一个起始行(Start-line)、一个或多个字段(header fields)组成的消息头、一个标志消息头结束的空行(CRLF)以及作为可选项的消息体(Message body)组成,其中描述的头称为实体头(Entityheader)。

generic-message = start-line

*message-header

CRLF

[ message-body ]

1.起始行

      起始行分请求行(Request-Line)和状态行(Status-Line)两种。

1.1.请求行(Request-Line)

      请求消息的起始行,由请求消息类型,请求目的发送地址Request-URI,SIP协议的版本号,之间用空格隔开。

请求行的6种Request Method:

INVITE:用于发起呼叫请求。INVITE消息包括消息头和数据区两部分。INVITE 消息头包含主、被呼叫的地址,呼叫主题和呼叫优先级等信息。数据区则是关于会话媒体的信息,可由会话描述协议SDP 来实现。

BYE:当一个用户决定中止会话时,可以使用BYE 来结束会话。

OPTIONS:用于询问被叫端的能力信息,但OPTIONS 本身并不能发起呼叫。

ACK:对已收到的消息进行确认应答。

REGISTER:用于用户向SIP服务器传送位置信息或地址信息。

CANCEL:取消当前的请求,但它并不能中止已经建立的连接。

1.2.状态行(Status-Line)

     响应消息的起始行,SIP应答消息的Status-Line由SIP-Version开始,接着是一个数字编码的状态码Status-Code,最后是一个与状态码相关的描述性短语Reason-Phrase,然后由一个CRLF行结束符结束Status-Line。

SIP应答消息的六类应答状态编码

1xx:临时消息:表示表示请求消息已经收到,后面将继续处理该请求。

2xx:成功消息:表示请求已经被成功的理解、接受或执行。

3xx:重定向消息:表示为了完成请求还需采取更进一步的动作。

4xx:客户机错误:表示该请求含有语法错误或在这个服务器上不能被满足。

5xx:服务器错误:表示该服务器不能处理一个明显有效的请求。

6xx:全局性故障:表示该请求在任何服务器上都不能被实现。

2.消息头:

      消息头的作用是进一步提供有关消息的其他信息,使代理服务器或客户代理服务器更好地对消息进行处理。消息头分四类:通用头(general-header )、请求头(request-header )、响应头( response-header )和实体头( entityheader)

四大类

general-header

    描述消息基本属性的通用头域,可用于请求消息和应答消息;

    消息头有:Call-ID,From,To,Via,Contact,CSeq,Encryption,Expires,Record-Route,Timestamp,Date,Accept,Accept-Encoding,Accept-Language

request-header

     请求头域,只可用于请求消息,它被用来传递有关应答的附加信息,对请求进行补充说明;

   Subject,User-Agent,Organization,Contact,Authorization,Proxy-Authorization,Proxy-Require,Response-Key,Require,Priority,Hide,Route,Max-Forwards。

response-header

    应答头域,只可用于应答消息,它被用来传递有关应答的附加信息,对应答进行补充说明。

    Proxy-Authenticate,WWW-Authenticate,Retry-After,Server,Warning,Allow,Unsupported。

entity-header

     消息体头域,用于描述消息体内容的长度、格式和编码类型等属性,可用于请求消息或应答消息。

    Content-Encoding,Content-Length,Content-Type

消息头格式

    每个消息头都是一个“句子”,以CRLF行结束符表示一个头域的结束。它们都由字段名(field-name)和域值(field-value)两部分组成,中间以“:”相隔。

常见消息头说明:

TO:格式:TO:显示名接收者URI;tag=n;显示名和tag可选。接收者URI是SIP网络种唯一标识接收终端的标识符。例:TO:DENNYSIP:caller@WORK.COM;TAG=11111     或 TO:sip:caller@work.com

FROM: 消息头FROM给出标识会话发起者的URI。比如:FROM:sip:caller@work.com;tag=hyh8。tag是必需的。

CALL-ID: 用于全局唯一标识正在建立的会话的标识符。 随机数加UAC标识信息。

CSeq: 用于标识同一会话中不同事务的序号,通常由一个用作序号的整型数和消息类型组成。整个会话操作过程由不同的事务组成,每一事务所涉及的消息的CSeq序号必须相同。

Via:为响应消息提供传输路径,当请求消息经过每一跳节点时,每一跳节点都把自身的IP地址信息放入顶层Via中。响应消息则沿着请求消息记录下的传输路径反向传输,首先移走指明自身IP地址信息的顶层消息头

三、报文格式 SIP 请求消息的过程

1、 请求应答的一个过程

1004@192.168.0.107----1001@192.168.0.112

1  INVITE ----SIP SERVER(192.168.0.129)

2  407 Proxy Authentication Required--1004

3  1004   ack---SIP SERVER

4  1004  INVITE--SIP SERVER

5  SIP-SERVER 100 Giving  ---1004

6 SIP SERVER INVITE--1001

7 1001 100 Trying---SIP SERVER

8 1001  180 Ringing----SIP SERVER

9  SIP SERVER 180 Ringing ----1004

10  1001  200 OK---SIP SERVER

11  SIP SERVER  200OK----1004

12  1004  ACK---SIP SERVER

13  SIP SERVER  ACK ---- 1001

视频会议中,关于SIP呼叫问题

首先SIP是一个协议,视频会议中通常有2种协议,一个H.323一个就是SIP了,SIP将是下一代的通讯协议,但是现在还未成为业界的标准,SIP都需要在网闸或者SIP服务器上进行注册才可以正常使用,当然你点对点呼叫双方都使用SIP协议就不需要注册,注册后最简单只管的好处就是不用再输入复杂的IP地址,只需要输入GK或者SIP服务器给你分配的号码就行。

关于sip协议代码和sip协议代码讲解的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/3372.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载