개발 노트

TCP/IP , MQTT 본문

프로그래밍/IT용어설명

TCP/IP , MQTT

알 수 없는 사용자 2022. 11. 22. 10:14

TCP/IP?

tcp/ip라고 알려진 인터넷 프로토콜 스위트는 인터넷과 이와 유사한 컴퓨터 네트워크 사이에서 정보를 주고 받는데 이용되는 통신 프로토콜의 모음

 

위의 기본 프로토콜은 전송 제어 프로토콜 (TCP:Transmission Control Protocol)과 인터넷 프로토콜(IP : Internet Protocol)이 있다.

앱과 기기는 정보를 전송, 수신하기 위해 규칙을 따라야 하고 이러한 규칙을 TCP/IP 모델이라고 부릅니다.

 

TCP/IP란 무엇인가?

 

TCP/IP는 네트워크 프로토콜 스위트로 온라인상의 안전하고 효율적인 데이터 전송의 필수 요건을 정의한다.

 

TCP/IP모델은 두 개의 기기 간에 데이터를 전송하는 것을 담당하고 있다.

수백 대의 컴퓨터 사이에서 활발하게 데이터가 공유되고 있는 것처럼 보여도 사실은 모든 데이터 교환에는 2대의 기기만 개입된다.

 

TCP/IP는 수많은 컴퓨터 네트워크 프로토콜을 포함합니다.

TCP와  IP는 이러한 프로토콜 중 하나일 뿐입니다.

 

tcp는 한 기기에서 다른 기기로 데이터를 전송하는 것을 담당합니다.

ip는 데이터의 조각을 최대한 빨리 대상 ip주소로 보내는 역할을 표시합니다.

 

tcp와 ip 각각 담당하는 작업이 있지만, 결국에는 같은 결과를 목표로 하기 때문에
한 명칭으로 알려지기도 한다.

 

tcp/ip는 통신 규칙의 모음이며, 프로토콜 스위트라고 부르기도 한다.

Tcpip의 4계층은 이러한 규칙이나 프로토콜이 적용되는 특정한 조건을 의미한다.
이 시스템은 tcpip 모델이 다양한 기기와 앱에서 효율적으로 '통신'하고 데이터를 전송할 수 있도록 하는 방식이다.

 

응용 계층

 

응용 계층 프로토콜은 tcpip 프로토콜의 범위에 포함되어 있습니다.

 

이런한 프로토콜은 앱에 구축되기 때문에 사용자가 상호작용하기 가장 쉬운 계층입니다.
응용 계층은 사용자가 네트워크에 접근할 수 있도록 합니다. 게다가, 사용자 인터페이스를 제공할 뿐만 아니라 
이메일, 원격파일 접근 및 전송, 공유 데이터베이스 관리 등의 서비스를 제공합니다.

 

메일 프로그램에서는 인터넷에서 전자우편을 보낼 때 이용하게 되는 표준 통신 규약인 SMPT (Simple Mail Transfer Protocol)를
, 인터넷 브라우저는 웹 서버와 사용자의 인터넷 브라우저 사이에 문서를 전송하기 위해 사용되는 통신 규약인 HTTP (Hypertext Transfer Protocol) 등을 이용합니다. 
이외에도 흔히 이용되는 응용 계층 프로토콜로는 파일 전송 규약 (File Transfer Protocol: FTP), 동적 호스트 설정 통신 규약 (Dynamic host Configuration protocol: DHCP), 
간이 망 관리 프로토콜(Simple Network Management Protocol: SNMP) 등이 있습니다.

 

전송 계층

 

'전송 계층(Transport Layer)' = 전송을 담당하는 계층.

전송 계층에는 TCP뿐만 아니라 사용자 데이터그램 통신 규약 (User Datagram Protocol: UDP)도 있다.

UDP는 TCP보다 단순하며 다른 데이터에 비해 안전하게 보호되어야 할 필요가 없는 실시간 응용 프로그램에서 흔히 이용됩니다.  (신뢰도= UDP < TCP , 속도 = UDP > TCP)

 

인터넷 계층

인터넷 계층은 네트워크 간 데이터 패킷의 전송을 관리합니다.

주소 변환 규약 (Address Resolution Protocol: ARP)는 네트워크 계층 주소와 링크 계층 주소 사이의 변환을 담당하는 프로토콜,

