[네트워크] Link Layer 역할과 MAC protocol 의 종류

2022. 12. 28. 02:21·Computer Science/네트워크
728x90

1. Link Layer 하는 역할 

Link Layer 는 error detection 및 correction 을 한다. 

또한 broadcast channel 에서 각각의 패킷이 충돌하지 않고 다음 hop 으로 전송될 수 있도록 control 해준다. 

2. Link Layer의 구조 

link layer 에서 host들과 router들을 node로 보고, 이 node들을 잇는 communication channel들을 link 라고 한다. 
node들을 잇는 communication path로는 wired links(유선 통신), wireless links(무선 통신), LAN 이 있다. 
link layer 는 컴퓨터의 network interface card (NIC) 에 구현되어 있다. 

3. MAC protocol 의 의미 

broadcast medium 은 한 네트워크 상에 여러 host들이 매체(medium)를 공유해서 사용하고 있다는 의미이다.  그런데 이 여러개의 Host들이 매체에 접근할 때 동시에 두 개 이상 한번에 접근할 수 없으며, 동시에 여러 host가 접근할 경우 충돌이 일어날 것이다. 

이러한 충돌을 방지하기 위해 만든 프로토콜이 Medium Access Control 의 약자인 MAC protocol 이다. 

4. MAC protocol 의 종류 

1) 이상적인 MAC protocol 

이상적인 MAC protocol 은 다음과 같을 것이다. 우선, 전송할 node가 단 하나뿐이라면 전체 broadcast channel 을 R bps 로 다 사용할 수 있어야 한다. 그리고 전송할 node 개수가 M개라면, 각각의 node를 R/M bps로 전송할 수 있어야 한다. 
또한 분산처리가 가능하고 간단한 protocol 이라면 이상적일 것이다. 

2)  MAC protocol 의 종류 

a. channel partitioning

우선 시간을 기준으로 나누는 channel partitioning 이 있다. 
channel을 더 작은 크기의 단위로 나누어서 사용하는 개념인데, 나누는 기준은 시간이다. 시간 단위로 나누어서 고정된 길이의 slot을 만든다. 다수의 node들을 전송하기 위해서 사용할 수 있게 한다.


단점은 그림에서도 확인할 수 있듯이, 2번 slot과 같이 사용하지 않는 slot 이 발생하며 이로 인해 자원의 낭비가 있다. 

또한 주파수 대역을 기준으로 나누는 FDMA ( frequency division multiple access ) 방식이 있다. 주파수 대역을 나눠서 사용하는 것이며, 이 방법 역시 사용하지 않는 부분에 대한 자원의 낭비가 발생한다. 

b. random access

channel partitioning과 달리, channel 을 나누지 않는다. 
충돌이 발생할 것이라는 것을 인정하고, 충돌이 발생한 후 어떻게 해결할지에 좀 더 집중하고 있다. 
CSMA (carrier sense multiple access) 방식이 있으며, 이는 전송하기 이전에 상태를 확인하라는 것이다. idle 상태를 감지했을 때 node를 전송하고, 이미 channel 을 다른 누군가 사용하고 있다면 전송을 보류한다. 
그러나 충돌은 여전히 발생할 수 있다. propagation delay 가 발생할 수 있기 때문이다. 이는 어느 한 node가 다른 node가 전송이 되고 있는 상태인 것을 시간 차이로 인해서 알지 못하는 경우이다. 그런데 propagation delay는 빛의 속도와 같다. 즉, 이 delay 를 해결하는 것은 불가능하며 충돌이 발생한다면 이미 전송한 frame들도 날라가서 비효율적이다. 

이를 해결하기 위한 방법이 CSMA/CD (CD: collision detection) 방식이다. 

충돌이 발생하게 되면, 멈춘다. 이 멈춰서 기다리는 상태를 backoff라고 한다. 

충돌이 m번 일어나게 되면, NIC는 {0, 1, 2, ... 2^m-1} 중에 하나를 랜덤 선택해서 그 만큼의 시간동안 기다린다. 

예를 들어, 충돌이 1번 일어나면 {0, 1} 중에서 backoff시간을 정할 것이며, 충돌이 2번 일어나면 {0, 1, 2} 중에서 선택할 것이다. 즉, 충돌이 많이 일어날 수록 backoff의 범위는 늘어나게 될것이며 범위가 넓어야 각자 다른 숫자를 고르게 될 것이다. 

