Chinaunix首页 | 论坛 | 博客
  • 博客访问: 173781
  • 博文数量: 24
  • 博客积分: 1116
  • 博客等级: 少尉
  • 技术积分: 342
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-20 19:15
文章分类

全部博文(24)

文章存档

2011年(20)

2010年(4)

我的朋友

分类: 嵌入式

2011-03-29 13:48:28

7SIP消息:

SIP协议是一个基于文本的协议,使用UTF-8字符集(RFC2279[7])。

一个SIP消息既可以是一个从客户端到服务器端的请求,也可以是一个从服务器端到客户端的一个应答。

即使在字符集上和语法细节上有所不同,请求(7.1)还是应答(7.2)消息都基于RFC2822格式的。(SIP允许包头域不是标准的RFC2822包头域)。这两种消息类型都由一个起始行,一个或者多个包头域,一个可选的消息中文组成。

 

一般消息=                          起始行

*消息包头

CRLF

[消息正文]

起始行=                                    请求行/状态行

 

起始行、每一个包头行,空行、都必须由回车换行组成(CRLF)。即使消息中文没有,也必须有一个空行跟随。

除了在字符集上的区别以外,很多SIP的消息和包头域的格式都同HTTP/1.1一样。我们在这里就不重复它的语法和语义了,我们用[HX.Y]来标志HTTP/1.1规范(RFC2616[8])的X.Y节的描述。

SIP并非一个HTTP的超集或者扩展。

7请求

SIP请求是根据起始行中的Request-Line来区分的。一个Request_line包含方法名字,RequestURI,用单个空格(SP)间隔开的协议版本。

Request-LineCRLF结束。除了用作行结束标志以外,不允许CR或者LF出现在其他地方。在其他域中,不允许出现线形的空白(liner whitespace LWS

 

Request-Line                    =       Method SP Request-URI SP SIP-VERSION CRLF

Method: 这个规范规定了6中方法:REGISTER用于登记联系信息,INVITEACK,CANCEL用于建立会话,BYE用于结束会话,OPTIONS用于查询服务器负载。SIP扩展、标准RFC追加可能包含扩展的方法。

Request-URI: Request-URI是一个SIP或者SIPS URI,他们在19.1节由描述。也可以是一个通用的URI(RFC 2396[5])。它标志了这个请求所用到的用户或者服务的地址。Request-URI禁止包含空白字符或者控制字符,并且禁止”<>”括上。

SIP 元素可以支持除了SIP或者SIPS之外所规定的Request-URIs。比如”tel” URI模式(RFC 2806[9])。SIP元素可以用他们自己的机制来转换non-SIP URIsSIP URISIPS URI或者其他什么格式的URI

SIP-Version请求和应答消息都包含当前使用的SIP版本,这个遵循[H3.1](类似HTTPSIP替代,用SIP/2.0替代HTTP/1.1)中关于版本的规定,版本依赖,升级版本号。一个应用,发出的SIP消息一定包含了SIP-Version “SIP/2.0”。这个SIP版本串是大小写不铭感的,但是在实现中必须发送大写。

不像HTTP/1.1,SIP把版本号当作一个文本串处理。在实现上,这个应该不会有区别。

72应答

SIP应答和SIP请求的区别在于在START-LINE中是否包含一个STATUS-LINE。一个status-line在由数字表达的statuscode之前,是一个协议的版本串,每一个元素之间用一个单个SP(空格)分开。

除了最后用作结束标志以外,CR/LF不允许出现在其他地方。

status-line                         = SIP-VERSION SP STATUS-CODE SP Reasong-Phrase CRLF

Status-Code 是一个3位的数字result code,用来标志处理请求的一个结果。Reason-Phrase是一个简短的Status-Code的说明。Status-Code是为了能自动处理使用的,但是Reason-Phrase是用来给用户看得。一个客户端并不要求一定要显示或者解释这个Reason-Phrase。本文档建议输出这个reason-phrase,实现中可以选择其他文本,比如用请求包头中指定的合适语言来显示。

statuscode的第一个数字表示了应答的类型。接下来两个数字并不作分类使用。基于这个原因,任何status code100199的可以统称位”1xx应答,类似的,在200299的可以统称位”2xx应答,依此类推。SIP/2.0允许6类应答:

1xx:临时应答-请求已经接收,正在处理这个请求。

2xx:成功处理-请求已经成功接收,并且正确处理了这个请求。

3xx:重定向-还需要附加的操作才能完成这个请求,本请求转发到其他的服务器上处理。

4xx:客户端错误--请求包含错误的格式或者不能在这个服务器上完成。

5xx:服务器错误-服务器不能正确的处理这个显然合法的请求。

6xx:全局错误-请求不能被任何服务器处理。

21节定义了详细的代码说明。


阅读(1881) | 评论(0) | 转发(0) |
0

上一篇:SDP协议介绍

下一篇:SIP RFC中文文档5-1

给主人留下些什么吧!~~