A transaction is identified by the branch, and a retransmission repeats that branch instead of starting a new one.
The branch parameter identifies the transaction. An implementation of RFC 3261 starts it with z9hG4bK and makes the rest unique across space and time. A retransmission sends the same request again, including that branch.
CANCEL is an exception: it uses the same branch as the INVITE it cancels. The ACK for a non-2xx final response uses that same branch too. The ACK for a 2xx does not. It is a different transaction, so it gets a new branch.
On UDP the client starts in Calling, retransmits at T1 doubling, and starts Timer B at 64 times T1. A provisional response moves it to Proceeding and stops those retransmissions. If Timer B fires, the client must not invent an ACK.
The overview in section 17 calls INVITE a three-way handshake. RFC 6026 corrects the 2xx path: the transaction user sends the end-to-end ACK, and the transaction layer absorbs late 2xx responses. The non-2xx ACK is still generated hop by hop inside the INVITE transaction.
Room: Transactions and the branch cookie
© 2026 CypherMonkeyLabs 🐒