정의

버스 네트워킹 과제는 여러 노드가 하나의 전송 매체를 나눠 쓰며 통신하기 위해 버스 프로토콜이 규정해야 하는 일들이다. 매체 위의 신호 표현, 비트열을 프레임으로 묶고 오류를 검출하는 규칙, 언제 어느 노드가 전송해도 되는지, 노드 사이의 비트 타이밍 동기가 모두 여기에 든다.[1]

전용선으로 두 제어기를 직접 잇는다면 필요한 약속은 많지 않다. 선이 하나뿐이라 누가 언제 말할지 다툴 일이 없고, 상대가 하나뿐이라 수신자를 밝힐 일도 없다. 차량 버스 네트워킹처럼 하나의 매체를 여럿이 나눠 쓰기 시작하는 순간 이 약속들이 한꺼번에 필요해진다.

아래에서는 그 약속을 여섯 갈래로 나눠 본다. CAN을 포함한 모든 버스 프로토콜은 이 여섯 자리를 저마다의 답으로 채운 결과물이며, 각 갈래가 CAN에서 어떻게 채워졌는지는 해당 페이지로 이어진다.

물리 계층

첫 과제는 비트를 매체 위의 물리적 신호로 바꾸는 방법을 정하는 것이다. 어떤 전송 매체를 쓸지, 논리 값 하나가 어떤 신호 상태에 대응할지, 초당 몇 비트를 실어 보낼지가 여기서 결정된다.

CAN의 물리 계층 선택지는 대부분 공통 접지를 갖는 꼬임쌍선 구리 케이블 위에서 동작하며, 어떤 트랜시버 계열을 쓰느냐에 따라 낼 수 있는 비트율의 상한이 갈린다. 광섬유나 전력선을 쓰는 구현도 있지만 그 사양은 표준이 아니라 제조사 고유의 것이다.[2] 신호 상태를 전압으로 어떻게 나타내는지는 CAN 버스 레벨이, 두 선의 전압 차로 값을 읽는 이유는 차동 전송이, 그 일을 맡는 부품은 CAN 트랜시버가 다룬다. 이 과제가 프로토콜 계층 구조의 어디에 놓이는지는 CAN 프로토콜 계층 구조에 정리돼 있다.

프레이밍

프레이밍은 끊임없이 흘러가는 비트열을 시작과 끝이 분명한 단위로 묶는 일이다. OSI 기본 참조 모델은 같은 계층의 개체들이 주고받는 이 단위를 프로토콜 데이터 단위(PDU)라 부르고, PDU가 프로토콜 제어 정보(PCI)와, 있을 경우 사용자 데이터로 이루어진다고 규정한다. PCI는 개체들이 함께 동작하도록 뒷받침하는 정보이고, 사용자 데이터는 상위 계층을 위해 투명하게 실려 가는 부분이다.[3]

실제 프로토콜의 프레임은 이 두 가지를 대개 세 블록으로 배치한다. 앞쪽에 제어 정보를 모은 헤더, 가운데에 실어 나를 페이로드, 뒤쪽에 검사 값을 담은 트레일러다. FlexRay 프레임이 헤더·페이로드·트레일러 세 구획으로 나뉘고 트레일러가 오류 검출용 CRC만 담는 것이 전형적인 예다.[4] PROFIBUS 프레임의 헤더는 목적지 주소와 출발지 주소, 프레임 제어를 담고, 데이터 단위 뒤에는 손상된 프레임을 걸러 내는 프레임 검사 시퀀스(FCS)가 붙는다.[5] LIN 프레임은 헤더와 응답으로 나뉘고, 응답은 데이터 필드에 이어 체크섬 필드로 끝난다.[6]

트레일러는 페이로드를 압축한 중복이라고 볼 수 있다. 송신기는 전송하는 비트로부터 검사 합을 계산해 프레임 안에 실어 보내고, 수신기는 버스에서 본 비트로 같은 계산을 되풀이해 받은 값과 견준다. 두 값이 어긋나면 그 프레임은 손상된 것이다.[7] CAN 프레임이 이 구조를 어떤 필드로 구현하는지는 CAN 프레임에서 다룬다.

한 프레임에 담을 수 있는 페이로드 길이는 유한하므로, 그보다 큰 데이터를 옮기려면 쪼개고 다시 붙이는 절차가 따로 필요하다. 이 일은 버스 프로토콜의 몫이 아니라 상위 계층 프로토콜의 몫이다.

