기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
디바이스 통신 프로토콜
AWS IoT Core 는 MQTT 보안 WebSocket (WSS) 프로토콜을 MQTT 통해 및 를 사용하여 메시지를 게시하고 구독하는 디바이스 및 클라이언트와 HTTPS 프로토콜을 사용하여 메시지를 게시하는 디바이스 및 클라이언트를 지원합니다. 모든 프로토콜은 IPv4 및 를 지원합니다IPv6. 이 섹션에서는 디바이스 및 클라이언트에 대한 다양한 연결 옵션에 대해 설명합니다.
TLS 프로토콜 버전
AWS IoT Core 는 TLS
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† |
|
MQTT | 게시, 구독 | X.509 클라이언트 인증서 | 8883 | N/A |
MQTT |
게시, 구독 |
사용자 지정 인증 |
443† |
|
HTTPS |
게시 전용 |
서명 버전 4 |
443 |
N/A |
HTTPS |
게시 전용 |
X.509 클라이언트 인증서 |
443† |
|
HTTPS | 게시 전용 | X.509 클라이언트 인증서 | 8443 | N/A |
HTTPS | 게시 전용 | 사용자 지정 인증 | 443 | N/A |
애플리케이션 계층 프로토콜 협상(ALPN)
†기본 엔드포인트 구성을 사용하는 경우 X.509 클라이언트 인증서 인증으로 포트 443에 연결하는 클라이언트는 Application Layer Protocol Negotiation(ALPN)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.py
AWS IoT Device SDK for Python 샘플 GitHub
프로토콜 |
엔드포인트 또는 URL |
---|---|
MQTT |
|
MQTT 초과 WSS |
|
HTTPS |
|
디바이스 통신을 위한 애플리케이션 프로토콜 선택
디바이스 엔드포인트를 통한 대부분의 IoT 디바이스 통신의 경우 Secure MQTT 또는 MQTT over WebSocket Secure(WSS) 프로토콜을 사용하지만 디바이스 엔드포인트는 도 지원합니다HTTPS.
다음 표에서는 가 디바이스 통신을 위해 두 개의 상위 수준 프로토콜(MQTT 및 HTTPS)을 AWS IoT Core 사용하는 방법을 비교합니다.
기능 |
||
---|---|---|
게시/구독 지원 |
게시 및 구독 |
게시 전용 |
SDK 지원 |
AWS 디바이스 SDKs 지원 MQTT 및 WSS 프로토콜 |
SDK 지원되지 않지만 언어별 방법을 사용하여 HTTPS 요청할 수 있습니다. |
서비스 품질 지원 |
QoS는 값이 0 또는 1일 수 있는 쿼리 문자열 파라미터 ?qos=qos 를 전달하여 지원됩니다. 이 쿼리 문자열을 추가하여 원하는 QoS 값으로 메시지를 게시할 수 있습니다. |
|
디바이스가 오프라인 상태일 때 누락된 메시지를 받을 수 있음 | 예 | 아니요 |
|
예 |
아니요 |
디바이스 연결 해제 감지 |
예 |
아니요 |
통신 보안 |
예. 프로토콜, 포트 매핑 및 인증 섹션을 참조하세요. |
예. 프로토콜, 포트 매핑 및 인증 섹션을 참조하세요. |
주제 정의 |
정의된 애플리케이션 |
정의된 애플리케이션 |
메시지 데이터 형식 |
정의된 애플리케이션 |
정의된 애플리케이션 |
프로토콜 오버헤드 | 낮음 | 높음 |
전력 소비 | 낮음 | 높음 |
디바이스 통신을 위한 인증 유형 선택
구성 가능한 엔드포인트를 사용하여 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 연결 기간은 사용하는 인증 기능에 따라 달라집니다. 다음 표에는 각 기능에 이상적인 조건에서 최대 연결 지속 시간이 나열되어 있습니다.
기능 |
최대 지속 시간* |
---|---|
X.509 클라이언트 인증서 |
1~2주 |
사용자 지정 인증 |
1~2주 |
서명 버전 4 |
최대 24시간 |
* 보장되지 않음
X.509 인증서 및 사용자 정의 인증을 사용하면 연결 지속 시간에 엄격한 제한이 없지만 몇 분 정도로 짧을 수 있습니다. 연결 중단은 다양한 이유로 발생할 수 있습니다. 다음 목록에는 가장 일반적인 이유 중 일부가 나와 있습니다.
-
Wi-Fi 가용성 중단
-
인터넷 서비스 공급자(ISP) 연결 중단
-
서비스 패치
-
서비스 배포
-
서비스 Auto Scaling
-
사용할 수 없는 서비스 호스트
-
로드 밸런서 문제 및 업데이트
-
클라이언트 측 오류
디바이스는 연결 해제를 감지하고 다시 연결하기 위한 전략을 구현해야 합니다. 연결 해제 이벤트 및 처리 방법에 대한 자세한 내용은 수명 주기 이벤트에서 연결/연결 해제 이벤트 섹션을 참조하세요.