CSMA/CA에 대한 정의

스마트폰이나 노트북으로 Wi-Fi를 사용할 때 여러 기기가 하나의 무선 네트워크를 공유합니다.

예를 들어 하나의 Wi-Fi 공유기에 여러 장치가 연결되어 있다고 생각해 보겠습니다.

        공유기       /  |  \      /   |   \   스마트폰 PC  노트북

여러 장치가 동시에 데이터를 전송하려고 하면 무선 통신에서 충돌이 발생할 수 있습니다.

이러한 충돌을 줄이기 위해 Wi-Fi에서 사용하는 대표적인 방식이 CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)입니다.

쉽게 말하면 CSMA/CA는:

“데이터를 보내기 전에 무선 채널을 확인하고, 사용 중이면 기다렸다가 충돌 가능성을 줄인 후 전송하는 방식”

입니다.

CSMA/CA의 의미

CSMA/CA라는 이름에는 각각의 의미가 있습니다.

CS(Carrier Sense)
→ 무선 채널이 사용 중인지 확인합니다.

MA(Multiple Access)
→ 여러 장치가 하나의 무선 통신 매체를 공유합니다.

CA(Collision Avoidance)
→ 충돌이 발생할 가능성을 줄이면서 데이터를 전송합니다.

즉,

Carrier Sense↓통신 채널 확인Multiple Access↓여러 장치가 공유Collision Avoidance↓충돌을 최대한 회피

라는 의미입니다.

왜 Wi-Fi에서는 CSMA/CA를 사용할까?

유선 Ethernet에서는 케이블을 통해 데이터를 전송하기 때문에 충돌이 발생했을 때 이를 감지하는 것이 상대적으로 쉽습니다.

하지만 Wi-Fi에서는 무선으로 데이터를 주고받습니다.

따라서 장치가 데이터를 전송하면서 동시에 다른 장치의 신호를 정확하게 감지하기가 어렵습니다.

이 때문에 Wi-Fi에서는 충돌이 발생한 후 감지하는 CSMA/CD보다는 충돌이 발생할 가능성을 미리 줄이는 CSMA/CA를 사용합니다.

CSMA/CD충돌 발생   ↓충돌 감지   ↓재전송CSMA/CA채널 확인   ↓충돌 가능성 감소   ↓전송

CSMA/CA의 기본 동작 과정

CSMA/CA는 대략 다음과 같은 과정으로 동작합니다.

① 데이터 전송 필요        ↓② 무선 채널 확인        ↓③ 채널이 사용 중인가?   ↓             ↓  예             아니오   ↓               ↓  대기          일정 시간 확인                   ↓                데이터 전송                   ↓                 ACK 확인

여기서 여러 장치가 동시에 전송하지 않도록 랜덤 백오프(Random Backoff) 과정이 중요한 역할을 합니다.

1. 데이터를 전송할 필요가 생긴다

스마트폰이 Wi-Fi를 통해 웹사이트에 접속한다고 가정해 보겠습니다.

스마트폰은 서버에 데이터를 보내야 합니다.

스마트폰   ↓데이터 전송 필요

하지만 바로 데이터를 보내는 것이 아니라 먼저 무선 채널 상태를 확인합니다.

2. 무선 채널을 확인한다

스마트폰은 현재 Wi-Fi 채널에서 다른 장치가 데이터를 전송하고 있는지 확인합니다.

스마트폰   ↓"지금 다른 장치가 전송 중인가?"

다른 장치가 전송 중이라면 기다립니다.

다른 장치 전송 중       ↓     대기

반대로 채널이 비어 있다면 다음 단계로 넘어갑니다.

3. 바로 전송하지 않고 기다린다

채널이 비어 있다고 해서 모든 장치가 즉시 데이터를 전송하는 것은 아닙니다.

여러 장치가 동시에 채널이 비어 있다고 판단하면 충돌이 발생할 수 있기 때문입니다.

예를 들어:

스마트폰 A → 채널 비어 있음스마트폰 B → 채널 비어 있음