생각해보면 당연한 것인데, 사용자가 많은 경우, 충돌이 많이 일어날 것이다. 충돌이 많이 일어나면 backoff 범위가 넓어지고 이 말은 지연 시간이 늘어난다는 것이다. 학교에서 wifi를 사용할 때 같은 wifi를 사용하는 학생들이 많으면 많을 수록 지연시간이 늘어난다는 것과 동일한 의미이다.
CSMA/CD는 Ethernet 유선 통신에 적합하여 쓰인다.  

c. taking turns 

taking turns 방법은 말그대로 순서대로 channel을 사용한다는 의미이다. 

- polling : master - salve 구조로, master가 가리키는 slave 만 data를 전송할 수 있다. 단점은 single point of failure이다. 즉, master 가 가리키는 pointer 에 문제가 발생하면 시스템 전체에 장애가 발생할 것이다. 

- token passing : token 을 가지고 있는 node만 data를 전송할 수 있다. 단점은 polling 과 마찬가지로, single point of failure이다. token을 잃어버리는 경우 (token에 문제가 발생한다면) 시스템 전체에 장애가 발생할 것이다. 

728x90

'Computer Science > 네트워크' 카테고리의 다른 글

[Network] IP 클래스와 IPv4, IPv6 주소체계  (2) 2023.03.05
[네트워크] SSL/TLS Handshake 과정  (0) 2023.02.12
[Network] Link Layer(2) - 이더넷(Ethernet)과 ARP 테이블, 프레임 구조  (0) 2022.12.31
[네트워크] IP주소 체계  (0) 2022.12.26
[네트워크] OSI 7 계층  (2) 2022.12.25
'Computer Science/네트워크' 카테고리의 다른 글
  • [네트워크] SSL/TLS Handshake 과정
  • [Network] Link Layer(2) - 이더넷(Ethernet)과 ARP 테이블, 프레임 구조
  • [네트워크] IP주소 체계
  • [네트워크] OSI 7 계층
minjiwoo
minjiwoo
Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험과 공부한 내용을 기록하며 지속가능한 엔지니어가 되는 것이 꿈입니다.
minjiwoo
minji's engineering note
minjiwoo
전체
오늘
어제
  • 분류 전체보기 (613)
    • Data Engineering (42)
      • Apache Spark (11)
      • Databricks & Delta Lake (9)
      • Airflow (3)
      • SQL (6)
      • Trouble Shooting (2)
      • Hadoop (2)
      • MLOps (1)
    • Cloud Engineering (104)
      • AWS (23)
      • Linux 🐧 (29)
      • Docker 🐳 (21)
      • Kubernetes ⚙️ (20)
      • Ansible (10)
    • Computer Science (87)
      • 네트워크 (9)
      • 운영체제 (25)
      • 정보처리기사 (48)
      • CS 기술 면접 스터디 (3)
    • Programming Languages (27)
      • Python (17)
      • C와 C++ (10)
    • Backend (5)
      • Django (2)
    • 프로젝트 (2)
      • 테크포임팩트 (2)
    • iOS (11)
      • 레이블러리 (2)
    • Algorithm (PS) (275)
      • LeetCode (6)
    • 개발일기 (30)
      • 내돈내산 후기🎮 (3)
      • 개발자 취준생 (5)
      • Today I Learned (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Hi there

인기 글

태그

  • BFS
  • 백트래킹
  • 클라우드
  • Databricks
  • 코딩테스트
  • Leetcode
  • Swift
  • 데이터엔지니어링
  • 카카오코딩테스트
  • 데이터엔지니어
  • dfs
  • EC2
  • dp
  • 파이썬
  • AWS
  • python
  • docker
  • ansible
  • 프로그래머스
  • 백준
  • 알고리즘
  • 데이터브릭스
  • 리눅스
  • 스파크
  • 운영체제
  • SPARK
  • Kubernetes
  • 빅데이터
  • linux
  • 쿠버네티스

최근 댓글

최근 글

hELLO· Designed By정상우.v4.5.2
minjiwoo
[네트워크] Link Layer 역할과 MAC protocol 의 종류
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.