정보통신
XMPP : XML 기반 실시간 메시지·프레즌스 교환 프로토콜
sidefill
2026. 10. 15. 20:31
반응형
XMPP(Extensible Messaging and Presence Protocol, 확장 가능한 메시징·프레즌스 프로토콜)는 XML을 기반으로 둘 이상의 개체 사이에 메시지와 접속 상태(Presence) 정보를 거의 실시간으로 주고받게 하는 개방형 프로토콜입니다. 이 글에서는 XMPP의 구조와 주요 기술, 특징, AMQP와의 차이를 정리합니다.
1. 주제
XMPP(Extensible Messaging and Presence Protocol, 확장 가능한 메시징·프레즌스 프로토콜)
2. 개요
인스턴트 메신저는 서비스마다 사용하는 방식이 달라 서로 다른 메신저 사이에 메시지를 주고받기 어려운 경우가 많았습니다. 이를 해결하려면 누가 접속해 있는지(Presence, 프레즌스)와 메시지를 주고받는 방법을 공통 규격으로 정할 필요가 있었습니다.
XMPP는 IETF가 정리한 인스턴트 메시징·프레즌스 요구사항(RFC 2779)을 바탕으로 표준화되었으며, 핵심 기능은 RFC 6120(XMPP Core)에, 메시징과 프레즌스 기능은 RFC 6121에 정의되어 있습니다.
3. 개념
- XML을 기반으로 구조화되고 확장 가능한 데이터를 거의 실시간으로 교환하며, 메시지(Message)와 프레즌스(Presence, 네트워크 접속 가능 여부 알림), 요청-응답(IQ)을 기본 기능으로 제공하는 분산 네트워크 기반의 개방형 프로토콜임
4. 개념도

5. 주요기술
| 기술 | 내용 |
| XML 스트림 | 개체 사이에 XML 요소를 주고받는 통로임. 스트림은 한 방향 전용이라 반대 방향으로 보내려면 응답 스트림을 따로 열며, 클라이언트-서버는 보통 하나의 TCP 연결에 스트림 두 개를 사용함 |
| 스탠자 (Stanza) |
XMPP가 주고받는 XML 단위이며 세 종류가 있음. message는 일반 메시지를 보내고, presence는 네트워크 가용성 정보를 알리며, IQ는 요청과 응답을 주고받음 |
| 서버 간 연동 (페더레이션) |
서버들이 서로 연결되어 분산 네트워크를 이룸. 서버는 받은 스탠자를 JID 주소를 기준으로 원격 서버나 연결된 클라이언트로 전달하며, 서버 간 통신 여부는 각 서버의 정책에 따름 |
| TLS·SASL 보안 | 연결 순서는 TCP, TLS, SASL, XMPP 순임. TLS로 채널을 암호화하고 SASL(Simple Authentication and Security Layer)로 인증하며, 클라이언트는 인증을 마친 뒤에야 스탠자를 보낼 수 있음 |
주소는 JID(Jabber ID, 예: user@example.com)로 표현함
6. 주요특징
| 특징 | 내용 |
| 개방형 표준 | IETF의 RFC 6120(코어)과 RFC 6121(메시징·프레즌스)로 정의된 개방형 프로토콜임 |
| 분산 구조 | 서버들이 서로 연결되는 분산 네트워크 구조로, 하나의 중앙 서버에 의존하지 않고 서버 사이를 연동함 |
| 근실시간 교환 | 구조화되고 확장 가능한 XML 데이터를 거의 실시간으로 교환함 |
| 프레즌스 지원 | 접속 가능 여부 같은 상태 정보를 구독한 상대에게 알려 줌 |
7. XMPP와 AMQP 비교
| 구분 | XMPP | AMQP |
| 표준화 | IETF RFC 6120, RFC 6121 | OASIS 표준(1.0), ISO/IEC 19464 |
| 구조 | 클라이언트-서버 구조이며 서버끼리 연동하는 분산 네트워크 | AMQP 0-9-1은 브로커를 중심으로 Publisher와 Consumer가 연결됨 |
| 라우팅 방식 | 서버가 스탠자를 JID 주소 기준으로 전달함 | AMQP 0-9-1은 Exchange가 Binding 규칙에 따라 Queue로 라우팅함 |
| 메시지 형식 | XML 요소(스탠자) | 바이너리 와이어 수준 프로토콜 |
| 주요 대상 | 인스턴트 메시징과 프레즌스 | 비즈니스 메시징 |
8. 기술동향·개선사항·활용
- 프레즌스 기능으로 사람뿐 아니라 장치의 접속·종료 같은 상태를 구독자에게 알리는 데 활용할 수 있음
- IoT 센서 데이터 교환을 다룬 확장 규격 XEP-0323은 현재 철회(Retracted) 상태라 새 구현에는 권장되지 않음(기준일: 2026-10-15)
용어 설명
- XMPP(Extensible Messaging and Presence Protocol) : XML로 메시지와 접속 상태 정보를 거의 실시간으로 주고받는 개방형 프로토콜
- 프레즌스(Presence) : 상대가 접속해 있는지 같은 가용 상태 정보
- 스탠자(Stanza) : XMPP에서 주고받는 XML 단위로 message, presence, IQ 세 종류가 있음
- IQ(Info/Query) : XMPP에서 요청과 응답을 주고받는 스탠자
- JID(Jabber ID) : user@example.com 형태로 XMPP 사용자를 나타내는 주소
- 페더레이션(Federation) : 서로 다른 서버가 연결되어 하나의 분산 네트워크를 이루는 구조
- TLS(Transport Layer Security) : 통신 구간을 암호화하는 보안 프로토콜
- SASL(Simple Authentication and Security Layer) : 프로토콜에 여러 인증 방식을 끼워 넣을 수 있게 하는 인증 틀
- XEP(XMPP Extension Protocol) : XMPP를 확장하기 위해 만든 규격 문서
- AMQP(Advanced Message Queuing Protocol) : 서로 다른 시스템 간 메시지를 안전하게 주고받는 개방형 메시징 프로토콜
참고 출처
- RFC 6120, Extensible Messaging and Presence Protocol (XMPP): Core (IETF)
- RFC 6121, Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence (IETF)
- XMPP Standards Foundation, XEP-0323: Internet of Things - Sensor Data
- OASIS, AMQP Version 1.0 Core Overview
- RabbitMQ, AMQP 0-9-1 Model Explained
반응형