인터넷 그룹 관리 프로토콜 (Internet Group Management Protocol: IGMP) :  그룹 멤버십을 구성하거나, 그룹 관리를 위한 프로토콜,

인터넷 제어 메시지 프로토콜 (Internet Control Message Protocol: ICMP) :  인터넷 통신 서비스 환경에서 오류에 대한 알림과 관련된 메시지를 전달하는 목적의 프로토콜입니다.

 

데이터 링크 계층

데이터 링크 계층 (Datalink Layer)은 데이터 전송의 최하위 계층으로, 네트워크 인터페이스 계층(Network Interface Layer)이라고도 부릅니다.

이 계층에서 하는 일은 데이터가 원하는 IP 주소 (즉, 공유기)에 도달할 뿐만 아니라 해당 네트워크 내의 연결된 기기에 연결되어 있는지 확인하는 역할입니다. 데이터 링크 계층은 원하는 기기의 MAC 주소를 확인하고 이더넷 케이블 및 와이파이를 통한 데이터 전송을 관리하는 등의 작업을 담당합니다.

 

MQTT

MQTT[4](메시지 큐잉 텔레메트리 트랜스포트, Message Queuing Telemetry Transport)는 ISO 표준(ISO/IEC PRF 20922)[5] 발행-구독 기반의 메시징 프로토콜이다. TCP/IP 프로토콜 위에서 동작한다. "작은 코드 공간"(small code footprint)이 필요하거나
 네트워크 대역폭이 제한되는 원격 위치와의 연결을 위해 설계되어 있다. 발행-구독 메시징 패턴은 메시지 브로커가 필요하다.


연결하기

MQTT 연결의 예 (QoS 0). retain 플래그로 인해 클라이언트 B로부터의 최초 메시지가 저장된다.
서버와의 연결 수립을 기다린 다음 노드 간 링크를 만든다.

연결 끊기
MQTT[11] 클라이언트가 해야 할 일을 기다리고 인터넷 프로토콜 스위트 세션의 연결이 끊어지기를 기다린다.

발행하기
MQTT 클라이언트에 요청이 전달된 직후 애플리케이션 스레드에 즉시 반환한다.

MQTT란?
MQTT는 M2M, IOT를 위한 프로토콜로서, 최소한의 전력과 패킷량으로 통신하는 프로토콜입니다. 
따라서 IOT와 모바일 어플리케이션 등의 통신에 매우 적합한 프로토콜입니다.

MQTT는 HTTP, TCP등의 통신과 같이 클라이언트-서버 구조로 이루어지는 것이 아닌, 
Broker, Publisher, Subscriber 구조로 이루어집니다.

Publisher는 Topic을 발행(publish) 하고, Subscriber는 Topic에 구독(subscribe)합니다.
 Broker는 이들을 중계하는 역할을 하며, 단일 Topic에 여러 Subscriber가 구독할 수 있기 때문에, 1:N 통신 구축에도 매우 유용합니다.

MQTT에서 Topic은 /를 사용해서 구성되기 때문에,
위와 같이 계층을 구성한다면, IOT 센서와 같은 데이터를 관리하기에 매우 용이합니다.

MQTT는 QoS(Quality of Service)를 제공하는데, 총 3단계로 나뉘어져 있습니다.

* 0 : 메세지는 한번만 전달되며, 전달이후의 수신과정을 체크하지 않는다.
* 1 : 메세지는 한번 이상 전달되고, 핸드셰이킹 과정을 추적하나, 엄격하게 추적하지 않기 때문에 중복수신의 가능성이 있다.
* 2 : 메세지는 한번만 전달되고, 핸드셰이킹의 모든 과정을 체크한다.

QoS의 단계가 높아질 수록 통신의 품질은 향상되지만, 
그에 따라 성능 저하의 가능성이 있으므로. MQTT의 QoS는 프로젝트의 특성에 따라 결정되어야 합니다.

'프로그래밍 > IT용어설명' 카테고리의 다른 글

파일명, 폴더명 특수문자  (0) 2024.01.23
IP 관련 용어 정리  (0) 2024.01.22
MQTT 예제 SubScriber Publisher  (0) 2022.03.03
MQTT정리  (0) 2022.03.03
윈도우 자동실행  (0) 2022.03.02