此示例是基本的SIP四边传输,U1-P1-P2-U2,使用代理进行传输。 接下来是过程。
U1发送:
invites IP : callee @ domain.comsip/2.0
contact : sip : caller @ u1.example.com
发送到P1,P1的是目的地的代理。 因为P1不管辖domain.com,所以我会找到DNS并将请求发送到那里。 Record-Route标头字段的值也被添加。
invites IP : callee @ domain.comsip/2.0
contact : sip : caller @ u1.example.com
记录路由:
P2我收到了这个请求。 因为这是domain.com,所以找到位置服务器并重写Request-URI。 Record-Route标头字段的值也被添加。 由于请求没有Route头域,因此请分析新的Request-URI以确定将请求发送到何处。
invites IP : callee @ U2.domain.comsip/2.0
contact : sip : caller @ u1.example.com
记录路由:
记录路由:
u2.domain.com上的被叫方接收该请求并返回200OK响应:
SIP/2.0 200 OK
contact : sip : callee @ U2.domain.com
记录路由:
记录路由:
作为u2的调用方并设置对话状态的远程目标uri如下:
sip: caller@u1.example.com及其路由集合如下:
()、) )。
它从P2通过P1传输到U1。 当前,U1设置其交互状态的远程目标uri是sip:calle@u2.domain.com,其根集合如下:
()、) )。
U1将创建最后一个BYE请求,因为所有路由元素都包含lr参数。
bye sip : callee @ U2.domain.comsip/2.0
:号公路,
使用DNS分析顶级Route标头字段的URI值,以确定将此请求发送到何处,以便所有其他节点(包括proxy )执行。 这个送到了P1。 由于发现用P1请求uri标记的uri不是负责的域,因此不更改此请求uri。 然后,它发现它是Route头域的第一个值,并将其从Route头域中删除,然后将此请求转发到P2。
bye sip : callee @ U2.domain.comsip/2.0
路由:
P2还发现自己不是负责此Request-URI的域(P2负责的是domain.com而不是u2.domain.com),而P2不会改变它。 它自己看到Route的第一个值,将其删除,传输到u2.domain.com (根据在Request-URI中搜索DNS )。
bye sip : callee @ U2.domain.comsip/2.0
1.3.3改写记录路径头字段的值