RFC 3261 SIP协议----UAS行为
来源:互联网 发布:什么牌子油烟机好 知乎 编辑:程序博客网 时间:2024/05/21 10:34
当UAS收到一个request的时候,它要安装如下的顺序进行处理这个request:
Method Inspection:
当一个已经鉴权的方法发送到UAS的时候,它首先要检查这个request的方法,如果方法不支持,则返回405应答。在这个返回的405应答中,UAS添加了一个allow头域,包含了UAS支持的方法。
如果UAS支持接受到的request的方法,处理继续进行。。。。
Header Inspection:
当UAS对接收到的request进行头域检查的时候,如果发现不支持的或者是有缺陷的头域只要是不应该UAS的正常处理流程,那么这些错误可以忽略掉。
处理继续中。。。。
To and Request-URI
To头域标明了request的最终接受者,如果UAS不是这个To头域指明的最终接受者,那么UAS可以选择转发或则是拒绝这个request,如果拒绝那么发送403应答。
但是,如果To的request-uri,UAS不支持无法解析,那么就必须拒绝这个request,并返回416应答。
Merged Requests
Require
如果之前的检查全部通过,那么UAS就会检查require头域,require头域是用来说明UAS用什么方式来扩展这个request的。
Content processing
UAS还需要检查头域描述的消息体部分,如果UAS并不支持消息部分的类型(Content-Type),语言(Content-language),编码(Content-Encoding)等,那么UAS必须回应一个415应答,并且携带响应的支持的类型列表。
Applying Extensions
Processing the Request
需要出的Request包括invite、register、cancel、以及bye等。后续会接着说明。
generating the response
产生一个临时应答:在很多情况下,非invite的request是不需要产生应答的,如果服务器作为路由功能对invite方法要产生一个100trying的应答。产生了一个100Trying的应答后,任何时间戳相关的头域都要复制到100Trying这个应答中,时间戳头域的域值要与之前的域值存在着一定的时间差,不能相同,时间戳的计时单位是秒。
头域与tag:From、Call-ID、Cseq、Via(顺序必须相同)这些request的头域值要全部拷贝到UAS的response中,需要注意的是To头域,如果To头域存在一个tag,那么UAS的应答消息中,To头域也应该带有一个tag,而且这个tag的值要与request的相同。如果To头域不存在tag,那么在UAS的应答消息中,To由于要添加上这个新的tag值(100Trying消息除外),对于同一个请求来说,所有应答与请求必须具有同一个tag。(tag的细节问题之后会有讨论)。
Stateless UAS Behavior
无状态sip服务器指的是:服务器可以正常转发和接收request,一旦处理完成后不保存任何这个request的相关状态。例如,无状态sip服务器接收了一个重发的request请求,无状态服务器会当成一个新的请求来处理,在重新发送一个应答给UAC。
相同的请求,两次都会产生两个相同的应答,这个就是无状态服务器的特点。
- RFC 3261 SIP协议----UAS行为
- RFC 3261 SIP协议-----sip协议构成
- SIP RFC 3261
- Sip UAS 的处理流程
- UAC/UAS & sip domain设置
- RFC3261 sip协议---UAC行为详解
- RFC3261 SIP协议---proxy的代理行为
- rfc 3265 基于SIP协议的事件通知框架
- SIP RFC 3261 中文文档(RFC3261)
- RFC学习笔记 -- 5245 ICE & 3261 SIP
- RFC 3261 SIP(1-6)
- SIP related RFC
- SIP 及相关RFC
- SIP RFC 类别汇总
- sip 相关 rfc 列表
- SIP相关RFC
- SIP-T - SIP Mechanisms Required - RFC 3398
- SIP Standards(SIP相关RFC文档)
- android的 color.xml
- const void *a 与 void* const a
- github资源
- 2015.4感悟
- 2 用make命令进行程序编译
- RFC 3261 SIP协议----UAS行为
- Java设计模式透析之 —— 模板方法
- [转]Java中类名与文件名的关系
- 齐次坐标的理解
- 使用JSONObject类转换字符串含有集合类型的属性 JSON字符串转换object错误:MorphDynaBean cannot be cast to com.softright.bean.Tes
- Github使用教程for windows 零基础使用说明
- 如何配置WpdPack
- GitHub入门教程
- 【Node.js基础篇】(八)安装Express 3.2框架以及ejs模板