주소 지정

주소 지정은 프레임이 누구를 향하는지 정하는 규칙이며, 크게 두 모델이 있다.

노드 주소 지정은 프레임에 출발지와 목적지 노드의 주소를 실어 보낸다. PROFIBUS가 프레임 헤더에 목적지 주소와 출발지 주소를 두는 것이 그 예다.[5] 프레임이 특정 상대를 지목하므로 송신자는 누가 이 정보를 필요로 하는지 미리 알고 있어야 하고, 수신자가 바뀌면 송신자 쪽 설정도 따라 바뀐다.

메시지 주소 지정은 반대로 수신자를 지목하지 않는다. CAN의 식별자는 프레임이 어디로 가는지가 아니라 그 안에 든 정보가 무엇인지를 가리키며, 동시에 버스 접근 우선순위를 정한다. 프레임은 모든 노드에 한 번에 도달하고, 각 노드가 그 정보를 쓸지 말지를 스스로 판단한다. 그래서 수신만 하는 노드를 새로 붙일 때 기존 노드의 하드웨어나 소프트웨어를 고칠 필요가 없다.[8] 한 노드에서 모든 노드로 동시에 전송하는 것을 브로드캐스트 전송, 노드 무리를 대상으로 하는 것을 멀티캐스트 전송이라 부르고, 어떤 식별자의 프레임을 응용까지 올릴지 고르는 장치가 CAN 컨트롤러 안의 수용 필터다.[1]

CAN이 이 모델을 구체적으로 어떻게 쓰는지는 CAN 메시지 주소 지정에서, 식별자가 우선순위로 쓰이는 대목은 CAN 중재에서 이어받는다.

데이터 보호

버스 위의 데이터를 지키는 수단은 두 층으로 나뉜다. 하나는 방해가 신호에 실리는 것 자체를 줄이는 물리적 수단이고, 다른 하나는 그래도 생긴 오류를 찾아내 알리고 되돌리는 프로토콜 수단이다.

물리적 수단은 배선과 회로 설계의 몫이다. 두 신호선을 꼬아 특성 임피던스를 맞춘 케이블을 쓰고, 전기적으로 험한 환경에서는 차폐 케이블을 골라 네트워크를 한 지점에서만 접지해 기생 전류가 차폐선을 타고 흐르지 않게 한다. 버스 양 끝에는 케이블의 특성 임피던스와 같은 값의 종단 저항을 달아 반사를 억제하고, 배선이 길어질수록 비트율을 낮춘다.[9] 트랜시버 쪽에서는 신호의 상승·하강 기울기를 완만하게 제한해 전자기 방출을 줄이기도 한다.[10] 종단과 배선 길이의 구체적 제약은 CAN 버스 종단에서 다룬다.

프로토콜 수단은 프레임 안에 넣은 중복과 규칙 위반 검사로 이루어진다. CAN 데이터 링크 계층은 CRC, 형식 검사, 확인 응답 검사, 비트 모니터링, 비트 스터핑이라는 다섯 가지 검출 장치를 두고, 어느 한 노드라도 오류를 검출하면 에러 프레임을 보내 진행 중인 전송을 중단시킨다. 이렇게 국소적으로 검출된 오류가 전역에 알려지고, 수신자들은 중단된 프레임의 재전송을 기다린다.[8] 검출 장치 각각의 규칙은 CAN 오류 검출이, 중단 신호의 구조는 CAN 에러 프레임이 이어받는다.

버스 접근

버스 접근은 언제 어느 노드가 전송해도 되는지를 밝히는 규칙이다. CAN에서는 버스가 유휴이기만 하면 어느 노드든 곧바로 프레임 전송을 시작할 수 있고, 겹쳤을 때의 조정은 버스 중재가 맡는다.[1]

이 규칙이 없으면 두 노드가 같은 순간에 말해 서로의 신호를 망가뜨린다. 그래서 모든 버스 프로토콜은 겹침을 허용하고 나중에 푸는 쪽과 아예 겹칠 수 없게 시점을 배분하는 쪽 가운데 하나를 고르며, 그 선택이 지연의 상한이 무엇에 매이는지를 결정한다. 네 가지 대표적인 답과 그 시간 거동의 차이는 버스 접근 방식에서 따로 다룬다.

