본문 바로가기
Theory/IoT

05 IoT 관련 통신 프로토콜

by Orangetasteboy 2023. 8. 10.

HTTP (Hypertext Transfer Protocol)

  • 최근 M2M 통신, 자동화, IoT 등과 같은 다양한 분야에서 활용 사례 증가
  • 센서 프로젝트에 웹을 지원하도록 센서에서 수집한 데이터를 HTTP를 통해 외부에 제공하는 기능 구성 가능
  • HTTP로 동작하는 센서와 액추에이터를 서로 엮어주는 컨트롤러도 HTTP 서버로 동작하도록 구성 가능

 

UPnP (Universal Plug and Play)

  • 가전 제품이나 사무용 전자 기기에서 주로 활용
  • 여러 프로토콜을 활용해 애드혹 IP 네트워크에 있는 장치를 검색하고, 이러한 장치에서 제공하는 서비스를 알아내고, 원하는 동작을 실행하거나, 이벤트를 발생하는 기능을 제공하는 프로토콜이자 아키텍처
  • IoT 장치와 서비스를 자동으로 찾고 이벤트 알림을 제공하기 위한 프로토콜
  • 여기에 속한 장치는 현재 환경을 스스로 알아내서 적응하는 방식으로 동작
  • 대부분 클라이언트와 서버로 동작하는 HTTP 애플리케이션을 기반으로 구성
  • 요청/응답 패턴과 웹 서비스를 활용하거나 로컬 네트워크에 존재하는 장치를 검색하고, 장치의 상태 변화를 감지하는 이벤트 구독 가능

 
[서비스 아키텍처 구성]

  • UPnP에서는 UPnP를 지원하는 장치에 대한 오브젝트 계층 구조를 별도로 정의하고 있음.
  • 각 장치마다 루트 장치를 하나씩 가짐.
  • 루트 장치는 서비스와 임베디드 장치를 어러 개 가지고 있을 수도, 하나도 없을 수도 있음.
  • 루트 장치에 포함된 임베디드 장치도 자체적으로 서비스와 임베디드 장치를 가질 수 있음.
  • 장치에서 제공하는 서비스는 네트워크를 통해 장치에서 수행할 수 있는 동작과 장치의 상태를 알려줌.

 

CoAP (Constrained Application Protocol)

  • 리소스가 한정된 장치와 네트워크 환경에서 알맞게 HTTP의 복잡도를 줄인 프로토콜
  • 리소스가 귀한 소형 장치 입장에서는 너무 많은 리소스와 대역폭을 차지해서 IP로 통신하기 위해 실전에서 HTTPU를 적용하기엔 부담스럽기 때문에 CoAP을 통해 이를 해결
  • HTTPU 헤더에서 지정할 수 있는 옵션의 수를 줄여서 텍스트 대신 바이너리로 간결하게 표현하여 메시지를 쉽게 인코딩하고 파싱 가능
  • GET, POST, PUT, DELETE 네 개의 메소드만 사용 가능
  • 메소드를 확인형 메시지 서비스와 비확인형 메시지 서비스를 통해 호출 가능
  • 수신자가 메시지를 확인형 메시지로 받으면 항상 확인 메시지 송신
  • 메시지 송신 측에서 지정 시간 내에 확인 메시지를 받지 못하면 메시지 재전송
  • HTTP처럼 콘텐츠의 종류를 인터넷 미디어 타입으로 표현하지 않고 단순히 숫자만으로 콘텐츠를 식별하도록 Content-Format이라는 간소화된 포맷 사용

 

MQTT (Message Queue Telemetry Transport)

아래의 게시글을 참고하세요.

01 MQTT 서버 구축 (Linux 환경) (23.01.04)

Linux 실습 가상 환경 구축이 필요하시면 아래 게시글을 참고하세요. 01 리눅스 기초 (22.09.14) orangetasteboy.tistory.com 메시지 큐 관련 학습이 필요하시면 아래 게시글을 참고하세요. 01 메시지 큐 (Messag

orangetasteboy.tistory.com

 

XMPP (Extensible Messaging and Presence Protocol)

  • 인스턴스 메시징 애플리케이션(채팅 프로그램, 메신저)을 위해 설계된 프로토콜
  • SMTP(Simple Mail Transfer Protocol)을 기반으로 설계
  • SMTP와는 다르게 실시간 통신을 지원하기 위해 메시지를 작은 크기로 빠르게 전송
  • MQTT와 같이 방화벽을 뛰어넘기 위해 메시지 중개자를 사용
  • 서로 다른 네트워크에 존재하는 XMPP 서버를 메시지 중개자를 통해 하나의 네트워크로 연동하기 때문에 방화벽이 설치된 다른 네트워크의 클라이언트와 통신 가능
  • 자체적으로 도메인을 관리하면서 해당 도메인에 속한 사용자를 인증
  • 여러 네트워크에 퍼져 있는 서버를 하나로 역는 페더레이션(Federation) 기능을 통해 각 서버를 안전하게 연결하여 메시지를 주고 받을 수 있으므로, 서로 다른 도메인에 속한 클라이언트끼리 통신 가능하고 네트워크를 무한대로 확장 가능
  • 페더레이션으로 연동하는데 필요한 작업은 모두 서버에서 처리
  • 클라이언트틑 서버에 대한 연결을 유지하는 것 외에는 신경쓰지 않고 페더레이션으로 연결된 다른 네트워크의 클라이언트와 메시지를 주고 받을 수 있음.

 
[글로벌 ID]

  • XMPP 서버는 클라이언트끼리 보내는 메시지를 중계하는 기능뿐 아니라 클라이언트를 인증하는 기능 또한 제공
  • 페더레이션으로 연동된 네트워크에 있는 XMPP 서버 중에서 공용 서버가 글로벌 ID 역할을 함.
  • 공용 서버는 연결하려는 클라이언트에게 유저 네임과 패스워드로 표현된 자격 증명을 요구하여 적합한 클라이언트인지 인증
  • 인증 과정은 SASL(Simple Authentication and Security Layer)을 기반으로 안전하게 처리
  • 클라이언트와 서버가 암호화된 메시지를 주고 받도록 TLS(Transport Layer Security)로 연결 가능
  • 사용되는 클라이언트의 ID를 XMPP 주소 또는 JID(Jabber ID)라고 함.

 
[통신 패턴]

  • 게시/구독 패턴뿐 아니라 점대점 요청/응답과 비동기 메시징과 같은 통신 패턴을 제공하므로, 다양한 방식으로 통신 가능
  • 스탄자(Stanza)라는 세 가지 통신 기본 요소를 통해 제공
  • 프레즌스 스탄자를 사용하면 자신에게 관심을 갖고 있는 상대방 중에서 적절한 권한을 가진 이에게 상태 정보 전송 가능
  • 메시지 스탄자를 사용하면 상대방에게 비동기 메시지 전달 가능
  • IQ(Information/Query) 스탄자를 사용하면 요청을 받고, 응답이나 에러를 리턴하는 요청/응답 패턴 구현 가능

'Theory > IoT' 카테고리의 다른 글

04 IoT 아키텍처 구성 (3/3)  (0) 2023.07.29
03 IoT 아키텍처 구성 (2/3)  (0) 2023.07.28
02 IoT 아키텍처 구성 (1/3)  (0) 2023.07.28
01 IoT 기초  (0) 2023.07.27

댓글