이전 글에서는 CAN 통신이 하나의 CAN Bus를 여러 ECU가 함께 사용하는 브로드캐스트(Broadcast) 방식이라는 것을 알아보았다. 또한 모든 ECU가 동일한 메시지를 수신하지만, CAN ID를 확인하여 자신에게 필요한 데이터만 사용하는 구조라는 것도 살펴봤다.
그렇다면 ECU는 실제로 어떤 형태로 데이터를 전송할까?
예를 들어 Engine ECU가 현재 엔진 회전수(RPM)를 Transmission ECU나 계기판에 전달한다고 가정해 보자. ECU는 단순히 RPM 값만 보내는 것이 아니라, 메시지의 시작부터 끝까지 일정한 형식에 맞춰 데이터를 구성하여 전송한다.
이렇게 CAN 통신에서 사용하는 하나의 표준 메시지 형식을 CAN Frame이라고 한다.
아래는 CAN Frame 전체 구조를 보여주는 그림이다.

CAN Frame은 하나의 택배 상자와 같다
CAN Frame을 이해하는 가장 쉬운 방법은 택배를 떠올리는 것이다.
택배 상자에는 물건만 들어 있는 것이 아니다. 배송이 시작되었음을 나타내는 정보가 있고, 받는 사람의 주소가 있으며, 실제 물건이 들어 있고, 배송 중 문제가 없는지 확인하는 과정도 있다. 마지막에는 정상적으로 배송되었다는 확인도 이루어진다.
CAN Frame도 마찬가지이다.
실제 데이터만 전송하는 것이 아니라, 메시지가 시작되었음을 알리고, 어떤 데이터인지 구분하고, 오류를 검사하고, 정상적으로 수신했는지 확인하는 정보까지 함께 포함된다.
이러한 구조 덕분에 여러 ECU가 하나의 CAN Bus를 공유하면서도 안정적으로 통신할 수 있다.
SOF(Start Of Frame) - 메시지의 시작을 알리는 신호
CAN Bus는 평소 아무 메시지도 전송되지 않는 Idle 상태를 유지한다.
어떤 ECU가 데이터를 보내려고 하면 가장 먼저 SOF(Start Of Frame) 비트를 전송한다.
SOF는 말 그대로 "지금부터 새로운 CAN 메시지가 시작됩니다."라는 신호이다.

같은 CAN Bus에 연결된 모든 ECU는 SOF를 감지하는 순간 새로운 메시지의 수신을 시작한다.
즉, SOF는 모든 ECU의 동기화를 맞추는 시작점이라고 이해하면 된다.
Arbitration Field - 이 메시지는 누구를 위한 데이터일까?
SOF 다음에는 Arbitration Field가 전송된다.
이 영역에는 CAN ID가 포함되어 있으며, CAN Frame에서 가장 중요한 부분이라고 할 수 있다.
예를 들어 Engine ECU가 엔진 회전수를 전송하는 메시지라면 다음과 같은 CAN ID를 가질 수 있다.
CAN ID : 0x100
모든 ECU는 이 CAN ID를 먼저 확인한 후 자신이 필요한 데이터인지 판단한다.
예를 들어 계기판 ECU는 RPM 정보를 표시하기 위해 이 메시지를 사용하지만, Door ECU는 필요하지 않은 정보이므로 그대로 무시한다. 또한 Arbitration Field는 이름 그대로 중재(Arbitration) 기능도 담당한다.

두 개 이상의 ECU가 동시에 메시지를 전송하려고 할 경우, 이 영역에서 CAN ID를 비교하여 우선순위를 결정한다.
CAN에서는 숫자가 작은 CAN ID일수록 높은 우선순위를 가진다.
Control Field - 앞으로 전송될 데이터의 길이를 알려준다
CAN ID 다음에는 Control Field가 이어진다.
이 영역에는 DLC(Data Length Code)가 포함되어 있으며, Data Field에 몇 Byte의 데이터가 들어 있는지를 알려주는 역할을 한다.
예를 들어 DLC 값이 8이라면 뒤이어 8Byte의 데이터가 전송된다는 의미이다.
수신 ECU는 DLC를 확인한 후 정확한 길이만큼 데이터를 읽는다.
Data Field - 실제 차량 정보가 들어 있는 공간
Data Field는 CAN Frame에서 가장 중요한 부분이다.
실제로 ECU가 전달하려는 정보가 이곳에 저장된다.
예를 들어 하나의 CAN Frame 안에는 다음과 같은 데이터가 들어 있을 수 있다.

