SIP (Session Initiation Protocol) SIP is an application-layer control (signaling) protocol for creating, modifying and terminating sessions with one or more participants. These sessions include Internet multimedia conferences, Internet telephone calls and multimedia distribution. SIP originates from Mbone set of utilities and protocols. Mbone (multicast backbone) was an multicast network over Internet in order to distribute multimedia content. This was also basically a session initiation protocol. So in 1999 SIP was approved as an official standard and RFC2543 was published. SIP has some important features like scalability, interoperability, extensibility, flexibility and providing mobility. SIP can be used not only for Internet telephony; it can also convey instant messages, jpegs and other MIME types. In the life cycle of a SIP based session the very first thing is to initiate a session. It can also modify and end a session. In order to initiate a session SIP has to locate the user first. The user can use different computers on different places so first it has to find the user. After finding the user SIP delivers a description of the session in order to inform the user. SIP just conveys the descriptions it doesn’t know anything about the session itself. The most common protocol to describe sessions is the Session Description Protocol (SDP, RFC 2327). After locating the user and conveying the description of the session SIP conveys the response of the user. The user can for example accept, reject, and forward the session. If the session is accepted then an active session has been initiated. After the initiation of the session SIP can also modify the session by sending a new description. SIP is based on the request-response paradigm. It has some methods with which SIP can manage the sessions. The methods are Invite, Ack, Bye, Cancel, Options and Register. The Invite method indicates that the user is invited to a session. A session description is also included in the message body. Ack method is used to confirm a session establishment. This method can only be used with Invite requests. Bye method terminates the sessions. Cancel method is used to cancel a pending Invite. The Options method is used to query the server for its capabilities. The Register method is used to bind a permanent address to the current location of the user. It may also convey the user data with the CPL scripts. In order to establish sessions first the caller has to send an Invite to the user with whom the caller wants to talk to. This request is sent to the address of the user. The addresses in SIP are like mailto URLs. For example if the caller wants to talk to the user yalcinkayas@yahoo.com then the SIP address for the user is sip:yalcinkayas@yahoo.com. When the Invite message is sent to the user then the user back a response. For example when the user sends an Ack then the session is established. In SIP there is also response codes. These codes means different things: - 1yz Informational Responses o 100 Trying o 180 Ringing o 181 Call is being forwarded - 2yz Success o 200 OK - 3yz Redirection o 300 Multiple Choices o 301 Moved Permanently o 302 Moved Temporarily - 4yz Client Error o 400 Bad Request o 401 Unauthorized o 482 Loop Detected o 486 Busy Here - 5yz Server Failure o 500 Server Internal Error - 6yz Global Failure o 600 Busy Everywhere The messages in SIP are not directly sent to the user. They are sent to proxy server, which are responsible for routing and delivering messages to the called party. The proxy servers relay call signaling. There are several types of proxy servers, like Call-stateful, transaction-stateful and stateless proxies. Call-stateful proxies track call state and provide a lot of services but they are not so fast. Transaction-stateful proxies track the requests and responses but not the call state or session. Stateless proxies just receive requests, forward them and forget them. So they are very fast but provide few services. Proxy servers also provide forking, which is used for trying different locations for a request. There are also Redirect Servers. These servers redirect the requestor to the other servers instead of forwarding them. Redirection is useful if a user moves or changes the provider. There are also SIP Registrars, which accept registration requests of the users. In SIP the addresses are like email addresses. So the resource can be found through a DNS server because the email address includes the domain name of the user. But there will be a problem if you try to connect to a user by just knowing his/her telephone number. In order to overcome this problem the ENUM is planned. Its basic idea is to enter the unique telephone numbers to the Internet DNSs, in order to reach the resources of this telephone number. For example a SIP phone or proxy server can do the number domain translation and then reach the user by normally applying the SIP procedures. But there are a lot of normal and simple PSTN telephones. These numbers will not be in the DNSs. So in order to contact them a telephone gateway must be used which connects to the PSTN. There is also another protocol called TRIP, which is related with these concepts. TRIP means telephony routing over IP and is being developed by the IPTEL work group in the IETF. TRIP servers maintain and exchange information on what gateways are available to establish calls to ranges of telephone numbers. It allows multiple service providers to route calls through each other’s gateways.