SIP protocol structure through an example
(3 of 20)
SIP INVITE request (with credentials)
from Alice's UA to Proxy1
At Initiating UA:
The UAC (User Agent Client) TU:
creates the new INVITE request containing the correct credentials
creates a new client transaction and passes it the INVITE message, plus the IP address, port and transport
The new "INVITE" client transaction (state="calling") is identified by CSeq header field and "branch" parameter of Via header field. T1 timer started (if UDP) before passing message request to transport. When receiving 1xx response: state="proceeding" and T1 reset.
Client: (1) before sending a request: insert 'sent-by' parameter in Via header field (2) when receiving a response: match it to relevant client transaction by examining 'sent-by' parameter in top Via header field.
At Proxy 1:
Server: (1) when receiving a request: by examining 'sent-by' parameter in top Via header field, match it to relevant server transaction + add "received" parameter; (2) before sending a response: retrieve IP@ and port from 'sent-by' and "received".
The new "INVITE" server transaction (identified by CSeq header field and "branch" parameter of Via header field) is created by proxy core (not acting as TU). The server transaction sends back a 100 Trying response and transmits the INVITE request to proxy core (acting as TU).
The proxy core TU: (1) validates the request; (2) determines the target for the request; (3) forwards the request (see next slide) towards the target.