CSMA-CD(Carrier Sense Multiple Access with Collision Detection, 흔히 CSMA/CD로 표기한다)는 초기 이더넷이 하나의 공유 매체를 여러 노드가 나눠 쓰기 위해 쓴 매체 접근 방식이다. 이름의 세 구성 요소가 각각 규칙을 나타낸다 — Carrier Sense는 전송에 앞서 회선이 사용 중인지 감지하는 절차를, Multiple Access는 회선이 유휴 상태이면 어떤 노드든 곧바로 접근할 수 있다는 규칙을, Collision Detection은 전송 도중에도 충돌 여부를 계속 조사하는 절차를 가리킨다[1].

동작 절차와 지수 백오프

노드는 프레임을 전송하기 전 회선 상태를 점검해 사용 중이면 유휴 상태가 될 때까지 기다리고, 유휴 상태이면 곧바로 전송을 시작한다. 전송 도중 충돌이 감지되면 노드는 잼(jam) 신호를 실어 다른 노드에게도 충돌을 알리고 재전송을 시도하는데, 이 재전송은 정해진 최대 시도 횟수(attemptLimit) 16회에 이를 때까지만 반복되고 그 이상 실패하면 전송을 중단한다[1].

재전송 대기 시간은 시도 횟수가 늘수록 대기 범위가 지수적으로 늘어나는 truncated binary exponential backoff로 정해진다 — n번째 충돌 뒤에는 0부터 사이의 정수 하나를 무작위로 골라 그 값만큼의 슬롯 타임(slot time) 동안 기다린 뒤 재시도한다. 이 지수 증가는 10번째 충돌에서 멈춰(truncated) 이후로는 항상 0~1023 슬롯 타임 사이에서 고른다[1]. 충돌이 반복될수록 대기 범위를 넓혀 매체의 통신량 자체를 줄이는 효과를 낸다.

회선 유휴 확인 후 프레임 전송 전송 완료 Jam 신호 전송, 시도 횟수 n = n + 1 전송 중단 (attemptLimit 초과) 충돌 감지 충돌 없음 n > 16 n ≤ 16: 슬롯 타임만큼 대기 후 재시도

전이중·스위치 환경에서의 퇴장

CSMA-CD는 여러 노드가 실제로 하나의 매체를 공유하는 반이중(half duplex) 환경에서만 의미가 있다. 스위치가 노드마다 독립된 포트로 연결하고 각 링크가 송신·수신을 동시에 처리하는 전이중(full duplex)으로 동작하는 오늘날의 이더넷에서는 애초에 두 신호가 겹칠 여지가 없어 CSMA-CD 자체가 동작하지 않는다[1]. CAN이 충돌을 상시적인 정상 동작으로 받아들여 식별자 비트로 그 자리에서 손실 없이 해소하는 것과 달리, 이더넷은 이렇게 매체 자체를 분리해 충돌 가능성을 없애는 쪽을 택했다 — 두 접근 방식의 대조는 CAN vs Ethernet에서 다룬다.

참고문헌

[1]
IEEE, “IEEE 802.3-2022 — IEEE Standard for Ethernet”, 2022.