XMPP
Extensible Messaging and Presence Protocol
의미
- P: Protocol, XMPP는 웹에서 서로 다른 시스템간에 대화를 나누기 위해 광범위하게 사용되는 프로토콜이다.
- P: Presence, XMPP는 서버가 살았는지, 죽었는지, 현재 바쁜 상태인지 알 수 있게 해준다. 다시 말해서, 메세지를 받을 준비가 되어있는지 아닌지 알 수 있게 해준다는 뜻이다.
- M: Messaging, XMPP는 효율적인 푸시 메커니즘을 통해서 모든 메세지를 리얼타임으로 송수신할 수 있게 해준다.
- X: eXtensible, XMPP는 확장성을 가지도록 설계되었다.
특징
장점
- Open: XMPP 프로토콜은 무료이며, 자유롭게 사용 가능하고, 공개되어있으며, 손쉽게 이해할 수 있다. 그리고 이미 다양한 구현체들이 존재한다.
- Standard: IETF에 의해서 정식으로 승인받은 프로토콜이다. 그에 따라 RFC 6120, 6121, 7622 등에서 찾아볼 수 있다.
- Proven: 1998년 이래로 수많은 개발자들에 의해서 검증받은 프로토콜이다.
- Decentralized: email과 비슷한 아키텍쳐를 통해서 누구나 자신의 XMPP 서버를 열고 개개인 및 조직의 커뮤니케이션을 만들 수 있다.
- Secure: 인트라넷 아래에 구성할 수도 있고, SASL, TLS 등을 통해서 통신을 암호화할 수 있다. 가까운 미래에 종단간 암호화 통신도 지원될 예정이다.
- Extensible: XML에 기반하여 자유롭게 커스텀, 확장할 수 있다.
- Flexible: 인스턴스 메세지를 통하여 파일 공유, 채팅, 게임, 원격 시스템, 모니터링 등 다양한 목적으로 사용 가능하다.
- Diverse: XMPP를 사용할 때 다양한 선택지가 존재한다.
단점
- QoS 관련 기능이 없다. 다만 XEP에 대안이 존재한다.
- 텍스트 기반으로 통신하기 때문에 바이너리 기반 통신에 비해서 오버헤드가 큰 편이다. 마찬가지로 XEP에 대안이 존재한다.
- In-band로 바이너리 데이터를 전송하는데 제한이 있다. 먼저 base64 인코딩을 하도록 강요된다. 그러므로 파일 전송처럼 어떤 의미있는 단위의 바이너리 데이터를 보내고자한다면 out-of-band로 전송하고, In-band 메세지는 그 과정을 조율하는데 사용하는 것이 최선이다. 이 또한 XEP로 존재한다.