본문 바로가기
Server, DevOps

[Server] 2계층 MAC Layer (CSMA/CD, CSMA/CA 개념정리)

by lumayi 2021. 11. 10.

OSI 2계층의 데이터링크는 LLC(Logical Link Control)와 MAC Layer(Media Access Control)로 나뉘게 된다. 그 중 MAC 계층의 네트워크 방식에 대해 알아보자.

http://blog.skby.net/%EB%8B%A4%EC%A4%91-%EC%A0%91%EA%B7%BC-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9Cmultiple-access-protocol/

Channeliztion 프로토콜은 주파수를 이용한 복잡한 방법, 물리계층에 가까운 기법이다.

Controlled-access 프로토콜은 소프트웨어적인 기법으로 예약방식 등이 있다.

Random-access 프로토콜은 통상적으로 가장 많이 쓰이는 프로토콜이다.

 

Random access 방식을 쉽게 설명해보자면 수많은 사람들이 동일 시간대에 인터넷을 쓴다. 하지만 동시에 그 많은 사람들의 데이터를 처리할 수 없기에 사람들이 데이터를 보낼 때마다 수학적으로 구간대를 주고 그 안에서 수가 배정되어 전송되는 통계적 다중화기법이다. 즉, 일정 구간안에 흐트러져있는 방식이다.

 

이 Random-Access 프로토콜에서 또 가장 많이 쓰이는 네트워크 방식이 CSMA/CD와 CSMA/CA가 있다. CSMA/CD는 유선에서 가장 많이 쓰는 방식이고, CSMA/CA는 무선에서 가장 많이 쓰이는 방식이다.

 

CSMA/CD란 뭘까?

Carrier Sense Multiple Access with Collision Detection

말그대로 캐리어라는 전자적 신호를 감지하는 것이다. 예를 들어 하나의 유선에서 n명이 통신을 한다. 이때 transmission이 동시에 발생하면 collision, 충돌이 발생한다. 이렇게 동시 전송이 발생시켜져버려 아무도 통신하지 못하게 되는 것을 탐지하고 알려주고 회피시킨다. transmission이 성공하면 끝. 이더넷, 초고속 인터넷, 광랜이 있다.

 

 

A, B, C, D가 이어진 줄을 광랜, 이더넷이라고 보면 된다. 이 순서를 보자면

 

1) A가 신호를 보낸다.

2) t2초에 C도 신호를 보낸다.

3) 합쳐져서 신호가 뭉개진다.

4) 오류가 탐지된다.

5) 계속 보내봐야 에러가 나니까 C가 송신을 중단한다.

6) t4초에서 A도 중단한다.

 

노랑 공백 기간동안에는 신호가 없게 된다. 에러는 완전히 없앨 수 없지만 이처럼 빨리 탐지해서 멈추면 시간을 줄일 수 있다. 추가적인 정보로 광랜은 너무 빨라서 탐지가 불가하고 바로 오류난다고 한다. 그리고 주목해야할 사실 중 하나는 이렇게 한 줄에 여러 개의 컴퓨터를 붙이는 것은 요즘 필드에서는 더 이상 진행하지 않는다. 그래서 HTTP3부터는 TCP가 아니라 탐지가 없는 UDP를 두게 되는게 한 예이다. 이렇게 한 줄에 여러 개의 컴퓨터를 쓰는 것은 트래픽이 잘 발생하지 않는 곳이나 군대에서 쓰이고 있다. 또한 2계층의 통신은 몇 번 시도해보고 안되면 버려버린다는 특징이 있다. 그러므로 서비스를 구축하는 입장에서 통신 Layer가 신뢰성있으려면 이런 것들을 고려해서 위의 계층에서 보강해야한다.

 

그렇다면 CSMA/CA는 무엇일까?

CSMA/CA는 반대로 무선에서 가장 많이 쓰는 방식이다. 무선랜, wifi가 있으며 RTS, CTS라는 메세지가 등장하고 에러의 최소화에 주목한다. CD는 탐지였다면, CA는 with Collision Avoidance를 뜻하며, 말 그대로 에러를 회피하도록 만든다. 

 

https://medium.com/@lyoungh2570/%EB%8D%B0%EC%9D%B4%ED%84%B0%ED%86%B5%EC%8B%A0-2017%EB%85%84-%EA%B8%B0%EB%A7%90-%EC%8B%9C%ED%97%98-7e2564168d29

 

이것도 순서를 알아보자. (RTS의 R은 request, CTS의 C는 clear를 뜻함)

 

1) A가 통신을 하고자 RTS라고 하는 메세지를 B에게 보낸다.

2) A가 나랑 통신을 하고싶구나 B는 답장으로 CTS를 보낸다.

   "내 목소리를 들을 수 있는 애들은 모두 들어라. 나는 A와 통신을 할거다" 전체 방송한다.

   (Clear = 나머지조용히해라)

3) C,D가 듣는다. 아 너 통신할거구나. 그래 우린 조용히할게.

4) A가 데이터를 보낸다.

5) B가 잘받았다고 ACK를 보낸다. 이것도 모두 볼 수 있다.

 

여기서 Hidden Station 문제가 발생한다. 히든스테이션이란 예를 들어 B와 C사이에 벽이 있거나, C가 멀리있을 때, 혹은 없어졋다 나타났을 때  C가 B와 A가 통신할 것이란 걸 못 듣고 자기도 통신하겠다고 참가를 하려고하면 오류가 발생하게 되는 것이다.

 

결국 CSMA/CA 또한 에러는 불가피하다. 몇 번 시도하다가 안되면 버려버리는 것이 기본 기능이기에 만드려고하는 소프트웨어에 맞는 네트워크 방식을 선택하는 것이 서비스 품질 보장을 위해 꼭 필요하다. 또한 무선은 천연자원이다. 주파수를 새로 만들 수가 없기때문에 여러 명이 같이 써야한다. 그러다보니 한 곳에 사용자가 너무 많아지면 성능이 떨어지다가 결국 통신불능상태로 들어가게된다. 예로는 핸드폰 위의 신호가 없어지는 것이나 유무선 공유기의 성능이 낮을 때 6명만 들어와도 통신 불능 상태가 되는 것이 그 예이다.

반응형