当服务端从网络上收到一个请求以后,他必须和现有的事务进行判定。这个是根据下边的规则来判定的。
首先要检查请求中的Via头域的最上branch参数。如果他以z9hG4bk开头,那么这个请求一定是由客户端事务根据本规范产生的。因此,branch参数在该客户端发出的所有的事务中都是唯一的。根据下列规则我们可以判定请求是否和事务匹配:
1、 请求中的最上的Via头域的branch参数和创建本事务的请求的最上的Via头域的branch参数一样。
2、 请求的最上的Via头域的sent-by参数和创建本事务的请求的最上的Via头域的send-by参数一样。
3、 请求的方法和创建本事务的方法一样。这有一个例外,就是ACK,ACK对应的创建本事务的请求方法是INVITE
REGISTERsip:ims1.fj.chinamobile.com SIP/2.0
Via: SIP/2.0/UDP192.168.11.60:5060;branch=z9hG4bK2bd3cbe6
From:<sip:+865939008847@ims1.fj.chinamobile.com>;tag=444e8c67
To:<sip:+865939008847@ims1.fj.chinamobile.com>
Contact:<sip:+865939008847@192.168.11.60:5060>
Call-ID: Anta1380089120000200090839d978@192.168.11.60
CSeq: 5REGISTER
Expires: 120
Max-Forwards: 70
SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP192.168.11.60:5060;branch=z9hG4bK2bd3cbe6