네트워크 기초 - 매체접근제어 (Media Access Control)
가장 기본적이고 많이 사용되는 프로토콜들을 다루었으니 다음으로 스위칭과 라우팅에 대해 다루기 전에, 먼저 매체접근제어(MAC)에 대해 알아보겠습니다.
1. Media Access Control - 매체접근제어
당연한 이야기지만 통신을 위해서는 유선이던, 무선이던 연결되어 있어야 합니다.
우리가 흔히 사용하는 WiFi 같은 것들도 보이지 않는 선으로 연결되어 있는 것이나 마찬가지입니다.
자, 그런데 위의 사진과 같은 구성을 보면 PC-A, B, C가 Server 쪽으로 데이터를 전송할 때 사용하는 회선은 단 하나입니다. 빨간색 박스로 표시된 저 하나의 회선으로 3명의 사용자가 동시에 데이터를 전송할 수 있을까요?
당연히 불가능합니다. 한 사람이 휴대폰 하나로 두명과 동시에 통화할 수 없는 것과 마찬가집니다. 보내는 데이터는 각기 다를텐데 어떤 데이터가 어떤 사용자의 데이터인지 구분할 수 없고, 구분하기위해 추가적인 정보를 싣자니 너무 비효율적입니다.
다시말해 매체접근제어는 저 빨간색으로 표시된 회선에 누가 먼저 접근(사용)할 것인가를 정하는 제어방식입니다.
2. 제어방식
CSMA (반송파 감지 다중 접속)
각 노드가 데이터 프레임을 송신하기 전에 회선을 조사하여 회선이 사용중이라면 대기하고, 사용되지 않는 상태라면 데이터를 송신하는 방식입니다. 하지만 여러 노드가 동시에 데이터를 전송한다면 데이터가 충돌하는 단점을 가집니다.
CSMA/CD (반송파 감지 다중 접속/충돌 감지)
CSMA에서 충돌이 발생하는 문제점 해결을 위해 CSMA 방식에 충돌 검출과 재송신 기능을 추가한 방식입니다.
마찬가지로 회선이 사용중이라면 대기, 사용되지 않는 상태라면 송신하되 송신중 전송로의 상태를 지속적으로 점검하고 충돌이 발생하면 송신을 중지하며 모든 노드에 충돌을 알린 다음 일정 시간이 지난 다음 데이터를 재송신합니다.
- 처리방식, 알고리즘이 간단하여 일반적으로 버스, 트리형 LAN에서 많이 사용되며 장애처리 또한 간단합니다.
- 전송량이 적을 때 매우 효율적이고 신뢰성이 높으나 전송량이 많으면 충돌이 잦아지고 지연시간이 급격하게 증가합니다.
CS (Carrier Sense) : 통신회선 사용을 확인.
MA (Multiple Access) : 통신회선이 비어있다면 누구나 사용할 수 있음.
CD (Collision Detection) : 데이터를 송신하며 충돌여부를 조사함.
CSMA/CA (반송파 감지 다중 접속/충돌 회피)
무선환경 또한 직접적으로 눈에 보이지는 않지만 유선과 마찬가지로 회선이 존재합니다. 심지어 무선에서는 공기중으로 전송하기 때문에 충돌을 감지하기가 거의 불가능합니다. 따라서 충돌을 감지하지 않고 회피하는 방식을 사용합니다.
데이터 전송 전, 무선 매체를 살펴 회선이 비어있어도 바로 전송하지 않고 일정시간(IFS)을 대기하고 전송합니다. 채널이 사용중이라면 다시 랜덤시간을 대기한 후 절차를 반복하고, 데이터 전송이 성공적이었는지 확인(ACK) 합니다.
Token Bus
토큰은 쉽게 생각하자면 노래방 마이크와 같은 것으로, 마이크를 가진 사람이 노래를 부르고, 다음사람에게 넘겨주는 것과 비슷하겠습니다.
토큰은 Bus형 LAN에서 사용하였고 토큰이 논리적으로 형성된 링을 따라 노드를 옮겨다닙니다. 토큰을 점유한 노드는 데이터 전송이 가능하며 전송을 끝내면 다음 노드로 전달합니다.
공평한 송신 권한을 각 노드들이 가지게 되고 전송시간을 조절할 수 있고, 전송량이 많아도 액세스 시간이 일정해지지만
CSMA/CD 방식보다 복잡하고 평균 대기시간이 길어지며 일부 노드나 회선에 장애 발생시 전체적인 장애 발생의 가능성이 있어서 현재에는 사용되지 않는 방식입니다.
Token Ring
링형 LAN에서 사용했으며 링을 따라 순환하는 토큰을 이용하여 송신권리를 제어합니다.
송신할 데이터가 있는 노드는 링을 따라 순환하는 프리 토큰이 도착하면 토큰을 비지 토큰상태로 변환시큰 후 데이터와 함께 전송합니다. 현재에는 사용되지 않는 방식입니다.
3. 여담
간혹 송수신은 동시에 가능한데 왜 여러 사용자가 동시에 송신 하는것이 불가능하냐는 의문점을 갖는 분들이 계십니다. 회선 하나에 하나의 송수신만 된다는 것은 당연한 듯 하면서도 이해가지 않는 부분입니다.
우선 통신에는 전이중, 반이중과 같은 방식이 존재합니다.
전이중(Full-Duplex)은 송신과 수신이 동시에 가능한 일반적인 사용환경이나 스마트폰을 사용한 전화와 같고,
반이중(Half-Duplex)은 한사람이 수신하고 있을때는 다른사람이 수신할 수 없는 무전기를 생각하시면 됩니다.
송수신이 동시에 가능한 단일 전송로 전이중 통신에는 다음과 같은 방식들을 사용합니다.
- 시분할 이중통신(TDD)
- 주파수 분할 이중통신(FDD)
- 코드 분할 다중접속
- 에코 캔슬러
시분할은 말그대로 정보를 매우 짧은 시간으로 나누어, 송수신을 하여 마치 연속되는것처럼 만드는 방식입니다.
주파수 분할은 송신에 사용되는 주파수와 수신에 사용되는 주파수를 분할하는 것으로 1Core 광케이블을 사용할때나 휴대폰, 통신위성에 사용됩니다.
이러한 방식으로 송수신이 동시에 되는 것 처럼 동시 송신 역시 같은 방법을 사용할 수 없을까요? 이유는 여러가지 있겠으나 몇가지를 꼽자면 효율성의 문제입니다.
송수신을 동시에 하는것은 무전기와 전화의 차이만 생각해보아도 정보 전달력에 굉장히 많은 차이가 나겠지만, 송신할 데이터의 양이 많다고 시분할, 주파수 분할을 사용하여도 속도가 빨라지는 효과를 기대할 수 없기 때문입니다.
시분할은 결국 데이터를 나누어 교차전송하는 것이지만 총 전송 시간에는 차이가 없고, 주파수를 분할하면 그만큼 전송속도에 있어 손해를 보기 때문에 순차전송 하는것과 마찬가지며, 이러한 방식들은 디코딩을 거쳐야 하기 때문에 오히려 속도에 있어서 손해까지 보게 됩니다. 전혀 쓸 이유가 없어지는 것이죠.
그렇기에 하나의 회선으로 여러 사용자가 동시 송신이 불가능하고 매체(회선)접근제어가 필요한 것입니다.