1. 개요
Carrier Sense Multiple Access/Collision Avoidance의 준말로, 와이파이 등 무선 환경에서, 한 Station이 목적지로 데이터를 전송하기 위해 사용하는 프로토콜이다. 무선 환경에서는 충돌을 감지하는 것이 쉽지 않기 때문에 충돌을 감지하고자 하는 CSMA/CD와는 달리 최대한 충돌을 미리 피하는 쪽으로 동작한다.2. 처리과정
1. 프레임을 전송하고자 하는 Station은 매체가 idle인 상태가 될 때까지 기다린다.2. 만약 idle 상태가 된다면 원거리의 다른 Station이 매체를 이미 사용하고 있을 수도 있기 때문에 IFS(Interframe space)라고 부르는 시간 동안 대기한다.[1]
3. IFS동안 대기한 뒤에도 idle 상태라면 Contention Window[2]에서 랜덤한 Slot time을 갖고 대기한다.
4. Slot time만큼 대기한 뒤에도 idle 상태라면 전송한 뒤 수신자로부터 ACK 메시지가 오길 기다린다. 이때, 기다리면서 타이머를 돌리는데 타이머가 끝날 때까지 ACK 메시지가 자신에게 오지 않으면 다시 뒤로 돌아가서 재전송을 시도한다.[3]
5. ACK 메시지가 도착하면 전송이 성공적으로 이루어졌다고 생각하고 종료한다.
3. 관련문서
[1] IFS는 쉽게 생각해서 공중전화박스와 같다. 어느 사람이 공중전화박스에서 다른 사람과 통화를 하고 있는데 무턱대고 들어가서 그걸 뺏은 후 자신이 통화를 할 수는 없지 않은가?(만약 공중전화박스 내에서 공중전화기를 뺏어 서로 주먹이 얼굴로 나간다면 이를 충돌이라고 한다.) 그렇기때문에 공중전화박스에서 통화를 하고 있는 사람이 통화를 끊고 나올 때까지 나머지 사람(패킷)들은 대기를 해야한다. 대기자들 중에서도 SIFS, PIFS, DIFS 등이 있는데 SIFS는 RTS, CTS, ACK프레임과 같이 제어문자를 보내는 가장 통화가 시급한 사람이고 PIFS는 AP통신 우선권을 가진 그 다음 시급한 사람, DIFS는 그냥 정보프레임(데이터패킷)을 전송하는 가장 시간많고 넉넉한 사람이라고 이해하면 된다.[2] 시간을 개념적으로 slot 단위로 굉장히 많이 쪼갠 것[3] 공중전화기에 들어가서 전화수신자한테 전화를 걸었는데 전화를 안받으면 다시 줄 맨 뒤로 가는것이다. 당연히 SIFS와 같이 급한 사람들은 우선권이 매우 높기에 자주 시도하게된다.