디바이스 통신 프로토콜 - AWS IoT Core

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

디바이스 통신 프로토콜

AWS IoT Core 는 MQTT 보안 WebSocket (WSS) 프로토콜을 MQTT 통해 및 를 사용하여 메시지를 게시하고 구독하는 디바이스 및 클라이언트와 HTTPS 프로토콜을 사용하여 메시지를 게시하는 디바이스 및 클라이언트를 지원합니다. 모든 프로토콜은 IPv4 및 를 지원합니다IPv6. 이 섹션에서는 디바이스 및 클라이언트에 대한 다양한 연결 옵션에 대해 설명합니다.

TLS 프로토콜 버전

AWS IoT Core 는 TLS 버전 1.2TLS 버전 1.3을 사용하여 모든 통신을 암호화합니다. 도메인 구성 에서 TLS 설정을 구성하여 엔드포인트에 대한 추가 TLS 정책 버전을 구성할 수 있습니다. 에 디바이스를 연결할 때 클라이언트는 다중 계정 등록 AWS IoT Core, 구성 가능한 엔드포인트, 사용자 지정 도메인 및 엔드포인트와 같은 기능에 필요한 서버 이름 표시(SNI) 확장 을 전송할 수 VPC 있습니다. 자세한 내용은 AWS IoT의 전송 보안을 참조하세요.

MQTT 및 MQTT 이상의 AWS IoT 디바이스 SDKs 를 지원하고 클라이언트 연결의 보안 요구 사항을 WSS 지원합니다. 클라이언트를 AWS IoT에 연결하기 위해 AWS IoT 디바이스 SDKs를 사용하는 것이 좋습니다.

프로토콜, 포트 매핑 및 인증

디바이스 또는 클라이언트를 메시지 브로커에 연결하는 방법은 인증 유형 을 사용하여 구성할 수 있습니다. 기본적으로 또는 SNI 확장이 전송되지 않을 때 인증 방법은 디바이스가 사용하는 애플리케이션 프로토콜, 포트 및 애플리케이션 계층 프로토콜 협상(ALPN) TLS 확장을 기반으로 합니다. 다음 표에는 포트, 포트 및 에 따라 예상되는 인증이 나열되어 있습니다ALPN.

프로토콜, 인증 및 포트 매핑
프로토콜 지원되는 작업 인증 Port ALPN 프로토콜 이름

MQTT 초과 WebSocket

게시, 구독 서명 버전 4 443

N/A

MQTT 초과 WebSocket

게시, 구독 사용자 지정 인증 443

N/A

MQTT

게시, 구독

X.509 클라이언트 인증서

443

x-amzn-mqtt-ca

MQTT 게시, 구독 X.509 클라이언트 인증서 8883 N/A

MQTT

게시, 구독

사용자 지정 인증

443

mqtt

HTTPS

게시 전용

서명 버전 4

443

N/A

HTTPS

게시 전용

X.509 클라이언트 인증서

443

x-amzn-http-ca

HTTPS 게시 전용 X.509 클라이언트 인증서 8443 N/A
HTTPS 게시 전용 사용자 지정 인증 443 N/A
애플리케이션 계층 프로토콜 협상(ALPN)

기본 엔드포인트 구성을 사용하는 경우 X.509 클라이언트 인증서 인증으로 포트 443에 연결하는 클라이언트는 Application Layer Protocol Negotiation(ALPN) TLS 확장을 구현하고 클라이언트가 ClientHello 메시지의 일부로 ALPN ProtocolNameList 보낸 에 나열된 ALPN 프로토콜 이름을 사용해야 합니다.

포트 443에서 IoT :Data-ATS 엔드포인트는 ALPN x-amzn-http-ca 를 지원HTTP하지만 IoT :Jobs 엔드포인트는 지원하지 않습니다.

MQTT 가 있는 포트 8443 HTTPS 및 포트 443에서는 ALPN x-amzn-mqtt-ca 사용자 지정 인증을 사용할 수 없습니다.

클라이언트는 AWS 계정의 디바이스 엔드포인트에 연결합니다. 계정의 디바이스 엔드포인트를 찾는 방법에 대한 자세한 내용은 AWS IoT 디바이스 데이터 및 서비스 엔드포인트 섹션을 참조하세요.

참고

AWS SDKs 에는 전체 가 필요하지 않습니다URL. 의 pubsub.pyAWS IoT Device SDK for Python 샘플 GitHub과 같은 엔드포인트 호스트 이름만 필요합니다. 다음 표에 제공된 URL 대로 전체를 전달하면 잘못된 호스트 이름과 같은 오류가 발생할 수 있습니다.

에 연결 AWS IoT Core

프로토콜

엔드포인트 또는 URL

MQTT

iot-endpoint

MQTT 초과 WSS

wss://iot-endpoint/mqtt

HTTPS

https://iot-endpoint/topics

디바이스 통신을 위한 애플리케이션 프로토콜 선택

디바이스 엔드포인트를 통한 대부분의 IoT 디바이스 통신의 경우 Secure MQTT 또는 MQTT over WebSocket Secure(WSS) 프로토콜을 사용하지만 디바이스 엔드포인트는 도 지원합니다HTTPS.

다음 표에서는 가 디바이스 통신을 위해 두 개의 상위 수준 프로토콜(MQTT 및 HTTPS)을 AWS IoT Core 사용하는 방법을 비교합니다.

AWS IoT 디바이스 프로토콜(MQTT 및 HTTPS) side-by-side

기능

MQTT

HTTPS

게시/구독 지원

게시 및 구독

게시 전용

SDK 지원

