한 선을 나눠 쓰는 법 — CSMA/CD
회의실에 여러 사람이 앉아 있다고 상상해 보십시오. 마이크는 딱 하나입니다. 아무 규칙 없이 말하고 싶을 때 말하면 어떻게 될까요. 두 사람이 동시에 입을 열면 목소리가 뒤섞여 아무것도 들리지 않습니다. 초기 이더넷이 공유 케이블 하나로 여러 컴퓨터를 연결했을 때 정확히 이 문제가 있었습니다. CSMA/CD는 이 상황을 다루는 프로토콜입니다.
CS, MA, CD가 각각 무엇인가
CSMA/CD는 세 가지 단어의 약자입니다.
CS는 Carrier Sense, 반송파 감지입니다. 말하기 전에 회선을 듣는 것입니다. 회의실 비유로 하면, 입을 열기 전에 누군가 이미 말하고 있는지 귀를 기울이는 것입니다. 지금 회선에 신호가 흐르고 있다면 기다립니다.
MA는 Multiple Access, 다중 접근입니다. 여러 장치가 같은 회선을 공유한다는 사실을 뜻합니다. 누구든 회선이 비면 보낼 수 있다는 의미입니다.
CD는 Collision Detection, 충돌 감지입니다. 두 장치가 동시에 회선이 비었다고 판단하고 동시에 전송을 시작할 수 있습니다. 이때 신호가 겹쳐 충돌이 발생합니다. 이더넷 장치는 전송하면서 동시에 회선을 감청해 내가 보낸 신호와 다른 신호가 섞이면 충돌이 일어났음을 알아챕니다.
충돌이 나면 어떻게 하나
충돌이 감지되면 두 장치 모두 전송을 즉시 멈춥니다. 그리고 잼 신호를 짧게 내보내 다른 장치들에게 충돌이 났음을 알립니다. 그 다음 각자 무작위 시간을 기다린 뒤 다시 시도합니다. 기다리는 시간은 지수 백오프 알고리즘으로 정합니다. 충돌이 반복될수록 기다리는 시간의 범위가 늘어나 점점 재충돌 가능성이 줄어들도록 설계되어 있습니다.
지금도 CSMA/CD가 쓰일까
현대의 이더넷 환경에서는 CSMA/CD가 실질적으로 동작하지 않습니다. 오늘날의 이더넷은 스위치를 중심으로 각 장치가 전용 선으로 연결됩니다. 전용 선이면 충돌 자체가 발생하지 않습니다. 하나의 선 위에 두 장치만 연결되어 있고 전이중 통신이 가능하기 때문입니다.
그럼에도 CSMA/CD를 배우는 이유는 이더넷의 역사적 기반이기도 하고, 무선 LAN에서 CSMA/CA라는 유사한 방식이 여전히 쓰이기 때문입니다. 충돌을 감지하기 어려운 무선 환경에서는 CD 대신 CA, 즉 충돌 회피 방식을 씁니다. 다음 절에서는 CSMA/CD를 구식으로 만든 장치인 스위치를 살펴봅니다.