Difference Between SIP and XMPP Jabber
For sending voice or IM through internet we use application layer protocols known as SIP and XMPP. RFC 3621 defines SIP while RFC 3920 defines XMPP. IM and Presence developed XMPP whereas Voice and Video over IP evolved SIP. An extension known as Jingle was added by XMPP for the purpose of session negotiation and another one known as SIMPLE was added by SIP to uphold IM and Presence.
SIP is known as Session Initiation Protocol. This application layer protocol helps in setting up, amending and concluding multimedia sessions like VoIP calls. It also supports multicast conferencing in which it can invite new sessions to already existing ones. It takes care of call establishment, call control and call ending and generating Call Detail Record (CDR) for the purpose of billing and hence we refer to it as signaling protocol in the environment of VoIP.
The full form of XMPP is Extensible Presence Protocol and it is an open Extensible Markup Language protocol used for real time messaging, presence and request response services. It was created in 1999 by Jabber open source community. The XMPP group created an adaptation of Jabber Protocol in 2002 that suited IM.
Though both of these involve different things like SIP involves session establishment and XMPP involves structured data exchange but they are similar in the sense that both created SIMPLE and Jingle that has same functionality.
Session establishment, modify and termination is provided by SIP while streaming pipe for structured data exchange amongst client groups is provided by XMPP. The request response protocol in SIP is text based while XMPP is XML based client server architecture.
The signaling messages in SIP are sent through SIP headers and body while those in XMPP pass through streaming pipe. Requests, response, indications or errors are sent by XMPP with XML through streaming pipe. SIP makes use of UDP, TCP and TLS while only TCP and TLS are used by XMPP. The user agent in SIP is able to send or receive messages and can be a server as well as a client but in XMPP the client can only start requests to the server. Hence it works with NAT and Firewall. Implementation is easy in both. Comparing the two is like comparing two different fruits together as different purposes are served by the core protocols.