SIP 代理和路由
我们知道,代理服务器可以是无状态的或有状态的。在本章中,我们将讨论更多关于代理服务器和SIP路由。
无状态代理服务器
无状态代理服务器简单地转发它接收的消息。这种服务器不存储任何呼叫或交易的信息。
- 无状态代理一旦转发就忘记SIP请求。
- 事务将通过无状态代理快速。
状态代理服务器
状态代理服务器跟踪它接收的每个请求和响应。如果需要,它可以使用未来存储的信息。如果它没有从另一方接收到响应,它可以重传请求。
状态代理在转发请求之后记住请求,因此它们可以使用它来提前路由。状态代理维护事务状态。事务意味着事务状态,而不是调用状态。
事务不像无状态的状态代理那么快。
如果需要,状态代理可以分叉和重传(例如,例如呼叫前转忙)。
Via和记录路由
记录路由
记录 - 路由报头被想要在相同呼叫id的后续请求的路径中的代理插入到请求中。然后由用户代理使用它来路由后续请求。
Via
Via头由服务器插入请求以检测循环并帮助响应找到他们的方式回到客户端。这有助于只有响应到达其目的地。
UA自己在发送请求时在Via报头字段中生成并添加其自己的地址。
转发请求的代理将Via头字段包含其自己的地址添加到Via头字段列表的顶部。
生成对请求的响应的代理或UA将请求中的所有Via报头字段按顺序复制到响应中,然后将响应发送到在顶部Via报头字段中指定的地址。
接收响应的代理检查顶部Via头字段并匹配其自身的地址。如果不匹配,则响应已被丢弃。
然后删除顶部Via头字段,并将响应转发到在下一个Via头字段中指定的地址。
Via头字段包含协议名,版本号和传输(SIP / 2.0 / UDP,SIP / 2.0 / TCP等),并包含端口号和参数,如received,rport,branch。
如果UA或代理从与在顶部Via头字段中指定的地址不同的地址接收到请求,则将所接收的标签添加到Via报头字段。
分支参数通过UA和代理被添加到Via报头字段,其被计算为Request-URI的哈希函数,以及To,From,Call-ID和CSeq数。