XMPP is a real-time messaging protocol that allows clients to exchange messages and presence information over XML streams. It provides a bidirectional communication channel that servers can use to push updates to clients, avoiding the need for polling. XMPP defines core semantics for establishing streams, authenticating users, and sending message and presence stanzas. These can be extended through XMPP Extension Proposals to support new use cases like voice calls, file sharing, and building web services that communicate in real-time. Popular applications of XMPP include instant messaging, chat applications, and Comet-style web APIs.