MODBUS TCP/IP 프로토콜: 제어 시스템 통신을 위한 인터넷 기반 프로토콜과 보안 취약성
MODBUS TCP/IP: 인터넷 프로토콜 기반의 제어 시스템 통신 프로토콜
MODBUS TCP/IP는 제어 시스템에서 사용되는 통신 프로토콜 중 하나입니다. 이 프로토콜은 MODBUS 프로토콜을 인터넷 프로토콜(IP) 기반의 이더넷(Ethernet) 또는 TCP/IP 네트워크 상에서 사용할 수 있도록 수정한 것입니다. MODBUS TCP/IP는 주로 다음과 같은 곳에 사용됩니다.
- 공장 자동화
- 건물 자동화
- 에너지 관리 시스템
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 패킷의 형태 |
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 TCP 프로토콜 적용 사례
- 셀 내부저항, 전압, 온도 정보
- 축전지의 전체 충전/방전 전압 및 전류 정보
- 축전지 감시장치의 동작 상태 정보
- 축전지 감시장치의 장애 상태 정보
- 시작 / 종료 동작 명령