AWS 디바이스 SDKs 지원 MQTT 및 WSS 프로토콜

SDK 지원되지 않지만 언어별 방법을 사용하여 HTTPS 요청할 수 있습니다.

서비스 품질 지원

MQTT QoS 수준 0 및 1

QoS는 값이 0 또는 1일 수 있는 쿼리 문자열 파라미터 ?qos=qos를 전달하여 지원됩니다. 이 쿼리 문자열을 추가하여 원하는 QoS 값으로 메시지를 게시할 수 있습니다.
디바이스가 오프라인 상태일 때 누락된 메시지를 받을 수 있음 아니요

clientId 현장 지원

아니요

디바이스 연결 해제 감지

아니요

통신 보안

예. 프로토콜, 포트 매핑 및 인증 섹션을 참조하세요.

예. 프로토콜, 포트 매핑 및 인증 섹션을 참조하세요.

주제 정의

정의된 애플리케이션

정의된 애플리케이션

메시지 데이터 형식

정의된 애플리케이션

정의된 애플리케이션

프로토콜 오버헤드 낮음 높음
전력 소비 낮음 높음

디바이스 통신을 위한 인증 유형 선택

구성 가능한 엔드포인트를 사용하여 IoT 엔드포인트의 인증 유형을 구성할 수 있습니다. 또는 기본 구성을 사용하여 디바이스가 애플리케이션 프로토콜, 포트 및 ALPN TLS 확장 조합으로 인증하는 방법을 결정합니다. 선택한 인증 유형에 따라 에 연결할 때 디바이스가 인증되는 방법이 결정됩니다 AWS IoT Core. 5가지 인증 유형이 있습니다.

X.509 인증서

가 디바이스를 인증하도록 AWS IoT Core 검증하는 X.509 클라이언트 인증서 를 사용하여 디바이스를 인증합니다. 이 인증 유형은 보안MQTT(MQTT 이상TLS) 및 HTTPS 프로토콜에서 작동합니다.

사용자 지정 권한 부여자가 있는 X.509 인증서

X.509 클라이언트 인증서를 사용하여 디바이스를 인증하고 X.509 클라이언트 인증서 정보를 수신하는 사용자 지정 권한 부여자 를 사용하여 추가 인증 작업을 수행합니다. 이 인증 유형은 보안MQTT(MQTT 이상TLS) 및 HTTPS 프로토콜에서 작동합니다. 이 인증 유형은 X.509 사용자 지정 인증을 사용하여 구성 가능한 엔드포인트를 사용해야만 가능합니다. ALPN 옵션은 존재하지 않습니다.

AWS 서명 버전 4(SigV4)

Cognito 또는 백엔드 서비스를 사용하여 디바이스를 인증하고 소셜 및 엔터프라이즈 페더레이션을 지원합니다. 이 인증 유형은 WebSocket 보안(WSS) 및 HTTPS 프로토콜을 MQTT 통해 작동합니다.

사용자 지정 권한 부여자

로 전송된 사용자 지정 인증 정보를 처리하도록 Lambda 함수를 구성하여 디바이스를 인증합니다 AWS IoT Core. 이 인증 유형은 보안MQTT(MQTT 이상TLS) , HTTPS및 WebSocket 보안(WSS) 프로토콜MQTT에서 작동합니다.

기본값

디바이스가 사용하는 포트 및/또는 애플리케이션 계층 프로토콜 협상(ALPN) 확장을 기반으로 디바이스를 인증합니다. 일부 추가 인증 옵션은 지원되지 않습니다. 자세한 내용은 프로토콜, 포트 매핑 및 인증 단원을 참조하십시오.

아래 표에는 인증 유형과 애플리케이션 프로토콜의 지원되는 모든 조합이 나와 있습니다.

인증 유형 및 애플리케이션 프로토콜의 지원되는 조합
인증 유형 보안MQTT(MQTT 이상TLS) MQTT WebSocket 보안(WSS)을 통해 HTTPS 기본값
X.509 인증서
사용자 지정 권한 부여자가 있는 X.509 인증서
AWS 서명 버전 4(SigV4)
사용자 지정 권한 부여자
기본값

연결 지속 시간 제한

HTTPS 연결은 요청을 수신하고 응답하는 데 걸리는 시간보다 오래 지속되지 않습니다.

MQTT 연결 기간은 사용하는 인증 기능에 따라 달라집니다. 다음 표에는 각 기능에 이상적인 조건에서 최대 연결 지속 시간이 나열되어 있습니다.

MQTT 인증 기능별 연결 기간

기능

최대 지속 시간*

X.509 클라이언트 인증서

1~2주

사용자 지정 인증

1~2주

서명 버전 4

최대 24시간

* 보장되지 않음

X.509 인증서 및 사용자 정의 인증을 사용하면 연결 지속 시간에 엄격한 제한이 없지만 몇 분 정도로 짧을 수 있습니다. 연결 중단은 다양한 이유로 발생할 수 있습니다. 다음 목록에는 가장 일반적인 이유 중 일부가 나와 있습니다.

  • Wi-Fi 가용성 중단

  • 인터넷 서비스 공급자(ISP) 연결 중단

  • 서비스 패치

  • 서비스 배포

  • 서비스 Auto Scaling

  • 사용할 수 없는 서비스 호스트

  • 로드 밸런서 문제 및 업데이트

  • 클라이언트 측 오류

디바이스는 연결 해제를 감지하고 다시 연결하기 위한 전략을 구현해야 합니다. 연결 해제 이벤트 및 처리 방법에 대한 자세한 내용은 수명 주기 이벤트에서 연결/연결 해제 이벤트 섹션을 참조하세요.