MQTT 노트 – QoS, Connection, Security

05. September 2016 미분류 0

원문 : https://zoetrope.io/tech-blog/brief-practical-introduction-mqtt-protocol-and-its-application-iot

QoS

MQTT 는 불안정한 네트워크에서도 동작이 가능하도록 설계되어있고, 그것을 가능하게 하기위해 3가지 타입의 QoS를 지원한다.

QoS level 0

가장 간단한 QoS. 클라이언트에게 어떠한 ACK 도 요구하지 않음. 안정성은 TCP/IP 에서 보장

QoS level 1

메세지가 적어도 1번 전송되는 것을 보장한다. 단, 한번 이상 전송이 될 수도 있으니 이 부분은 개발자가 잘 처리해야한다.

클라이언트는 메세지를 받으면 반드시 ACK 를 보내야한다. 이것으로 메세지가 보내졌다는 것을 보장할 수 있다.

QoS level 2

가장 흔한 종류의 QoS 이다. 메세지가 반드시 한번만 전송되었다는 것을 보장하는 QoS이다. 4단계를 통해 메세지 전송 과정을 검증한다.

아래 그림은 각 QoS 별로 처리 과정을 그림으로 나타낸 것이다.

https://zoetrope.io/tech-blog/brief-practical-introduction-mqtt-protocol-and-its-application-iot


LWT(Last Will and Testament)

MQTT 프로토콜은 keep-alive 를 이용하여, 클라이언트의 비정상적인 연결종료를 감지하는 기능을 제공한다. 클라이언트는 특정 시점에 LWT 패킷을 브로커에게 보낸다. 클라이언트의 비정상 종료를 브로커가 감지하면, 저장되어있던 LWT 메세지를 특정 토픽에 저장하여, 다른 클라이언트가 이 클라이언트의 오프라인 상태를 알도록 한다.

더 자세한 정보


Security

Username and Password

MQTT Connect 시, username 과 password 를 전달하여 인증하는 방법이다.

보안에는 취약하지만, TLS 연결로 보완할 수 있다.

TLS Connection

MQTT 자체는 TCP 를 기반으로 돌아가기 때문에, 모든 메세지를 TLS 연결에 싣어서 암호화된 채로 전송할 수 있다.


Leave a Reply

Your email address will not be published. Required fields are marked *