두 장치가 동시에 데이터를 보내면:

A ───────→           충돌B ───────→

따라서 CSMA/CA에서는 랜덤 백오프(Random Backoff)를 사용합니다.

4. 랜덤 백오프란?

랜덤 백오프는 장치가 데이터를 보내기 전에 무작위로 정해진 시간 동안 기다리는 과정입니다.

예를 들어:

장치 A → 2번 대기장치 B → 5번 대기

라고 가정해 보겠습니다.

그러면 A가 먼저 대기 시간을 끝내고 데이터를 전송할 가능성이 높아집니다.

A → 대기 → 대기 → 전송B → 대기 → 대기 → 대기 → 대기 → 대기

이렇게 장치마다 다른 시간을 기다리게 하여 동시에 전송할 가능성을 줄입니다.

5. 데이터 전송

백오프 시간이 끝났고 채널이 계속 비어 있다면 데이터를 전송합니다.

장치 A   ↓무선 채널   ↓공유기

이때 다른 장치들은 채널이 사용 중인 것을 확인하고 기다립니다.

6. ACK를 확인한다

Wi-Fi에서는 데이터를 전송한 후 상대방이 정상적으로 데이터를 받았는지 확인하기 위해 ACK(Acknowledgment)를 사용할 수 있습니다.

예를 들어:

스마트폰   │   │ 데이터   ↓공유기   │   │ ACK   ↓스마트폰

스마트폰이 데이터를 전송하고 공유기가 정상적으로 수신했다면 ACK를 보내줍니다.

데이터 전송    ↓ACK 수신    ↓전송 성공

ACK를 정상적으로 받지 못하면 데이터가 제대로 전달되지 않았을 가능성이 있다고 판단하고 다시 전송을 시도할 수 있습니다.

CSMA/CA에서 충돌을 직접 감지하지 않는 이유

CSMA/CD와 CSMA/CA의 가장 중요한 차이 중 하나입니다.

CSMA/CD는:

전송 ↓충돌 발생 ↓충돌 감지 ↓재전송

방식입니다.

반면 CSMA/CA는:

채널 확인 ↓대기 ↓랜덤 백오프 ↓전송 ↓ACK 확인

처럼 충돌 가능성을 미리 줄이는 방식입니다.

Wi-Fi에서는 장치가 데이터를 전송하면서 동시에 다른 장치의 신호를 안정적으로 감지하기 어렵기 때문에 이러한 방식을 사용합니다.

CSMA/CA와 숨은 단말 문제

Wi-Fi에서 CSMA/CA가 필요한 또 다른 이유는 숨은 단말 문제(Hidden Node Problem)입니다.

예를 들어 다음과 같은 상황을 생각해 보겠습니다.

A ───── 공유기 ───── B

A와 B가 서로 멀리 떨어져 있다면 A는 B의 무선 신호를 제대로 감지하지 못할 수 있습니다.

이때 A와 B가 동시에 공유기에게 데이터를 보내면:

A ─────→ 공유기 ←───── B             ↓           충돌

A 입장에서는 채널이 비어 있는 것처럼 보이고, B 역시 채널이 비어 있는 것처럼 보일 수 있습니다.

이러한 문제를 숨은 단말 문제라고 합니다.

RTS/CTS란 무엇인가?

숨은 단말 문제를 줄이기 위해 Wi-Fi에서는 RTS/CTS(Request To Send / Clear To Send)라는 방식을 사용할 수 있습니다.

기본적인 과정은 다음과 같습니다.

장치 ↓RTS ↓공유기 ↓CTS ↓장치 ↓데이터 전송

먼저 데이터를 보내고 싶은 장치가 RTS를 보냅니다.

공유기가 전송해도 된다는 의미의 CTS를 보내면 데이터를 전송합니다.

RTS→ "데이터 보내도 될까요?"CTS← "네, 보내세요."

주변 장치들은 CTS 등의 정보를 통해 일정 시간 동안 전송을 기다릴 수 있습니다.

