H323与SIP协议的区别是啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了H323与SIP协议的区别是啥?相关的知识,希望对你有一定的参考价值。
参考技术A SIP是由IETF提出来的一个应用控制(信令)协议。正如名字所隐含的--用于发起会话。它可用来创建、修改以及终结多个参与者参加的多媒体会话进程。参与会话的成员可以通过组播方式、单播连网或者两者结合的形式进行通信。SIP中有客户机和服务器之分。客户机是指为了向服务器发送请求而与服务器建立连接的应用程序。用户代理(UserAgent)和代理(Proxy)中含有客户机。服务器是用于向客户机发出的请求提供服务并回送应答的应用程序。共有四类基本服务器:
·用户代理服务器:当接到SIP请求时它联系用户,并代表用户返回响应。
·代理服务器:代表其它客户机发起请求,既充当服务器又充当客户机的媒介程序。在转发请求之前,它可以改写原请求消息中的内容。
·重定向服务器:它接收SIP请求,并把请求中的原地址映射成零个或多个新地址,返回给客户机。
·注册服务器:它接收客户机的注册请求,完成用户地址的注册。用户终端程序往往需要包括用户代理客户机和用户代理服务器。代理服务器、重定向服务器和注册服务器可以看出是公众性的网络服务器。在SIP中还经常提到定位服务器的概念,但是定位服务器不属于SIP服务。
SIP在设计上充分考虑了对其它协议的扩展适应性。它支持许多种地址描述和寻址,包括用户名@主机地址:被叫号码@PSTN网关地址:Tel:010-62281234普通电话的描述等。这样,SIP主叫按照被叫地址就可以识别出被叫在传统电话网上的位置,然后通过一个与传统电话网相连的网关发起并建立呼叫。SIP最强大之处就是用户定位功能。SIP本身含有向注册服务器注册的功能,也可以利用其它定位服务器DNS、LDAP等提供的定位服务来增强其定位功能。
SIP共规定了六种信令:INVITE、ACK、CANCEL、OPTIONS、BYE、REGISTER。其中INVITE和ACK用于建立呼叫,完成三次握手,或者用于建立以后改变会话属性;BYE用以结束会话;OPTIONS用于查询服务器能力;CANCEL用于取消已经发出但未最终结束的请求;REGISTER用于客户出向注册服务器注册用户位置等消息。
SIP协议支持三种呼叫方式:由用户代理服务机(UAC)向用户代理服务器(UAS)直接呼叫,由UAC在重定向服务器的辅助下进行重定向呼叫和由代理服务器代表UAC向被叫发起呼叫。通过SIP代理建立呼叫的例子如图6-8所示。
H.323和SIP协议的比较
H.323和SIP分别是通信领域与因特网两大阵营推出的建议。H.323企图把IP电话当作是众所周知的传统电话,只是传输方式发生了改变,由电路交换变成了分组交换。而SIP协议侧重于将IP电话作为因特网上的一个应用,较其实应用(如FTP,E-mail等)增加了信令和QoS的要求,它们支持的业务基本相同,也都利用RTP作为媒体传输的协议。但H.323是一个相对复杂的协议。
H.323采用基于ASN.1和压缩编码规则的二进制方法表示其消息。ASN.1通常需要特殊的代码生成器来进行词法和语法分析。而SIP的基于文本的协议,类似于HTTP。基于文本的编码意味着头域的含义是一目了然的,如From、To、Subject等域名。这种分布式、几乎不需要复杂的文档说明的标准规范夫风格,其优越性已在过去的实践中得到了充分的证明(现在广为流行的邮件协议SMTP就是这样的一个例子)。SIP的消息体部份采用SDP进行描述,SDP中的每一项格式为=,也比较简单。
在支持会议电话方面,H.323由于由多点控制单元(MCU)集中执行会议控制功能,所有参加会议终端都向MCU发送控制消息,MCU可能会成为颈,特别是对于具有附加特性的大型会议;并且H.323不支持信令的组播功能,其单功能限制了可扩展性,降低了可靠性。而SIP设计上就为分布式的呼叫模型,具有分布式的组播功能,其组播功能不仅便于会议控制,而且简化了用户定位、群组邀请等,并且能节约宽带。但是H.323集是中控制便于计费,对宽带的管理也比较简单、有效。
H.323中定义了专门的协议用于补充业务,如H.450.1、H.450.2和H.450.3等。SIP并未专门定义的协议用于此目的,但它很方便地支持补充业务或智能业务。只要充分利用SIP已定义的头域(如Contact头域),并对SIP进行简单的扩展(如增加几个域),就可以实现这些业务。例如对于呼叫转移,只要在BYE请求消息中添加Contact头域,加入意欲转至的第三方地址就可以实现此业务。对于通过扩展头域较难实现的一些智能业务,可在体系结构中增加业务代理,提供一些补充服务或与智能网设备的接口。
在H.323中,呼叫建立过程涉及到第三条信令信致到:RAS信令信道、呼叫信令信到和H.245控制信道。通过这三条信道的协调才使得H.323的呼叫得以进行,呼叫建立时间很长。在SIP中,会话请求过程和媒体协商过程等一起进行。尽管H.323v2已对呼叫建立过程作了改进,但较之SIP只需要1.5个回路时延来建立呼叫,仍是无法相比。H.323的呼叫信令通道和H.245控制信道需要可靠的传输协议。而SIP独立于低层协议,一般使用UDP等无法连接的协议,用自己信用层的可靠性机制来保证消息的可靠传输。
总之,H.323沿用的是传统的实现电话信令模式,比较成熟,已经出现了不少H.323产品。H.323符合通信领域传统的设计思想,进行集中、层次控制,采用H.323协议便于与传统的电话网相连。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:DENNY<SIP: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
以上是关于H323与SIP协议的区别是啥?的主要内容,如果未能解决你的问题,请参考以下文章