The first digit of a Status-Code defines the category of response. So any response between 100 and 199 is termed as a "1xx" response and so is done for any other type. SIP/2.0 allows six types of response. They are similar to those of HTTP.
- 1xx: Provisional -- request received, continuing to process the request;
- 2xx: Success -- the action was successfully received, understood, and accepted;
- 3xx: Redirection -- further action needs to be taken in order to complete the request;
- 4xx: Client Error -- the request contains bad syntax or cannot be fulfilled at this server;
- 5xx: Server Error -- the server failed to fulfill an apparently valid request;
- 6xx: Global Failure -- the request cannot be fulfilled at any server.
If a response is received having a Status-Code of the form yxx which is not understood by the receiving party, it treats the response as a y00 response i.e. if a client receives an unknown response 345, it treats that as a 300 response. An unknown 1xx is treated as 183 (Session in Progress). So each UA must know how to react to 100,183,200,300,400,500 and 600.
In SIP we talk about calls, dialogs, transactions and messages. Frankly, I was pretty confused initially about how they are related. The next page clarifies their inter-relation.