RTS/CTS의 장점과 단점

RTS/CTS는 숨은 단말 문제를 줄이는 데 도움이 될 수 있습니다.

하지만 RTS와 CTS라는 추가적인 통신 과정이 필요하기 때문에 모든 상황에서 사용하는 것은 아닙니다.

RTS ↓CTS ↓DATA ↓ACK

작은 데이터를 전송할 때는 오히려 이러한 추가 과정으로 인해 효율이 떨어질 수 있습니다.

따라서 실제 Wi-Fi에서는 네트워크 환경과 설정에 따라 RTS/CTS가 선택적으로 사용될 수 있습니다.

CSMA/CA와 Wi-Fi

CSMA/CA는 Wi-Fi와 밀접한 관계가 있습니다.

Wi-Fi에서는 여러 장치가 동일한 무선 주파수 채널을 공유하기 때문에 동시에 데이터를 전송하려는 상황이 발생할 수 있습니다.

       Wi-Fi 공유기      /      |      \     /       |       \스마트폰    노트북    태블릿

CSMA/CA는 이러한 환경에서 각 장치가 채널 상태를 확인하고 적절한 대기 시간을 거쳐 데이터를 전송하도록 합니다.

CSMA/CA와 충돌

CSMA/CA의 목적은 충돌을 완전히 없애는 것이 아니라 충돌 가능성을 줄이는 것입니다.

아무리 채널을 확인하고 백오프를 사용하더라도 무선 환경에서는 충돌이 발생할 수 있습니다.

따라서 충돌이 발생했을 가능성이 있으면 ACK가 정상적으로 도착하지 않는 등의 상황을 통해 전송 실패를 판단하고 다시 전송할 수 있습니다.

데이터 전송    ↓ACK 수신? ↓        ↓예        아니오↓          ↓성공       재전송

CSMA/CD와 CSMA/CA 비교

CSMA/CD와 CSMA/CA를 비교하면 차이가 더욱 명확합니다.

구분CSMA/CDCSMA/CA
의미충돌 감지충돌 회피
대표 환경공유형 EthernetWi-Fi
기본 방식전송 후 충돌 감지전송 전 충돌 가능성 감소
대기충돌 후 재전송 전 대기전송 전 백오프
ACK일반적인 Ethernet의 기본 충돌 처리 방식은 아님Wi-Fi에서 중요
현재 활용일반적인 스위치 Ethernet에서는 거의 사용되지 않음Wi-Fi에서 사용

간단하게 기억하면:

CSMA/CD = 충돌이 발생하면 감지

CSMA/CA = 충돌이 발생하지 않도록 회피

입니다.

CSMA/CA의 장점

CSMA/CA를 사용하면 여러 무선 장치가 하나의 채널을 공유하는 환경에서 충돌 가능성을 줄일 수 있습니다.

주요 장점은 다음과 같습니다.

  • 여러 장치가 하나의 무선 채널을 공유할 수 있음
  • 데이터 전송 전에 채널 상태를 확인함
  • 랜덤 백오프를 통해 동시 전송 가능성을 줄임
  • ACK를 통해 데이터 수신 여부를 확인할 수 있음
  • 숨은 단말 문제에 대응하기 위한 RTS/CTS를 사용할 수 있음

CSMA/CA의 한계

CSMA/CA도 완벽한 방식은 아닙니다.

Wi-Fi에 연결된 장치가 많아질수록 채널을 사용하기 위해 기다리는 시간이 증가할 수 있습니다.

장치 증가   ↓경쟁 증가   ↓대기 시간 증가   ↓전송 효율 감소

또한 주변 Wi-Fi 네트워크가 많거나 전파 간섭이 심한 환경에서도 통신 성능이 떨어질 수 있습니다.

특히 아파트나 사무실처럼 많은 Wi-Fi 장치가 밀집된 환경에서는 채널 경쟁이 증가할 수 있습니다.

CSMA/CA를 쉽게 이해하는 방법

