通用用户代理行为——SIP学习笔记(五)

用户代理(UA)表示一个终端系统,包括UAC和UAS。

UAC:用户代理客户端是一个逻辑实体,它创建新请求,然后使用客户端事务状态机发送请求,该角色仅存在于事务期间;

UAS:用户代理服务器是一个逻辑实体,它产生SIP请求的响应。响应接受、拒绝和重定向请求。该角色仅存在于事务期间。

UAC和UAS过程取决于两个因素:

(1) 请求或者响应是在对话内部还是外部;

(2) 请求的方法。

UAC行为(对话外)

1、生成请求

UAC制定的有效的SIP请求,必须至少包括六个头字段:To、From、Cseq、Call-ID、Max-Forwards和Via。它们共同提供大部分关键性消息路由服务,包括消息的寻址、响应的路由、限制消息的传播、消息的排序和事务的唯一标识符。

扫描二维码关注公众号,回复: 3791404 查看本文章

Supported and Require:

如果UAC支持SIP扩展,服务器可将此扩展用于响应,UAC应该在请求中引用Supported头字段,列出这些可选的标签。

如果UAC坚持要UAS理解,UAC为处理请求而用于请求的扩展,它必须在请求中插入Require头字段,列出这些扩展的可选标签。如果UAC希望将扩展用于请求中,并坚持它所要经历的任何代理都可以理解这些扩展,它必须在请求中插入Proxy-Require头字段,列出这些扩展的可选标签。

和Supported头字段一样,Require和Proxy-Require头字段中可选的标签必须仅仅引用标准协议栈RFC中定义的扩展。

2、发送请求

3、处理响应

响应最初是在传输层处理,然后传输到事务层。事务层完成其处理,然后将响应传输到TU。TU的大多数响应处理是指定方法的。

如果在响应中存在不止一个Via头字段,那么UAC应该丢弃这些消息。

UAS行为

请求处理是原子(atomic)的,如果接受请求,所有与其相关的状态改变必须执行。如果拒绝请求,所有的状态改变都不执行。

1、方法检查

一旦通过了认证(或者跳过认证),UAS必须检查请求的方法。UAS必须为405(方法不允许)响应添加Allow头字段。Allow头字段必须列出UAS生成消息支持的方法集合。

2、头检查

UAS应该忽略任何在处理请求中非必需的、非格式化的头字段。

Require:UAC使用Require头字段告诉UAS——为了正确的处理请求,UAC希望UAS支持的SIP扩展。如果UAS不理解Require头字段中列出的可选标签,它必须返回状态代码420(错误的扩展)。UAS必须添加Unsupported头字段,并列出请求的Require头字段中它不理解的选项。

SIP CANCEL或者发送非2XX响应的ACK请求中,不能使用Require和Proxy-Require。如果在请求中出现了这些头字段,必须忽略它们。

发送2XX响应的ACK请求,必须仅包含在初始请求中出现的Require和Proxy-Require值。

3、内容处理

4、应用扩展

5、处理请求

6、生成响应

猜你喜欢

转载自blog.csdn.net/keyanting_2018/article/details/81707294