동기화

CAN 버스에는 데이터를 나르는 선 말고 클럭을 따로 나르는 선이 없다. 수신 노드는 데이터 신호 자체의 에지에서만 타이밍 정보를 얻어야 하고, 그래서 동기화가 독립된 과제가 된다.

동기화는 두 단계로 나뉜다. 프레임이 시작되는 시점에 비트 시간의 기준점을 새로 잡는 초기 동기화와, 전송이 진행되는 동안 어긋난 위상을 조금씩 되잡는 재동기화다. CAN에서 초기 동기화는 버스에서 검출된 SOF 비트의 하강 에지에 모든 노드가 맞추는 하드 동기화이고, 재동기화는 비트 시간 안의 위상 버퍼 세그먼트를 늘이거나 줄여 이루어진다. NRZ 코딩에서 재동기화에 쓸 에지를 주기적으로 만들어 주는 것이 비트 스터핑이다.[1]

동기의 기준을 어디서 얻느냐는 버스 접근 방식에 따라 달라진다. LIN은 슬레이브 노드에 정밀한 발진자를 요구하지 않는 대신, 마스터가 보내는 헤더의 sync 필드로 슬레이브가 스스로 비트율을 맞추게 한다.[6] CAN의 절차는 CAN 동기화에, 비트 시간이 세그먼트로 나뉘는 방식은 CAN 비트 타이밍에, 에지를 만들어 내는 규칙은 CAN 비트 스터핑에 있다.

[1]
CAN in Automation, “CANdictionary: Keywords, Technical Terms, Standards,” CAN in Automation, Brochure, 2023. Accessed: Aug. 25, 2026. [Online]. Available: https://www.can-cia.org/fileadmin/cia/documents/brochures/can_dictionary_v12.pdf
[2]
CAN in Automation, “Physical layer options.” 2026. Accessed: Aug. 24, 2026. [Online]. Available: https://www.can-cia.org/can-knowledge/physical-layer-options
[3]
International Telecommunication Union, “Information technology — Open Systems Interconnection — Basic Reference Model: The Basic Model.” ITU-T Recommendation X.200, Jul. 1994. [Online]. Available: https://www.itu.int/rec/T-REC-X.200-199407-I/en
[4]
National Instruments, “FlexRay Automotive Communication Bus Overview.” 2026. Accessed: Aug. 25, 2026. [Online]. Available: https://www.ni.com/en/shop/seamlessly-connect-to-third-party-devices-and-supervisory-system/flexray-automotive-communication-bus-overview.html
[5]
PROFIBUS Nutzerorganisation, “PROFIBUS Specification: Normative Parts of PROFIBUS-FMS, -DP, -PA according to the European Standard EN 50 170 Volume 2,” PROFIBUS Nutzerorganisation, Specification, Mar. 1998. Accessed: Aug. 25, 2026. [Online]. Available: https://www.newelec.co.za/wp-content/uploads/2017/05/ProfiBus-Specifications-v1_00.pdf
[6]
LIN Consortium, “LIN Specification Package, Revision 2.2A,” LIN Consortium, Specification, Dec. 2010. Accessed: Aug. 25, 2026. [Online]. Available: https://www.lin-cia.org/fileadmin/microsites/lin-cia.org/resources/documents/LIN_2.2A.pdf
[7]
CAN in Automation, “Cyclic redundancy check in CAN frames.” 2026. Accessed: Aug. 25, 2026. [Online]. Available: https://www.can-cia.org/can-knowledge/cyclic-redundancy-check-crc-in-can-frames
[8]
CAN in Automation, “Controller Area Network classic (CAN CC).” 2026. Accessed: Aug. 25, 2026. [Online]. Available: https://www.can-cia.org/can-knowledge/can-cc
[9]
S. Corrigan, “Controller Area Network physical layer requirements,” Texas Instruments, Application report SLLA270, 2008. [Online]. Available: https://www.ti.com/lit/an/slla270/slla270.pdf
[10]
NXP Semiconductors, “TJA1055 enhanced fault-tolerant CAN transceiver,” NXP Semiconductors, Product data sheet Rev. 5, 2013. [Online]. Available: https://www.nxp.com/docs/en/data-sheet/TJA1055.pdf