sip初学者11问

8 篇文章 1 订阅
5 篇文章 0 订阅
1.头域via的作用?
答:发送方发出来的请求,每经过一个代理,代理服务器都会将自己的sip URI记录到via头域中,这样对于该请求的应答就可以通过这些via中的记录返回到请求的发送方。

2.头域中Record-Route的作用?
答:一些请求( 比如应答) 的包头中包含了他们必须经过的proxy的记录,,这些记录用sip或sips URI表示,这些记录称为Record-Route。对话外的请求包含的是 Record-Route,对话内的请求包含的是 Route set(因为对话内已经确定完整的路由)。

3.via、Route与Record-Route的区别?
答:via中的记录是为了让请求的应答能够原路返回,而Record-Route的作用是告诉发送方按照invite建立好的这条通道来发送后续的请求。
要彻底明白三者之间的区别,首先得特别明确的知道三者的定义是什么(rfc3261中)?
via:
The Via header field indicates the path taken by the request so far and indicates the path that should be followed in routing responses. The branch ID parameter in the Via header field values serves as a
transaction identifier, and is used by proxies to detect loops.

Route
The Route header field is used to force routing for a request through   the listed set of proxies. Examples of the use of the Route header   field are in Section 16.12.1.

Record-Route:
The Record-Route header field is inserted by proxies in a request to   force future requests in the dialog to be routed through the proxy.
简单来说,via的作用就是标记请求所经过的节点,好让其对应的响应能按照via标记好的路径返回回去;
Route的作用是强制请求必须从Route set中设定的节点通过,Route的生成可以是手动配置也可以是协议自己生成,需要手动配置的情况如,客户端向registar注册的时候,registar的路径就应该是通过手动配置,协议自己生成的情况如在对话生成前各个proxy往请求中添加 Record-Route为了让后续的请求能继续通过该proxy,当对话建立好后就确定了后续的请求该走的路由,之后将 Record-Route中的记录登记在Route中来强制请求的路由。
Record-Route的是各个想在后续请求对话中还接收请求和应答的Proxy,将自己的地址信息添加在Record-Route中来帮助协议生成最终的Route set(也就是为什么说对话中的请求和应答包含的是Route-set,对话外的请求包含的Record-Route的原因,Route set用在对话外的情况就是在注册时客户端最初不清楚该往哪里去注册,需要手动配置,总之一句话,Route set的作用就是强制让请求通过其包含的路由列表传输请求和应答)。

4.呼叫建立后,后续的请求是如何找到最初建立呼叫时的顺序?
答:在Record-Route中有记录,对话会依据 Record-Route建立route set, 后续的请求中都包含route set 来强制请求的路由途径,参见问题3

5.同一个呼叫中的不同UA之间的dialog是同一个dialog吗?
答:视具体的设计而定,如果是B2BUA代理方式就不是同一个dialog;如果不是B2BUA代理方式的话就是同一个dialog。

6.outside dialog request与inside dialog request?
答:outside dialog request是在dialog还没有建立的时候发送的请求,而
       inside dialog request 指的是,dialog已经建立,在dialog中发送的请求。

7.从Contact address到ip的路由信息怎么建立,是sip协议栈建立还是其他层建立,比如网络层或者数据链路层?
答:这是location server服务器的工作任务,属于应用层功能。

8.Dialog什么时候建立?
答:对UAS而言:只有当请求是Invite并且UAS生成了response,且该响应值是200或者101~199,且响应中包含To tag标记的时候才会建Dialog(rfc3261,p70, s12.1)。每个Dialog都会建立一个Dialog State,这个Dialog State会一直保持直到Dialog结束。

9.transaction什么时候建立?
答:只要有请求到达就会建立transaction。

10.Dialog和transaction之间的关系是什么?
答:没什么关系,Dialog是用来维护两个UA之间的关系的,而transaction是用来过滤请求的,有点类似于秘书的功能。transaction包括一个请求和对这个请求的所有应答。


11.Via 头和 Contact 头有什么区别?

via的作用是告诉其他实体将对该请求的响应发送到哪里?而Contact的作用是告诉其他实体后续如果想给该实体发送请求该往哪里发。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

heibao111728

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值