一个用户代理代表了一个终端系统:
包含一个用户代理客户端(UAC)用来产生请求,一个用户代理服务端(UAS)用来响应请求
合法SIP请求必须包含如下头域:
(在DAY01中也有过介绍https://blog.csdn.net/qq_32019929/article/details/100164420)
TO:第一个/最先指定请求的“逻辑”接收地,请求的用户或者资源的记录中的地址
FROM:请求发起者的逻辑标志
Cseq:区分事务顺序
Call-ID:区分消息
Max-Forwards:限制目的地中间得跳转次数
Via:传输到的设备的地址,标志应答回送的地址
【以上6个是基本组成部分】
Contact:提供访问后续请求的特定用户事务实例的联系方法(SIP或者SIPS URI)
Supproted:说明UAC支持服务端响应请求的SIP扩展
Require:要求UAS服务端能处理请求所需的扩展
Proxy-Require:经过的代理所需提供支持的扩展
应答处理
应答首先被transport层(运输层)处理,然后发送给上一层transaction层(业务层)处理
某些情况从transaction层收到一个timeout错误的时候,必须将这个timeout错误当做是收到了一个状态码是408(请求timeout)的应答,如果是transport层报告错误,必须把这个错误当做是状态码503(服务未提供)的错误
如果在应答中,有不止一个Via头域值存在,那么UAC应该丢弃这个消息