CSMA/CD와 CSMA/CA
누가 먼저 말할 것인가
하나의 네트워크에 여러 장치가 연결되어 있을 때, 동시에 데이터를 보내면 신호가 겹쳐 충돌(Collision)이 발생합니다. 이 충돌을 관리하는 방법이 CSMA(Carrier Sense Multiple Access)입니다.
CSMA는 "반송파 감지 다중 접속"이라는 뜻입니다. 풀어 말하면, 여러 장치(Multiple Access)가 하나의 매체를 공유하면서, 데이터를 보내기 전에 회선이 비어 있는지 확인(Carrier Sense)한다는 것입니다.
교실에서 발표할 때를 생각해보세요. 누군가 말하고 있으면 기다리고, 조용해지면 말하기 시작합니다. CSMA도 같은 원리입니다.
하지만 "조용해졌다"고 판단한 두 사람이 동시에 말하기 시작할 수 있습니다. 이 충돌을 어떻게 처리하느냐에 따라 CD(Collision Detection)와 CA(Collision Avoidance)로 나뉩니다.
CSMA/CD (Collision Detection) - 충돌 감지
CSMA/CD는 유선 LAN(이더넷, IEEE 802.3)에서 사용하는 매체 접근 방식입니다. 충돌이 발생하면 감지(Detection)하고 처리합니다.
동작 과정을 단계별로 따라가 봅시다.
1단계 - 회선 감지(Carrier Sense). 데이터를 보내려는 장치가 먼저 회선이 비어 있는지 확인합니다. 누군가 데이터를 전송 중이면 기다립니다.
2단계 - 전송 시작. 회선이 비어 있으면 데이터를 전송하기 시작합니다.
3단계 - 충돌 감지(Collision Detection). 전송 중에도 회선을 계속 감시합니다. 다른 장치가 동시에 전송을 시작했다면 신호가 겹쳐 충돌이 발생합니다. 이 충돌을 감지합니다.
4단계 - 잼 신호(Jam Signal) 전송. 충돌이 감지되면 즉시 전송을 멈추고, 잼 신호(Jam Signal)를 보냅니다. "충돌이 발생했으니 모두 전송을 멈추라"는 알림입니다.
5단계 - 백오프(Back-off). 충돌에 관련된 모든 장치가 임의의 시간 동안 기다린 후 다시 1단계부터 시도합니다. 각 장치가 다른 시간만큼 기다리므로, 다시 동시에 전송할 확률이 줄어듭니다. 이것을 이진 지수 백오프(Binary Exponential Back-off) 알고리즘이라고 합니다.
CSMA/CD의 핵심은 "먼저 보내고, 충돌이 나면 그때 처리한다"는 것입니다. 유선 환경에서는 전송 중에 충돌을 감지할 수 있기 때문에 이 방식이 가능합니다.
참고로 현대의 스위치 기반 네트워크는 전이중(Full-Duplex) 모드로 동작하여 충돌이 발생하지 않으므로, CSMA/CD가 실제로 동작하는 경우는 드뭅니다. 하지만 시험에서는 여전히 중요합니다.
CSMA/CA (Collision Avoidance) - 충돌 회피
CSMA/CA는 무선 LAN(Wi-Fi, IEEE 802.11)에서 사용하는 매체 접근 방식입니다. 충돌을 회피(Avoidance)하는 데 초점을 맞춥니다.
무선에서는 왜 CD 대신 CA를 사용할까요. 무선 환경에서는 전송 중에 충돌을 감지하기가 매우 어렵습니다. 자기가 보내는 신호가 너무 강해서, 다른 장치의 약한 충돌 신호를 구분할 수 없기 때문입니다. 그래서 충돌이 나기 전에 미리 회피하는 전략을 씁니다.
동작 과정입니다.
1단계 - 회선 감지. 회선이 비어 있는지 확인합니다.
2단계 - IFS(Inter-Frame Space) 대기. 회선이 비어 있어도 바로 보내지 않고, 정해진 시간(IFS)만큼 기다립니다.
3단계 - 랜덤 백오프. IFS 이후에도 추가로 임의의 시간을 기다립니다. 이렇게 하면 여러 장치가 동시에 전송을 시작할 확률이 줄어듭니다.
4단계 - 전송. 대기 시간이 끝나면 데이터를 전송합니다.
5단계 - ACK 수신. 수신 측이 데이터를 정상적으로 받으면 ACK(확인 응답)를 보냅니다. ACK를 받지 못하면 충돌 또는 오류가 발생한 것으로 판단하고 재전송합니다.
숨은 노드 문제와 RTS/CTS
무선 환경에서는 숨은 노드(Hidden Node) 문제가 발생합니다. A와 C가 서로 통신 범위 밖에 있지만, 둘 다 B와는 통신할 수 있는 상황입니다. A는 C가 전송 중인지 모르고, C도 A가 전송 중인지 모릅니다. 둘 다 B에게 동시에 보내면 B에서 충돌이 발생합니다.
이 문제를 해결하기 위해 RTS/CTS 방식을 사용합니다.
- 송신 측이 RTS(Request To Send) 신호를 보냅니다. "보내도 되겠습니까?"
- 수신 측이 CTS(Clear To Send) 신호로 응답합니다. "보내세요."
- CTS를 들은 다른 모든 장치는 전송을 자제합니다.
- 송신 측이 데이터를 전송합니다.
CSMA/CD vs CSMA/CA 비교
| 구분 | CSMA/CD | CSMA/CA |
|---|---|---|
| 사용 환경 | 유선 LAN (이더넷) | 무선 LAN (Wi-Fi) |
| IEEE 표준 | 802.3 | 802.11 |
| 충돌 처리 | 충돌 감지 후 재전송 | 충돌 회피 (사전 대기) |
| 전송 확인 | 없음 (충돌 감지로 대체) | ACK로 확인 |
| 잼 신호 | 사용 | 사용하지 않음 |
| RTS/CTS | 사용하지 않음 | 사용 (선택적) |
| 백오프 | 이진 지수 백오프 | 랜덤 백오프 |
시험 포인트
- CSMA/CD: 유선(802.3), 충돌 감지, 잼 신호 전송, 이진 지수 백오프
- CSMA/CA: 무선(802.11), 충돌 회피, IFS 대기, ACK 확인
- CSMA/CD 순서: 회선 감지 → 전송 → 충돌 감지 → 잼 신호 → 백오프 → 재시도
- CSMA/CA 순서: 회선 감지 → IFS 대기 → 랜덤 백오프 → 전송 → ACK 대기
- 숨은 노드 문제: RTS/CTS로 해결
실무 매핑
- 사무실에서 Wi-Fi가 느려지는 이유 중 하나가 바로 CSMA/CA 때문입니다. 접속 장치가 많아지면 서로 기다리는 시간이 길어지고, 숨은 노드 문제까지 겹치면 실질적인 전송 속도가 크게 떨어집니다. 이것이 Wi-Fi 속도가 이론치보다 항상 낮은 이유 중 하나입니다.