Computer >> 컴퓨터 >  >> 프로그래밍 >> HTML

MQTT와 HTTP 프로토콜의 차이점 완벽 비교

HTTP와 MQTT는 모두 널리 사용되는 통신 프로토콜이지만, 설계 목적과 동작 방식에서 큰 차이가 있습니다. 두 프로토콜의 개념을 먼저 이해한 후, 각각의 특징과 차이점을 살펴보겠습니다.

Hypertext Transfer Protocol(HTTP)란?

HTTP(하이퍼텍스트 전송 프로토콜)는 오늘날 전 세계에서 가장 널리 사용되는 애플리케이션 계층 프로토콜입니다. 일반적인 사람들이 인터넷이라고 생각하는 것, 즉 월드 와이드 웹(WWW)의 기반이 되는 프로토콜입니다.

HTTP의 목적은 인터넷상의 웹 사이트로부터 HTML(Hypertext Markup Language) 문서와 기타 리소스를 가볍고 효율적으로 검색할 수 있도록 하는 것입니다. 웹 브라우저를 열어 인터넷을 탐색할 때마다 우리는 TCP/IP 위에서 동작하는 HTTP를 사용하고 있는 것입니다.

기본적인 HTTP 페이지 요청 과정

웹 브라우저가 웹 서버로부터 페이지를 가져오는 기본적인 과정부터 살펴보겠습니다. 여기서 중요한 점은 하나의 웹 페이지가 HTML 본문부터 이미지에 이르기까지 수많은 요소들로 구성된다는 사실입니다.

HTML은 페이지 전체의 뼈대 역할을 하며, 콘텐츠 배치, 글꼴 크기와 색상, 페이지 배경색, 그리고 페이지를 완성하기 위해 추가로 불러와야 할 이미지 등을 브라우저에 알려줍니다.

이 과정은 다음 순서로 진행됩니다.

  • 클라이언트가 원하는 페이지를 웹 서버에 요청합니다.
  • 서버는 요청을 분석한 뒤, 확인 응답과 함께 페이지를 구성하는 데 필요한 HTML 코드를 클라이언트에 반환합니다.
  • 클라이언트는 HTML 해석을 시작하고 페이지 조립을 진행합니다.
  • 클라이언트는 이어서 추가 요청을 통해 이미지나 멀티미디어 같은 내장 리소스들을 가져옵니다.

MQ Telemetry Transport(MQTT)란?

MQTT 시스템은 '브로커(broker)'라고 불리는 서버와 통신하는 클라이언트들로 구성됩니다. 클라이언트는 정보를 발행하는 '발행자(publisher)'이거나 정보를 수신하는 '구독자(subscriber)'일 수 있으며, 모든 클라이언트는 브로커에 연결됩니다.

데이터는 주제(topic)의 계층 구조로 체계화됩니다. 발행자에게 새로운 데이터가 생기면, 해당 데이터를 담은 제어 메시지를 연결된 브로커로 전송합니다.

브로커는 그 데이터를 해당 주제를 구독 중인 모든 클라이언트에게 전달합니다. 발행자는 구독자의 수나 위치를 알 필요가 없고, 구독자 역시 발행자에 대한 어떤 정보도 미리 설정해 둘 필요가 없습니다.

브로커가 현재 구독자가 없는 주제를 받게 되면, 발행자가 해당 메시지를 보관(retain)하도록 지정하지 않는 한 그 주제를 폐기합니다. 메시지 보관 옵션을 사용하면 새로 구독을 시작한 클라이언트가 다음 업데이트를 기다릴 필요 없이 가장 최신 값을 즉시 받을 수 있습니다.

발행 클라이언트가 처음 브로커에 접속할 때, 자신이 예기치 않게 연결이 끊긴 경우를 대비해 구독자들에게 전송될 기본 메시지(유언 메시지)를 미리 설정해 둘 수 있습니다.

클라이언트는 오직 브로커와만 통신하지만, 하나의 시스템 안에 여러 브로커 서버가 존재할 수 있으며, 이들은 현재 구독 중인 주제를 기준으로 서로 데이터를 교환합니다.

MQTT 제어 메시지는 최소 2바이트까지 작아질 수 있으며, 필요하다면 최대 약 256MB의 데이터를 실어 나를 수 있습니다.

MQTT에는 총 14종류의 메시지 유형이 정의되어 있으며, 이를 통해 클라이언트의 연결 및 연결 해제, 데이터 발행, 수신 확인, 클라이언트와 서버 간 연결 관리가 이루어집니다.

MQTT는 데이터 전송을 위해 TCP 프로토콜에 의존합니다. 한편 UDP나 Bluetooth 같은 다른 전송 매체 위에서는 변형인 MQTTSN이 활용됩니다.