지금까지는 물리계층에 대해 공부를 했었다면
이번시간부터는 데이터링크 레이어에 대해 알아본다.
데이터링크 레이어는 원홉 통신을 담당하고
네트워크레이어에서 내려온 데이터그램에 헤더를 붙여 프레임을 구성한다
(붙이는 헤더에는 보내는host의 MAC주소, 받는host의 MAC주소 등의 정보가 들어있다)
Broadcast(shared wire or wireless medium)
송신 데이터가 네트워크에 연결된 모든 호스트에 전송되는 방식.
예시: (유선)버스 토폴로지,(무선)WiFi 4G 5G 라디오 등
데이터를 전송할 때..
하나의 선으로 여러 대의 pc가 연결되어 있다고 하자.(버스형)
만약 동시에 여러 pc에서 신호를 발생시키면..?
collision(충돌)이 생겨 신호를 제대로 전달 할 수 없다.
이 때 collision을 방지하기 위해 매체 접근제어(Medium Access Control)가 필요하다.
또한, 받은 데이터가 내 것인지 내 게 아닌지 구별하기위해 MAC address가 필요하다.
Three broad classes
- Channel partitioning(time slots, frequency, code)
- Taking turns
- Random access
Channel partitioning
- TDMA
- FDMA
TDMA (Time Division Multiple Access)
2G통신에서 쓰이던 방식.
Access to channel in "rounds".
Each station gets fixed length slot (length = packet transmission time) in each round
시간을 나누어 사용-> 너네 10초씩 나눠서 말해!
내 순서가 오면 말할 수 있다.
사용하지 않는 슬롯이 낭비됨
FDMA (Frequency Division Multiple Access)
Channel spectrum divided into frequency bands
Each station assigned fixed frequency band
나눈 주파수 영역에서 통신을 하지 않으면 주파수영역을 낭비하는것임
Random access
- CSMA
- CSMA/CD
- CSMA/CA
CSMA (Carrier Sense Multiple Access)
일명 "말하기전에 듣기" 권법.
if channel sensed idle == transmit entire frame
if channel sensed busy == defer transmission(전송 안하고 기다림)
내가 전송하다가 collision을 감지해도 보내던 정보는 끝까지 보내야 한다.
CSMA/CD (CSMA with collision detection)
CSMA + collision이 감지되면 전송을 중단함.
기존에는 collision이 감지되어도 끝까지 전송했었는데, 전송을 중단함으로써 낭비되는 자원을 줄임
collision 감지는 유선에서 쉽고, 무선에서 어렵다.(거리가 멀어지면 남이 보낸 신호가 나에게까지는 오지 않을 수 있다. 반이중통신이라 주고받고가 동시에 안 된다)
Ethernet CSMA/CD alogrithm
1.남이 말할 때는 기다렸다가.
2. collision 발생시 전송중단.
3. 중단 이후 마음속으로 카운트다운하기.
1. NIC receives datagram from network layer, crates frame
2. if NIC senses channel: (말하기전에 듣기)
if idle: start frame transmission
if busy: wait until channel idle, then transmit
3. if NIC transmits entire frame without collision, transmission in done (전송 잘되면 끝)
4. if NIC detects another transmission while sending: abort and sned jam(collision 발생하면 중단하고 잼시그날 날림)
5. After aborting, NIC enters binary (exponential) backoff: (카운트다운하기)
m번째 collision이 발생한 경우, NIC는 {0,1,2,...,(2^m)-1} 중에서 값 하나=K를 고름
그럼 K* 512 bit times만큼 기다렸다가 전송을 시작함.
여기서 backoff time의 최댓값이 작으면 collision확률이 높아져 불안정하고
최댓값이 너무 크게되면 최대지연시간이 너무 길어지는 단점이 있다.
그래서 collision이 몇번이나 걸렸냐에 따라 최대K값이 높아지게 설정한 듯함.
Taking turns
- Polling
- Token passing
Polling (일명 "심판이 정해주기")
심판 왈: 발표하고 싶은 사람 말해~
학생1: 나 발표함~왈라왈라~
학생2: 난 안해;;
Master node "invite" other nodes to transmit in turn;
낭비되는 리소스가 적다는 장점이 있고(Channel partitionning에 비해)
polling 하는 지연시간이 생기는 단점,
master node가 고장나면 네트워크를 사용할 수 없는 단점이 있다
Token passing (일명 "바톤터치")
token을 전달하며 순서대로 신호를 전달함.(주로 링 토폴리지에 사용하는 듯하다)
마찬가지로 토큰 전달 지연시간이 존재,
토큰 전달에 오류가 생기면 네트워크에 문제가 생기는 단점이 있고
낭비되는 리소스가 적다는 장점이 있다.
Channel partitioning MAC protocols VS Random access MAC protocols
채널파티셔닝은 collision이 아예 발생하지 않도록 방지한다는 장점이 있으나, 낭비되는 리소스가 많고(트래픽로드가 낮을 때)
랜덤액세스의 경우 낭비되는 리소스가 적다는 장점이 있으나, collision 발생 가능성이 있다(특히 트래픽로드가 높을 때)는 단점이 있다.
음...그러면 Taking turns는 collision도 발생하지 않고 리소스낭비도 줄일 수 있는데 이게 짱 아닌가?
싶지~~~~만? 그것은 이론상이었고..
master가 죽으면 어떡하나?
토큰을 언제 한바퀴 다돌리냐..등등 여러 문제점이 많아 실제로는 쓰이지 않는 프로토콜이라고 해.
'2022-2 > 데이터통신' 카테고리의 다른 글
Switch (1) | 2022.11.23 |
---|---|
ARP and Ethernet (0) | 2022.11.16 |
Analog Transmission (0) | 2022.10.19 |
Digital TransMission(2) - Ananlog data to digital data conversion (0) | 2022.10.12 |
Digital Transmission (1) (1) | 2022.10.07 |
댓글