liked layer에서 유선통신을 할 때는 csma / cd 프로토콜을 사용한다.

 

❗ wireless

유선 csma / cd를 그대로 사용할 경우 몇가지 문제점이 발생한다.

 

문제점 1.

유선통신에서는 csma / cd 사용하면 되지만 무선의 경우 거리에 따라서 주파수에 따라 전파가 도달가능한 범위가 다르기 때문에 노드들이 서로의 신호를 인지하지 못할 수 있다.

 

문제점 2.

collision detection이 불가능하다. 노드는 자신이 통신 중일때 전파 특성상 다른 노드의 신호를 인지할 수 없다.

 

이를 해결하기 위해 wifi는 CSMA / CA 라는 mac 프로토콜을 사용한다.

 

 

❗ wifi

  • 기술적 명칭은 IEEE 802.11이다.
  • wireless fidelity의 약자이다.
  • ap가 초당 10~100회 정도로 주기적으로 boradcast를 하여 자신을 알린다.
  • 유선 csma / cd에서는 노드들이 스스로 충돌감지를 할 수 있기 때문에 ack가 필요없지만 wifi에서는 충동감지가 불가능 하기때문에 ap의 ack가 따로 필요하다.
  • csma / ca를 사용한다. (collision avoidance의 약자)

 

❗ CSMA/ CA 동작원리

csma / cd에서는 충돌 감지 후 곧 바로 통신을 중지하지만 와이파이는 충돌감지 자체가 불가능하기 때문에 충돌발생시 발생하는 손해가 유선에 비해 더욱 크다. 와이파이는 충돌감지를 위해 RTS(ready to send)와 CTS(clear to send)라는 control frame을 추가시켜서 통신을 진행하게 된다.

 

노드는 cast를 sence하고 있다가 일정시간 동안 조용할 경우 RTS라는 작은 크기의 프레임을 보낸다. RTS를 보내는 이유는 충돌 시 발생하는 손해가 크기 때문에 그 손해를 최소화하기 위함이다.

  1. a와 b가 RTS경쟁을 하다가 RTS가 충돌날 경우 AP는 아무것도 듣지못하지만 피해는 크지않다.
  2. a와 b는 exponential backoff을 가진 후 다시 rts를 보내게 된다.
  3. RTS를 충돌 없이 정상적으로 받은 경우 ap는 a의 통신에 대한 cts를 뿌린다.
  4. 그 후 A는 ap와 자유롭게 데이터 통신이 가능하게 된다.

rts와 cts에는 누가 얼마 동안에 어떤 채널을 사용한다는 정보가 담겨 있고 이를 받은 모든 반경의 노드들은 그 정보를 통해 특정 시간만큼 기다린다.

 

❗ CSMA/ CA 한계

하지만 CSMA/ CA 에도 결점이 존재한다.

 

다음과 같은 시나리오를 생각해보자.

  1. ap가 A의 rts를 정상적으로 받은 후 cts를 보냈다.
  2. cts를 보내는 중에 B가 ap에게 rts를 보내는 경우 B는 CTS를 정상적으로 받은 A가 통신중이라는 것을 알지 못한다.
  3. 이때 a, ap는 정상통신이 가능하다고 예측을 하고 통신을 진행하지만 B는 그 사실을 알지 못한상태가 되어 a가 채널을 사용중에 있을 때 RTS를 보내 충돌이 발생되어 전송이 와해되게 된다.
  4. ap에게 데이터에 대한 ack를 받지못한 a는 재전송을 위해 다시 Rts경쟁을 하게 된다.

서로 통신 반경이 다른 노드들간의 관계에 의해서, rts 혹은 cts가 미세한 시간차이로 인해 노이즈가 되어버리는 경우가 불가피 하다. 따라서 사람이 많을수록 충돌-지연-충돌-지연이 다수 발생하게 된다.

 

csma / ca는 재전송을 7번까지만 허용한다. 7번 이후에는 다음 프레임으로 넘어간다. 그렇다면 보내지 못한 데이터는 어떻게 되는가? tcp의 timer가 터지면 재전송을 위해 다시 내려오게 된다.

+ Recent posts