정의
CAN 프로토콜 계층 구조는 OSI 기본 참조 모델의 하위 두 계층 — 데이터 링크 계층과 물리 계층 — 을 CAN이 서브레이어로 나눠 규정한 배치다. ISO 11898 시리즈가 이 서브레이어들을 파트별로 나눠 규정한다.[1]
CAN을 처음 볼 때 가장 먼저 잡아야 할 것은 “CAN이 어디까지를 정하는가”다. CAN은 통신의 전 구간을 정하지 않는다. 프레임을 어떻게 만들고 누가 언제 버스를 쓰는지(2계층), 그리고 그 비트를 어떤 신호로 바꾸는지(1계층)까지만 규정하고, 라우팅·전송 제어 같은 상위 기능은 상위 계층 프로토콜에 맡긴다. 이 경계를 알아야 어떤 문제를 CAN 표준에서 찾고 어떤 문제를 응용에서 찾을지 판단할 수 있다.
OSI 대응
OSI 기본 참조 모델은 통신 기능을 응용 계층(7계층)부터 물리 계층(1계층)까지 일곱 계층으로 나눈다.[2] ISO 11898 아키텍처는 이 중 데이터 링크 계층(2계층)과 물리 계층(1계층)만 정의한다.[3]
서브레이어
CAN의 하위 계층은 데이터 링크 계층(DLL)과 물리 계층의 세 서브레이어로 나뉜다.[1]
| 계층·서브레이어 | 역할 | 규정하는 파트 |
|---|---|---|
| 데이터 링크 계층(DLL) | 데이터 캡슐화, 프레임 코딩, 비트 스터핑, 직렬화, 오류 검출·신호, 확인 응답 | ISO 11898-1[4] |
| 물리 코딩 서브레이어(PCS) | 비트 인코딩·디코딩, 동기화 | ISO 11898-1 |
| 물리 매체 결합 서브레이어(PMA) | 물리 신호와 논리 신호의 상호 변환 | ISO 11898-2[5], ISO 11898-3[6] |
| 물리 매체 의존 서브레이어(PMD) | 전송 매체·커넥터 | 응용별 — ISO 11898 범위 밖 |
데이터 링크 계층은 다시 논리 링크 제어(LLC)와 매체 접근 제어(MAC)로 갈라진다.
구현 대응
이 서브레이어 경계는 부품 경계와 거의 그대로 맞물린다. DLL과 PCS는 CAN 컨트롤러가, PMA는 CAN 트랜시버가 구현한다.[6] PMD에 해당하는 케이블·커넥터는 표준이 정하지 않고 응용이 고른다.[1] 부품 관점의 구성은 CAN 노드 구조에서 다룬다.
옛 용어
옛 자료는 물리 계층 쪽을 medium access unit(MAU)·medium dependent interface(MDI)라는 이름으로 다뤘다.[7] 지금의 PCS·PMA·PMD 구분과 한 칸씩 맞아떨어지지는 않으므로, 옛 이름을 현행 서브레이어로 곧바로 바꿔 읽지 않는 편이 좋다. 명칭이 바뀐 경위는 ISO 11898-2의 판 이력에 있다.