SIP 的一次通话,可以通过 From, To, Call-ID 三元组来区分。但是,为什么 From 和 To 不用固定的地址,而要在地址后面加上 tag=随机数
呢?
tag 的目的是为了解决自己给自己打电话的问题(Hairpinning)。如果你自己给自己打电话,那么你应该有两个 Session,但是,如果 From 和 To 是固定的,你就无法区别这两个 Session 哪个是 caller 哪个是 callee。发送 INVITE 时,caller 会在 From 中带有 tag=随机数
,而 callee 发送响应时,在 To 后面补充 tag=随机数
,不同的随机数分别表示 caller 和 callee。
所以,RFC 3261 中说:
The combination of the To tag, From tag, and Call-ID completely defines a peer-to-peer SIP relationship...
用的是 From tag 和 To tag,而不是用 From 和 To。