실무에서는 CANoe나 CANalyzer에서 16진수(Hex) 데이터만 보이지만,
DBC(Database CAN) 파일에 정의된 규칙에 따라 이러한 값들이 실제 RPM이나 차량 속도로 변환된다.
Classical CAN에서는 최대 8Byte까지 데이터를 전송할 수 있으며, CAN FD에서는 최대 64Byte까지 확장되었다.
CRC Field - 데이터가 손상되지 않았는지 검사한다
자동차는 전기적 노이즈가 매우 많은 환경이다.
모터, 발전기, 릴레이 등 다양한 전기 장치 때문에 통신 중 데이터가 손상될 가능성이 있다.
이를 확인하기 위해 CAN은 CRC(Cyclic Redundancy Check) 값을 함께 전송한다.
수신 ECU는 동일한 방식으로 CRC를 다시 계산하여 비교하고, 값이 다르면 해당 메시지를 오류(Frame Error)로 판단한다.
즉, CRC는 데이터의 무결성을 확인하는 역할을 한다.
ACK Field - 메시지를 잘 받았는지 확인한다
CRC까지 문제가 없었다면 메시지를 정상적으로 수신한 ECU는 ACK 비트를 전송한다.
이를 통해 송신 ECU는 자신의 메시지가 정상적으로 전달되었다는 사실을 확인할 수 있다.
만약 ACK가 발생하지 않는다면 송신 ECU는 메시지가 전달되지 않은 것으로 판단하고 다시 전송을 시도한다.
EOF(End Of Frame) - 메시지의 끝을 알린다
마지막으로 EOF(End Of Frame)가 전송된다.
EOF는 현재 CAN Frame이 끝났음을 모든 ECU에게 알려주는 역할을 한다.
EOF가 끝나면 CAN Bus는 다시 Idle 상태로 돌아가며, 다음 ECU가 새로운 CAN Frame을 전송할 수 있게 된다.
CAN Frame 전체 흐름
지금까지 살펴본 내용을 하나의 흐름으로 정리하면 다음과 같다.

- SOF가 전송되며 새로운 CAN Frame이 시작된다.
- Arbitration Field에서 CAN ID를 전송하고 우선순위를 결정한다.
- Control Field에서 데이터의 길이를 알려준다.
- Data Field에 실제 차량 정보를 전송한다.
- CRC를 이용해 데이터가 손상되지 않았는지 검사한다.
- 수신 ECU는 ACK를 보내 정상적으로 수신했음을 알린다.
- EOF를 전송하며 하나의 CAN Frame이 종료된다.
즉, CAN Frame은 단순히 데이터를 담는 공간이 아니라
메시지의 시작부터 종료까지 필요한 모든 정보를 포함하는 표준화된 데이터 구조인 것이다.
마무리
CAN 통신이 높은 신뢰성을 갖는 이유는 단순히 데이터를 빠르게 전송하기 때문이 아니다.
메시지의 시작을 알리는 SOF, 우선순위를 결정하는 Arbitration Field, 데이터 길이를 알려주는 Control Field, 실제 정보를 담는 Data Field, 오류를 검출하는 CRC, 정상 수신을 확인하는 ACK, 그리고 메시지의 종료를 알리는 EOF까지 모든 과정이 정해진 규칙에 따라 동작하기 때문이다.
이러한 구조 덕분에 수십 개의 ECU가 하나의 CAN Bus를 공유하면서도 충돌 없이 안정적으로 데이터를 주고받을 수 있으며, CAN은 지금도 자동차에서 가장 널리 사용되는 차량 통신 프로토콜로 자리 잡고 있다.
'CAN, LIN 통신' 카테고리의 다른 글
| CAN_H와 CAN_L이란? 왜 CAN은 두 개의 선을 사용할까? (0) | 2026.07.02 |
|---|---|
| CAN Arbitration이란? 왜 CAN ID가 작은 메시지가 먼저 전송될까? (0) | 2026.06.30 |
| 자동차 CAN 통신은 어떻게 동작할까? CAN 통신 원리 쉽게 이해하기 (0) | 2026.06.29 |
| 자동차 BCAN, PCAN, CCAN, LCAN이란? 실무에서 사용하는 CAN 네트워크 이름 정리 (0) | 2026.06.27 |
| 자동차 CAN 통신 종류 총정리 (Classical CAN, HS CAN, LS CAN, CAN FD, CAN XL) (0) | 2026.06.26 |