[네트워크] 링크 계층 1 : MAC

드림보이즈·2024년 10월 7일
0

주제 : Medium Access Control Protocol (MAC)

Broadcast Medium

이제는 개념적이고 추상적이게 아니라, 물리적인 빛과 파동에 대한 이야기이다.

유선을 쓰는 개인 PC의 입장에서, 내가 인터넷에 연결하려면, Gateway router에 Frame을 보내야 할 것이다.
그런데 사실 이 선은 나만 직통으로 라우터에 연결된 것이 아니다.

여러 대의 컴퓨터들이 유선을 공유하고, 이러한 상황에서 결국 나는 '빛'을 쏴야하는데,
저 라우터에만 빛이 들어갈까? 아니다. 모든 컴퓨터에 'Broadcast'된다.

이렇게 유선 네트워크인 이더넷에서 네트워크에 연결된 모든 장치가 같은 매체를 공유하는 환경이
Broadcast medium이라고 한다.

그리고 누군가 나와 동시에 빛을 쏜다고 하면, 이 신호가 섞여서 쓰레기가 된다.
눈치챘겠지만, 그렇다면 링크 계층의 핵심은

Collision이 발생 안하도록!!!

하는 것이 목적이다.

각 PC 안에 있는 NIC 카드 안에 링크 계층이 구현되어 있다.

Medium Access Control protocol = MAC

위 말을 직역하면,
"매체에 접근할 때 조절해서 충돌을 해결하자"

이상적인 MAC

  • 하나의 노드만 보내고 싶을 때 R을 다 쓰고,
  • 여러 노드가 보내면 공평히 나눠쓰고...

이상이다 현실이 아니라.

현실적인 여러 방식

  • 채널 파티셔닝
  • 랜덤 액세스
  • 순서 기다리기

등이 있다. 하나씩 살펴보자.

1. Channel partitioning MAC protocol : TDMA, FDMA

Time Division Multiple Access 방식이다.
여러 컴퓨터가, 한 라운드마다 각자 주어진 자리의 양만 쓰는 것이다.
이러면 애초에 충돌이 날 수 없다. 애초에 쓸 수 있는 시간과 양이 정해졌으니까.

Frequency division Multiple Access = FDMA
이건 각 컴퓨터가 정해진 주파수를 정해서 쓰는 방식이다. 거의 유사하다.

눈에 띄는 단점으로는 자기가 정해진 리소스가 사전에 정의되어있어,
자원이 낭비될 수 있다.

2. Random Access Protocols : CSMA, CSMA/CD, CSMA/CA

가장 베스트는 본인이 쓰고 싶을 때 쓰는 방식이다. 그래야 자원 낭비가 없으니.
대신 충돌이 발생할 수 있고, 핵심은
"충돌이 날 수 있는데 이걸 어떻게 교통정리를 할 것이냐"
다.

여러 방식이 있는데 하나씩 알아보자.

  1. CSMA(Carrier Sense Multiple Access)
    핵심은 Listen before transmit

마치 인간처럼, 누가 얘기하고 있으면 기다렸다가, 말이 안 들리면 본인이 말하는 방식이다.
사람도 마찬가지로 이래도 충돌할 수 있다.
동시에 두 명이 말을 꺼낼 수도 있지 않은가?
컴퓨터에서도 마찬가진데, 안들려서 말을 하고 있는데 상대방도 말하고 있어서 내 신호에 섞일 수 있다.
빛의 전파 시간이 있기 때문이다.
맨 처음 CSMA는 본인이 하고 싶은 말을 끝까지 했다고 한다.
ㅈㄴ 비효율적인게, 어차피 섞이는 순간 게임은 끝난다. 해석 못하는 쓰레기이기 때문이다.
여기서 한 단계 나아간 것이

  1. CSMA/CD (Collision detection)
    내가 말하고 있을때도, 누가 말하면 내가 감지를 할 수 있으니,
    내가 말하고 잇는데 누가 말하는게 들리면 일단 멈춰! 하는 것이다.
    자, 서로 멈췄다. 그럼 이제 어떻게 하나? 누가 먼저 말해야 하나?

CSMA/CD Algorithm

누가 말하는 지 에 대한 룰을 정한것이 이 알고리즘이다.

충돌이 나면 일단 멈추는데, 얼마동안 기다릴지를 정하는 알고리즘이다.

m번 충돌이 나면 NIC에서 랜덤으로 0 ~ 2^^m-1 숫자 중 하나를 선택하고, 그 시간만큼 기다린다.
충돌이 1번 나면 0,1, 중 하나만 기다리고,
10번 났으면 1023까지 하나 골라서 기다린다.

Q. 왜 충돌이 많이 날수록 더 기다릴까?

충돌이 일어난 건 알 수 있지만, 몇명이나 지금 말을 하고 있는지 모르니까,
일단 짧게 기다렸다가 다시 시도해보고, 사람이 많을 수록 더 기다리게 될 것이다.

Insight : 사람이 많은 곳에서 인터넷 느린 이유

이 알고리즘 때문이다.

3. Taking turns : Polling, token

이건 돌아가면서 하는 방법이다.

Polling은 마스터가 slave를 체크해서 할당을 해주는 방식이다.
Single-point-of-failure 문제가 있다.

Token은 토큰을 가진 사람이 말하고, 필요없으면 넘기는 방식이다.
이것도 마찬가지로 토큰을 잃어버리면 답없다.

profile
10년 후 세계 최고 블록체인 개발자

0개의 댓글

관련 채용 정보