※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 |