[CS]/[컴퓨터네트워크]

링크계층 - MAC protocol

broship 2021. 6. 25. 08:38

※kocw에서 제공하는 이석복 교수님의 컴퓨터네트워크 수업을 듣고 필기한 내용입니다.

출처를 따로 밝히지 않는 한 전부 해당 수업에서 제공한 자료들이며 제가 작성한 부분에 있어 틀린 부분이 있을 수도 있다는 점 양해바랍니다.


 

 

데이터 링크 계층


- 어플리케이션 계층에서는 소켓 대 소켓의 메세지 전송만을 봄

- 전송계층에서는 어떻게 신뢰성 있는 데이터를 전송할건지를 결정함

- 네트워크 계층에서는 어떤 경로를 통해 패킷을 전송할건지 결정함

- 링크계층에서 볼것은 내가 보낸 패킷이 어떻게 다음 게이트웨이까지 갈것인가

 

- 내가 보낸 패킷이 게이트웨이까지 가는데 전용선이 있는게 아님

- 하나의 게이트웨이에 여러 사용자가 패킷을 보냄

- 패킷이 물리계층을 지나가면서 전자파, 즉 파장으로 변함

- 사람 많은데서 얘기할때 한명한테만 얘기해도 주변 사람이 다 그 목소리를 들을 수 있는 것처럼, 파장도 여러 곳에 다 전달이 됨

- 여러곳에서 패킷을 보내면 충돌(collision)이 발생함

- 링크계층에서는 이러한 충돌을 방지해줌

 

- 링크계층 위에 계층들은 OS 내부에 코드로 구현이 되어있음(소프트웨어)

- 링크계층은 Network Interface Card, 하드웨어에 구현되어 있음

 

 

Medium Access Contral: MAC protocol


broadcast medium:

- 패킷을 뿌리면 광범위한(broadcast) 매체(medium)에 다 전송이 됨

- 이걸 정확히 원하는 곳에만 받을 수 있게 하는게 링크 계층의 MAC 프로토콜

 

- (구현은 힘들지만) 가장 이상적인 MAC 프로토콜

이용 가능한 통로 R이 있을 경우:

1. 하나의 노드가 데이터 전송을 원할경우 R에게 데이터를 보낸다

2. M개의 노드가 같이 사용을 원할경우 R/M씩 나눠서 보낸다

3. 이러한 동작들이 컨트롤 하는 매체를 두지 않고도 분산처리해서 동작할수 있도록 한다

4. 단순해야한다

- 이러한 동작이 가능해지도록 여태까지 몇백개의 MAC 프로토콜이 나옴

- 그 프로토콜은 크게 3가지로 분류가 가능함

1. channel partitioning

2. random access

3. taking turns

 

 

Channel partitioning MAC protocol


1) TDMA: time division multiple access

- 하나의 통로를 공유해서 사용할때 연결된 노드만큼 시간대를 나눠서 하나의 노드는 해당 시간대에만 전송이 가능하도록 해서 충돌을 방지함

- 하지만 연결만 되어있고 전송을 하지 않는 노드가 있을 경우 자원이 낭비된다는 단점이 있음

 

2) FDMA: frequency division multiple access

- 각 노드마다 주파수를 나눠서 해당 주파수로만 데이터를 보내도록 함

- TDMA와 마찬가지로 전송하지 않는 노드가 있을 경우 자원이 낭비됨

 

정리

- 시간 혹은 주파수 등을 통해 Access 권한을 나눠가짐

- 자원이 낭비될수도 있다는 단점이 있음

 

Ramdom access MAC protocol


- access 권한을 나누지 말고 보내고 싶을때 보내게 하자

- 이 경우 충돌이 발생함, 충돌을 방지하기 위한 프로토콜

 

1) CSMA: carrier sense multiple access

- listen before transmit, 전송하기 전에 우선 듣는다

- 전송하는 노드가 있을 경우 전송하지 않는다

- 전송하는 노드가 없으면 그때 전송한다

- 그래도 여러개의 노드가 동시에 듣고, 같이 전송하는 경우가 있을 수 있음(Propagation delay가 있기 때문)

 

2) CSMA/CD(collision detection) protocol

- 기존 CSMA에서 발생하는 충돌을 해결하기 위해 나온 프로토콜

- 데이터 전송을 하고 충돌이 발생하면 그 즉시 전송을 멈춤

- 전송을 멈춘 후 재전송을 할때 binary (exponential) backoff 라는 방법을 사용

- m번의 충돌이 있을때, {0,1,2,...,2^m-1} 까지의 숫자 중 랜덤으로 하나의 숫자를 뽑은 후 그 시간만큼 기다림- random access control은 자기가 원할때 데이터를 전송할 수 있다는 장점이 있지만 사용자가 몰릴 경우 전송 속도가 느려질 수 있다는 단점이 있음

 

 

Taking turns MAC protocol


- channel partitioning 방법은 사용자가 많으면 효율성이 좋지만 사용자가 적을 경우 낭비되는 자원이 발생함

- random access 방법은 사용자가 적으면 효율성이 좋지만 사용자가 많을 경우 delay 시간이 길어짐

- 그래서 총괄하는 master를 하나 둬서 관리감독 하게 하는게 taking turns 프로토콜

- 하지만 master가 고장날 경우 전체 시스템이 다운될 수 있기에 사용은 잘 안됨

'[CS] > [컴퓨터네트워크]' 카테고리의 다른 글

링크계층 - 스위치  (0) 2021.07.01
링크계층 - LANs  (0) 2021.06.27
네트워크계층 - 라우팅 알고리즘  (0) 2021.06.13
네트워크계층 - DHCP, IP fragment  (0) 2021.06.13
네트워크계층 - IP 프로토콜  (0) 2021.06.13