SIP vs XMPP (Jabber)
SIP and XMPP are application layer protocols mostly used to send voice or IM over Internet. SIP is defined by RFC 3621 and XMPP is defined in RFC 3920. Basically XMPP is evolved from IM and Presence, whereas SIP evolved from Voice and Video over IP. XMPP added an extension called Jingle for session negotiation and SIP added an extension called SIMPLE to support IM and Presence.
SIP (Session Initiation Protocol)
Session Initiation Protocol (SIP) is an application layer protocol used to establish, modify and terminate multimedia sessions such as VoIP Calls. SIP also can invite new sessions to existing sessions such as multicast conferences. Basically it’s referred as signalling protocol in VoIP environment that can handle call establishment, call control and call termination and generating CDR (Call Detail Record) for billing purposes.
XMPP (Extensible Messaging Presence Protocol)
XMPP is an open Extensible Markup Language (XML) protocol for real time messaging, presence and request response services. Originally it was developed by Jabber open source community in 1999. In 2002 the XMPP working group developed adaptation of Jabber Protocol that is suitable for IM (Instant Messaging).
Difference Between SIP and XMPP
We just can’t compare SIP and XMPP because both serve different purposes like session establishment and structured data exchange respectively. But introduction SIMPLE and Jingle introduces some similar functionalities.
(1) SIP provides session establishment, modify and termination but XMPP provides streaming pipe for structured data exchange between group of clients.
(2) SIP is text based request response protocol and XMPP is XML based client server architecture.
(3) SIP signalling messages go via SIP headers and body whereas in XMPP messages passes via streaming pipe. XMPP sends request, response, indication or error using XML via the streaming pipe.
(4) SIP runs over UDP, TCP and TLS whereas XMPP uses TCP and TLS only.
(5) In SIP, user agent could be server or client hence user agent can send or receive messages whereas in XMPP client only initiates requests to server so it will work with NAT and Firewall.
(6) Both SIP and XMPP are easy to implement.
Technically comparing SIP and XMPP is like comparing apples and oranges because the core protocols serve different purposes: session rendezvous/establishment vs structured data exchange