[네트워크] Link 계층 - 다중 엑세스 프로토콜

장현수·2023년 7월 21일
0

네트워크

목록 보기
10/11

호스트와 게이트웨이 사이의 전용선이 존재하는 것이 아니라, 공용 선/Broadcast Medium을 통해 패킷이 첫 번째 라우터로 전달된다.

그러면 어떻게 하면 충돌을 피하면서 패킷이 라우터까지 잘 살아서 도달하게 할 수 있을까?

패킷이 목적지 라우터에만 가는 것이 아니라, 공용 선 전체에 퍼진다.

충돌 해결이 중요한 주제


링크 계층 전송단위는 frame. 그 안에 담기는 것이 패킷

유선상황인 Ethernet cable 상황을 상정하고 학습

링크 계층은 OS, network interface card에 부분적으로 구현되어 있다.
애플리케이션 : user
네트워크계층 : (TCP/IP) OS


충돌 컨트롤 - Multiple access links, protocols (MAC Protocols)

1. partitioning 방식의 Mac protocols:

  1. TDMA
    time division multiple access

여러 명이 시간을 나눠서 액세스 한다.

이렇게 되면 충돌하지 않는다. 하지만, 작업이 없는 경우 프로토콜 낭비 발생

  1. FDMA
    frequency dividion multiple access
    프리퀀시를 나눠서 충돌 안나게 함. 마찬가지로 사용하지 않는 경우 낭비 발생

2. 파티셔닝의 단점을 뒤집은 것 : Random access방식

할 얘기 있을 때 해라
유연한 장점은 있지만, 동시에 접근하려고 할때 충돌 발생
따라서 충돌 발생시 회복 방식에 대해 명시해야 함

  1. CSMA(carrier sense multiple access)
    전송하고 싶은 프레임이 있을 때, 전송 하기 전 한번 들어보자.
    누가 전송하고 있으면 안함. 전송하는 사람 없으면 전송함

그래도 충돌 방지 안됨. 기다렸다가 시작할 때 그게 동시에 시작하는 경우..

충돌이 발생하는 이유 : 전자기파의 진행속도가 제한적이기 때문. -> 충돌을 완전히 없앨 수 없음

충돌 발생 시 손해를 최소화 하는 방향으로.

CSMA/CD(Collision Detection): 충돌 탐지

패킷 전송이 겹처서 충돌이 일어나면 (감지하면) 그 순간 바로 패킷 전송을 멈춘다.
전송이 멈춰진 해당 프레임은 날아간 것. -> 재전송 해야 한다.
재전송을 위해 충돌 감지하면 패킷 전송을 멈추고 random time을 돌린다. 재전송에서 또 충돌이 나면 다시 랜덤 타임..
되도록 시간낭비 없이 빨리 재전송하는 것이 좋으니까 랜덤타임 range는 짧으면 짧을 수록 좋다.
대신 서로 빨리 재전송 하려다가 또 충돌이 날 수 있는 문제가 발생.
따라서 첫 충돌에 대해서는 랜덤 타임을 짧게, 충돌이 거듭될수록 랜덤타임을 점차 길게 줌 : binary exponential backoff. 2배씩 증가

프레임을 전송하는 호스트가 많으면 많을수록 random time은 늘어남.

유선상황에서는 내 신호와 다른 사람의 신호의 세기가 비슷해서 CD가 쉽지만 무선상황은 그렇지 않다.


3. Taking turns 방식의 MAC protocols

채널 파티셔닝은 사용자가 많은 경우 효율적
랜덤 액세스는 사용자가 적을 경우 효율적

이 두 방식의 장점만을 취하고자 한 것. 이론적으로는 많이 나와있지만 현실에선 많이 안쓰임.

1.taking turns

master 노드가 있어야 함. 각 노드에게 전송할 패킷이 있는지 물어봄
-> 랜덤 액세스의 장점인 말 하고 싶을 때 말할 수 있으면서도 충돌이 안나는 장점이 있음
대신 master 노드가 오작동하거나 다운됐을 경우 전체가 동작하지 않는다는 문제가 있어서 현실적으로 안쓰임

2.token passing


토큰을 갖고 있는 호스트만이 프레임을 전송할 수 있게 한 것
토큰을 돌아가면서 사용함.
토큰 유실할 경우 큰일이라 현실에서 사용 안함


현실적으로 채널 파티셔닝은 이동통신, 랜덤 액세스 방식은 이더넷과 와이파이에서 사용하고 있다.

Ethernet

유선 케이블 상황에서의 mac 프로토콜


옛날엔 버스 방식, 요즘은 스타 방식

이더넷 프레임 구조

데이터 필드에 ip 패킷
crc 필드. (헤더, 데이터, crc) 무시해도 됨. 에러체킹을 위한 필드

헤더

preemble 무시
중요한건 d.a, s.a 여기 적히는 주소는 IP address가 아닌 MAC address다.

이더넷은 CSMA/CD를 프로토콜로 사용하고 있다.

각 링크에서 충돌나지 않고 패킷이 살아서 목적지까지 잘 전달되는 것이 목표

CSMA/CD 방식은 패킷 전송에 대한 피드백이 없음
유선 상황인 이더넷 상황에서는 외부로부터 노이즈가 없으니, 내부 충돌만 피하면 프레임이 잘 도착하게 됨.
따라서 피드백이 필요가 없음

충돌만 없으면 무조건 프레임을 전송할 수 있다 = 충돌이 있을 경우는 무조건 재전송 해야 함

따라서 CSMA/CD방식에서는 collision detection이 굉장히 중요함. 충돌이 있음에도 감지를 못하면 큰일 남

CSMA/CD에서는 충돌 탐지가 100% 되어야 함


실제 충돌이 있었음에도 탐지가 안될 경우에는??

초반에 찔끔 보내다가 충돌나서 멈춘 상황
찔끔 초반 걔네는 계속 감
A 입장에서는 충돌 없었음
그러면 그 프레임 재전송 안됨
프레임 크기가 충분히 컸다면 감지 가능했을 것

이걸 방지하기 위해 이더넷에서는 랜선 최대 길이와 delay를 감안해서 무조건 탐지가 가능하도록 프레임 사이즈의 최소 사이즈가 정해져 있음

profile
개같이 발전하자 개발

0개의 댓글