Saturday, May 15th, 2021.
A response belongs to the same transaction as a request if the two following conditions are met:
1. Both request and response have the same value as the "branch" parameter in the top Via header field.
2. Both request and response have the same value as the "method" parameter in the Cseq header field.
(The method is needed because a CANCEL request constitutes a different tranaction, but shares the same
value as the "branch" parameter of the request that it cancels.
How to identify a sip dialog?
"Dialogs are identified at each UA (local and remote) with a dialog ID.
The dialog ID consists of a call-identifier value, a local tag, and a
remote tag. The Call-ID is the same in both User Agents, and the local
tag in a UA is identical to the remote tag in its peer.
Dialog identification is carried in the signaling, and so, by looking at
the content of a SIP message, the UAS can learn to which dialog the
message pertains." Perea
How do you tell if sip session is considered early dialog?
If response to INVITE is 1xx(provisional) and it contains a tag parameter in To, the session has not been establiished, but dialog has.
Such dialog is said to be early state. If 2xx (OK) is received with tag in To then dialog is confirmed.
If a number of route headers are contained in sip request message, which route header is used? (top or bottom?)
If the request message contains one or more Route headers, then use the topmost Route header to determine the next hop (address + transport) for the message.
If the request message contains no route headers, then use the R-URI to forward the message. Through use of Route headers, the routing of a request message is done w/o affecting the destination of the message, provided that loose routing is applied.