事物(二)之客户端事务应答匹配

来源:互联网 发布:电路分析仿真软件 编辑:程序博客网 时间:2024/06/13 03:13

当客户端事务的通讯层,收到一个应答,他必须决定是否由客户端事务来处理这个应答。在Via头域的最上边的branch参数就是用来做这个的,但前提是branch的参数以z9hG4bk开头。一个应答和一个客户端事务匹配的话,就有两个条件:

1 应答Via最上边的branch参数和创建这个客户端事务的请求的Via最上边的branch参数相同。

2 Cseq头域的方法参数和创建事务的请求的方法相同。这是因为CANCEL方法的事务和原请求的事务不同,但是却有相同的branch参数所决定的



INVITEsip:39008845@192.168.11.60:5060;transport=udp SIP/2.0

Via: SIP/2.0/UDP192.168.11.122:5060;rport;branch=z9hG4bK498530511

From: "1003"<sip:1003@192.168.11.60:5060;user=phone>;tag=2110880605

To:<sip:39008845@192.168.11.60:5060>

Call-ID: 532695668@192.168.11.122

CSeq: 15INVITE

Contact: <sip:1003@192.168.11.122:5060>

Max-Forwards: 30

Allow: INVITE, ACK, BYE, CANCEL,OPTIONS, NOTIFY, REFER, REGISTER, MESSAGE, INFO, SUBSCRIBE

 

SIP/2.0 100 Trying

Via: SIP/2.0/UDP192.168.11.122:5060;rport;branch=z9hG4bK498530511

From: "1003"<sip:1003@192.168.11.60:5060;user=phone>;tag=2110880605

To:<sip:39008845@192.168.11.60:5060>;tag=302986f72

Call-ID: 532695668@192.168.11.122

CSeq: 15INVITE

Contact:<sip:39008845@192.168.11.60:5060>

 

 

SIP/2.0 180 Ringing

Via: SIP/2.0/UDP192.168.11.122:5060;rport;branch=z9hG4bK498530511

From: "1003"<sip:1003@192.168.11.60:5060;user=phone>;tag=2110880605

To:<sip:39008845@192.168.11.60:5060>;tag=302986f72

Call-ID: 532695668@192.168.11.122

CSeq: 15INVITE

Contact:<sip:39008845@192.168.11.60:5060>

Require: 100rel

RSeq: 1318603361

Content-Length: 0

 

SIP/2.0 200 OK

Via: SIP/2.0/UDP192.168.11.122:5060;rport;branch=z9hG4bK498530511

From: "1003"<sip:1003@192.168.11.60:5060;user=phone>;tag=2110880605

To: <sip:39008845@192.168.11.60:5060>;tag=302986f72

Call-ID: 532695668@192.168.11.122

CSeq: 15 INVITE

Contact:<sip:39008845@192.168.11.60:5060>

 

ACK sip:39008845@192.168.11.60:5060SIP/2.0

Via: SIP/2.0/UDP192.168.11.122:5060;rport;branch=z9hG4bK725308317

From: "1003"<sip:1003@192.168.11.60:5060;user=phone>;tag=2110880605

To:<sip:39008845@192.168.11.60:5060>;tag=302986f72

Call-ID: 532695668@192.168.11.122

CSeq: 15ACK

Contact:<sip:1003@192.168.11.122:5060>

Max-Forwards: 30


注意:终结应答是2xx时,ACKINVITE属于不同的两个事务, ACK不认为是INVITE事务的一部分,作为单独的一个事务。终结应答非2XX时,事务还包括一个ACK,此时ACKINVITE属于一个事务。

0 0