CSMA/CA는 여러 사람이 한정된 공간에서 대화하는 상황에 비유하면 이해하기 쉽습니다.

여러 사람이 동시에 이야기하면 서로의 말을 듣기 어렵습니다.

그래서 다른 사람이 이야기하고 있는지 먼저 확인합니다.

"지금 말하는 사람 있나?"        ↓      확인

아무도 말하지 않는다면 바로 말하는 것이 아니라 약간 기다립니다.

여러 사람이 동시에 기다리고 있었다면 각자 다른 시간을 기다린 뒤 먼저 기회가 온 사람이 이야기합니다.

사람 A → 짧게 기다림 → 말하기사람 B → 오래 기다림 → 대기

그리고 말을 끝낸 뒤 상대방이 제대로 들었는지 확인합니다.

이러한 과정이 CSMA/CA의 기본적인 개념과 비슷합니다.

결론

CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)는 Wi-Fi에서 여러 장치가 하나의 무선 채널을 공유할 때 충돌 가능성을 줄이기 위한 통신 방식입니다.

장치는 데이터를 보내기 전에 먼저 무선 채널이 사용 중인지 확인하고, 채널이 비어 있더라도 랜덤 백오프를 통해 일정 시간 기다린 후 데이터를 전송합니다.

데이터를 전송한 뒤에는 ACK를 통해 정상적으로 전달되었는지 확인할 수 있으며, 필요한 경우 RTS/CTS를 이용하여 숨은 단말 문제를 줄일 수도 있습니다.

전체적인 흐름은 다음과 같습니다.

채널 확인   ↓채널이 비어 있음   ↓랜덤 백오프   ↓데이터 전송   ↓ACK 확인   ↓전송 성공

결국 CSMA/CA는 Wi-Fi에서 여러 장치가 무선 채널을 효율적으로 공유하면서 데이터 충돌 가능성을 줄이기 위한 핵심적인 통신 방식이라고 이해하면 됩니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

글쓴이

rjsan46@koreabites.com

관련 게시물

웹 브라우저에 주소를 입력하면 일어나는 일

웹 브라우저 주소창에 웹사이트 주소를 입력하고 엔터를 누르면 바로 화면이 나타나는 것처럼 보인다. 하지만 실제로는 그 짧은 순간에 꽤 많은 일이 일어난다....

모두 읽어보기

소켓이란 무엇일까? 프로그램과 네트워크를 연결하는 통로

네트워크를 공부하다 보면 IP 주소와 포트 번호라는 말을 계속 만나게 된다. IP 주소는 어떤 컴퓨터와 통신할 것인지 구분하고, 포트 번호는 그 컴퓨터에서...

모두 읽어보기

쿠키와 세션은 어떻게 다를까?

웹사이트를 이용하다 보면 한 번 로그인한 뒤 다른 페이지로 이동해도 로그인 상태가 계속 유지되는 것을 볼 수 있다. 예를 들어 쇼핑몰에 로그인한...

모두 읽어보기

SSL과 TLS는 어떤 역할을 할까?

앞에서 HTTPS가 HTTP보다 안전한 이유를 살펴봤다. HTTPS는 단순히 HTTP 자체가 더 안전하게 만들어진 프로토콜이 아니라, HTTP 통신에 TLS라는 보안 계층을 적용한 것이라고...

모두 읽어보기

포트 번호로 네트워크 서비스를 구분하는 방법

컴퓨터가 네트워크를 통해 다른 컴퓨터와 통신할 때 가장 먼저 떠오르는 것이 IP 주소다. 예를 들어 어떤 서버의 IP 주소가 192.168.0.10이라고 해보자. 그런데...

모두 읽어보기

HTTPS는 HTTP보다 무엇이 안전할까?

인터넷에서 웹사이트에 접속하다 보면 주소창에 http://가 붙어 있는 경우도 있고 https://가 붙어 있는 경우도 있다. 요즘은 대부분의 웹사이트가 HTTPS를 사용하기 때문에 사실상...

모두 읽어보기