SIP is a text-based protocol with syntax much like the Hyper-Text Transfer Protocol (HTTP) and Real-Time Streaming Protocol (RTSP). A SIP INVITE request looks something like this:
Typically the payload is an SDP description of the session the caller wishes to set up. The Via fields indicate the path taken by the request through proxies so far, with the first via field indicating the most recent proxy traversed and the last one indicating the caller's host. In this case Eve sent the message from chopin.cs.caltech.edu, it has traversed isi.edu and east.isi.edu, and is currently being sent to north.east.isi.edu as indicated in the request URL.
A response to this message indicating that mjh does want to talk might look like:
The response code 200 indicates success (many other response codes are possible). When north.east.isi.edu sent this response, it removed the first via field (east.isi.edu) and then sent the response to east. In this way the response retraces the path through a chain of proxies that the request took.
SIP supports several request methods as shown below. The use of INVITE, BYE, ACK and REGISTER methods is shown in figures 6.3 to 6.6.
Invite the callee into a session
Discover the capabilities of the receiver
Terminate a call or call request
Terminate incomplete call requests
Acknowledge a successful response
Register the current location of a user
In response to a request, a server sends a SIP response which gives a response code indicating how the request was processed. Response codes are divided into six categories depending on the general form of behaviour expected. These categories are shown below.
Information about call status
Redirection to another server
301 MOVED TEMPORARILY
Client did something wrong
Server did something wrong
500 INTERNAL SERVER ERROR
Global failure (don't resend same request)
606 NOT ACCEPTABLE
The normal progress of a SIP call involves sending an INVITE request, getting a 180 RINGING response, followed by a ``200 OK'' response when the callee answers, then sending an ACK request to confirm the connected call.
After either party hangs up, a BYE request is sent, which elicits a ``200 OK'' response, which in turn causes a final ACK request to be sent.
This whole process in illustrated in figure 6.5.
The CANCEL method is used when a call is made to more than one destination at the same time. For example, a proxy server may respond indicating that someone might be at one of server locations. My client can either call these one-by-one, or call all of them simultaneously. If it does the latter, then when the callee answers at one of these locations, my client sends a CANCEL request to all the other locations to stop the phone (or whatever it is) ringing there.
Next: SIP Reliability Up: Section Initiation Protocol (SIP) Previous: Section Initiation Protocol (SIP) Jon CROWCROFT