MODBUS TCP/IP 프로토콜: 제어 시스템 통신을 위한 인터넷 기반 프로토콜과 보안 취약성

MODBUS TCP/IP 프로토콜: 제어 시스템 통신을 위한 인터넷 기반 프로토콜과 보안 취약성

MODBUS TCP/IP: 인터넷 프로토콜 기반의 제어 시스템 통신 프로토콜

MODBUS TCP/IP는 제어 시스템에서 사용되는 통신 프로토콜 중 하나입니다. 이 프로토콜은 MODBUS 프로토콜을 인터넷 프로토콜(IP) 기반의 이더넷(Ethernet) 또는 TCP/IP 네트워크 상에서 사용할 수 있도록 수정한 것입니다. MODBUS TCP/IP는 주로 다음과 같은 곳에 사용됩니다.

  • 공장 자동화 
  • 건물 자동화
  • 너지 관리 시스템

MODBUS 메모리 데이터
MODBUS에서 데이터 가져오기

MODBUS TCP/IP는 기존의 MODBUS 프로토콜과 달리 이더넷 또는 TCP/IP 기반의 네트워크 상에서 동작합니다. 이를 통해 기존의 RS-485 또는 RS-232와 같은 시리얼 통신 방식에 비해 더 높은 전송 속도와 통신 거리를 제공합니다.

MODBUS TCP/IP와 일반 TCP/IP의 차이점과 공통점

MODBUS TCP/IP는 일반적인 TCP/IP 프로토콜 위에서 구동되는 프로토콜로, 기존의 MODBUS 프로토콜을 이더넷 상에서 사용할 수 있도록 개선한 것입니다. 따라서, MODBUS TCP/IP와 일반 TCP/IP는 서로 다른 프로토콜이 아니라, MODBUS TCP/IP가 TCP/IP 프로토콜을 기반으로 하여 만들어졌다는 점에서 차이가 있습니다. 하지만, MODBUS TCP/IP는 일반적인 TCP/IP와는 몇 가지 차이점이 있습니다.

  • 프로토콜 구조: 일반적인 TCP/IP는 데이터를 패킷 단위로 전송하는 반면, MODBUS TCP/IP는 MODBUS 프로토콜에 맞게 데이터를 패킷 단위로 전송합니다.
  • 포트 번호: 일반적으로 TCP/IP에서는 포트 번호를 사용하여 서버와 클라이언트 간의 통신을 구분합니다. MODBUS TCP/IP에서는 기본적으로 502번 포트를 사용합니다.
  • 데이터 형식: MODBUS TCP/IP는 MODBUS 프로토콜에 맞게 데이터를 전송하기 때문에, 데이터의 형식이 일반적인 TCP/IP와는 다를 수 있습니다.

따라서, MODBUS TCP/IP는 일반 TCP/IP와는 몇 가지 차이점이 있지만, 기본적으로는 TCP/IP 프로토콜을 기반으로 하기 때문에, TCP/IP를 이해하고 있다면 비교적 쉽게 이해할 수 있습니다.

MODBUS TCP/IP: 클라이언트-서버 아키텍처와 보안 취약성

MODBUS TCP/IP는 클라이언트-서버 아키텍처를 사용합니다. 클라이언트는 MODBUS TCP/IP 프로토콜을 사용하여 서버에 요청을 보내고, 서버는 해당 요청을 처리하고 응답을 반환합니다. 

전송 과정
데이터 전송 과정
이를 통해 다양한 장치 및 시스템 간의 통신을 가능하게 합니다. MODBUS TCP/IP는 간단하고 효율적인 프로토콜로서, 많은 제어 시스템에서 사용되고 있습니다. 그러나 보안적인 취약점이 있을 수 있으므로 적절한 보안 조치가 필요합니다.

MODBUS TCP 패킷
MODBUS TCP 패킷의 형태

MODBUS TCP 데이터 구조와 필드 설명

MODBUS TCP는 TCP/IP 기반의 프로토콜로서, 데이터 구조는 MODBUS RTU와는 다소 차이가 있습니다. MODBUS TCP의 데이터 구조는 다음과 같습니다.

  • 헤더(Header): MODBUS TCP 패킷의 헤더는 7바이트로 구성되며, 각각의 필드는 다음과 같습니다.
  • Transaction Identifier: 2바이트의 필드로서, 클라이언트가 요청을 보낼 때 마다 증가하는 번호입니다.
  • Protocol Identifier: 2바이트의 필드로서, MODBUS TCP의 경우 0x0000으로 설정됩니다.
  • Length: 2바이트의 필드로서, 데이터 부분의 길이를 나타냅니다.
  • Unit Identifier: 1바이트의 필드로서, 모드버스 장치의 ID를 나타냅니다.
  • 데이터(Data): 데이터 부분은 요청 메시지와 응답 메시지 모두에서 다르게 구성됩니다.
  • 요청 메시지: 데이터 부분은 6바이트로 구성되며, 다음과 같은 필드를 포함합니다.
  • Function Code: 1바이트의 필드로서, 요청 메시지의 기능을 나타냅니다.
  • Starting Address: 2바이트의 필드로서, 요청 메시지에서 읽을 시작 주소를 나타냅니다.
  • Quantity of Registers: 2바이트의 필드로서, 요청 메시지에서 읽을 레지스터 수를 나타냅니다.
  • 응답 메시지: 데이터 부분은 요청 메시지와 달리 요청한 데이터의 값을 포함하고 있습니다. 값은 2바이트씩 묶어서 전송되며, 데이터 부분의 길이는 Quantity of Registers 필드의 값에 따라 달라집니다.
  • CRC(Cyclic Redundancy Check): CRC는 오류 검사용으로 사용되며, 2바이트의 필드로서 데이터 부분의 CRC 값을 나타냅니다.
MODBUS 통신 프로토콜
프로토콜 정의

MODBUS TCP 프로토콜 적용 사례

다음은 MODBUS TCP를 이용한 적용 예를 도시한 것이다.  축전지 감시장치를 이용하는 소프트웨어는 아래 그림과 같은 구조로 통신을 연결하면 된다.

MODBUS TCP 적용
MODBUS 적용 예시

MODBUS 통신 프로토콜을 이용하여 구현하는 기능은 다음과 같다.
  • 셀 내부저항, 전압, 온도 정보
  • 축전지의 전체 충전/방전 전압 및 전류 정보
  • 축전지 감시장치의 동작 상태 정보
  • 축전지 감시장치의 장애 상태 정보
  • 시작 / 종료 동작 명령

비행기 위탁수하물에 USB 충전식 LED 조명 거울을 부칠 수 있는지에 대한 상세 분석

비행기 위탁수하물에 USB 충전식 LED 조명 거울을 부칠 수 있는지에 대한 상세 분석 항공기 여행 시 위탁수하물로 전자기기(특히 배터리 내장 제품)를 부칠 때는 각종 규정과 제한 사항을 준수해야 합니다. USB 충전식 LED 조명 거울의 위탁 여부는...