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

들에 대한 탐지 및 대책이 필요함.

Reference