Overview
Concept
각 Client들은 특정 Topic에 대해 Publish/Subscribe 할 수 있음.
Topic은 계층적일 수 있으며, Server-Client 구조를 사용한다.
Server
메시지들을 Topic에 맞게 각 Client들에게 전달하는 Broker의 역할을 한다.
Client
모든 Client들은 Server와 항상 연결되어 있어야 하며, 메시지를 발행하는 Publisher와 구독하는 Subscriber로 구분할 수 있다.
Subcription
Topic Filter와 Maximum QoS에 대한 설정이 필요하다. 하나의 Subcription은 1개의 Session하고만 연관되어 있어야 한다. 1개의 Session은 n개의 Subcription을 가질 수 있다.
Server는 Subscriber들에게 각 Topic의 메시지의 복사본을 전송한다.
Session
Client와 Server간의 Stateful한 Interaction.
Topic Filter
1개 이상의 Topic을 Subcribe하기 위한 Filter. Wildcard Character도 사용 가능하다.
QoS(Quality of Service)
3 단계의 QoS를 지원한다.
- 0: 1회 전송
- 1: 1회 이상 전송, 도달 여부 확인
- 2: Handshaking을 통해 1회 전송
Security
기본적으로 Trust-Symmetrical하지 않은, Client만 Server에 인증하는 구조이다.
LDAP나 OAuth를 적용할 수 있으며, TLS를 통한 암호화도 가능하다.
- 연결 시도 반복
- 인증 시도 반복
- 비정상적 연결 종료
- Topic Scanning
- Subscriber 없는 메시지 전송
- 메시지를 보내지 않는 Client
들에 대한 탐지 및 대책이 필요함.