[컴퓨터 네트워크] Data Link Layer

Taegang Yun·2023년 12월 16일
1

컴퓨터 네트워크

목록 보기
4/9
  • 물리 계층에서 발생 가능한 오류를 감지하고 수정하는 역할을 수행
  • 인접한 기기 간의 통신을 담당

Framing

datagram을 Frame으로 캡슐화

  • header와 trailer를 붙임.
  • header와 MAC의 주소가 출발지와 목적지를 나타냄

Flow Control

데이터 전송 속도 조절

  • 수신 측이 처리 가능한 수신 속도보다 빠르게 데이터가 송신되면 송신 측의 전송 속도 조절
  • Stop-and-Wait 방식 : 프레임을 하나 전송할 때마다 ACK 응답을 기다림. 안정적이지만 느림.
  • Sliding Window 방식 : 여러 프레임을 한 번에 전송하고, ACK는 묶어서 받는다. 이때, ACK 응답은 다음에 받을 프레임의 숫자를 보낸다.
  • ACK 2는 0, 1 이 잘 수신되었으니 2~0을 송신해달라는 것을 의미한다.

Error Correction

간섭이나 노이즈 등으로 인한 오류의 감지와 정정

  • single bit error <-> Burst error
  • backward error corr : 에러 발생 시 재송신
  • forward error corr : error correction code를 통해 수신 측이 스스로 에러를 수정

Two-dimensional Bit parity

  • single bit error의 감지와 수정 가능

Cyclic Redundancy Check (CRC)

  • 더 강력한 에러 검출 방식. (수정 X)
  1. 사전에 정의된 CRC 다항식 G로 전송하고자 하는 D를 나눔.
  2. 나머지 값 R을 데이터 D에 붙여서 전송
  3. 수신측은 수신된 D를 G로 나눠보고, 나머지가 R인지 확인.

Hamming code

  • 1비트 오류를 검출하고 정정 가능
  • 전송하고자 하는 데이터의 비트 수 d와 패리티 비트의 수 p는 아래 식을 따른다.

2pd+p+12^p \geq d+p+1

Error Control + Flow Control

  • Stop-and-Wait ARQ

    • 데이터 프레임을 전송한 후 ACK가 확인되기 전에는 다음 프레임을 송신하지 않고 이전 프레임을 가지고 있는다
    • 데이터 프레임과 ACK 프레임에는 0과 1의 번호가 주어진다. 수신자가 데이터 0을 잘 수신하면 ACK 1을 보내야 하는데, 만약 적절한 ACK가 오지 않으면 부정응답으로 간주하고 재송신을 진행한다.
  • Sliding Window ARQ

    • 수신자가 수신 상태에 따라 NAK나 ACK를 보낸다.
    • ACK 프레임은 수신자가 다음으로 받을 프레임의 번호, NAK는 비정상적으로 수신된 프레임의 번호를 포함한다.
  • Go-Back-n ARQ : sliding window ARQ 방식 중 하나로, ACK가 확인되지 않으면 모든 프레임을 재전송한다.

  • Selective-Reject ARQ: Go-Back-n ARQ보다 효율적인 방법으로, NAK에서 요청한 프레임만 재전송한다. 수신자는 에러가 포함된 프레임만 교체 가능해야 한다.

Line Discipline

언제 어떤 장치가 데이터를 보낼 수 있는지 링크를 조정

  • ENQ / ACK 방식 : 두 장치 간에 전용 라인이 있는 경우
    • 전송 시작 시 Enquiry 신호를 보내고, 수신측은 ACK 신호를 보낸다.
    • 이후 송신측이 데이터를 보낼 때마다 ACK로 확인한다
    • 전송이 완료되면 송신측이 EOT 신호를 보낸다.
  • Poll / Select 방식 : 한 장치가 Primary Device 로 지정되고 나머지가 Secondary Device로 지정된 구조에서 사용.
    • 주 기기가 통신 링크를 제어하며 보조 기기들은 주 기기의 지시에 따른다.
    1. 주 기기가 데이터를 수신하고자 할 때, 송신자가 될 보조 기기에 Poll 신호를 보낸다.
    2. 보조 기기는 데이터를 전송하거나 NAK 신호를 보낸다
    3. 주 기기가 데이터를 송신하고자 할 때, 수신자가 될 기기에 SEL 신호를 보낸다.
    4. 보조 기기는 ACK 신호를 보내고, 데이터를 받을 때마다 ACK 신호를 보낸다.
  • 하나의 공유 broadcast 채널과 두 개 이상의 동시적인 통신을 주고받는 노드들 존재
  • 노드들이 충돌없이 언제 송수신을 진행할지 결정하는 알고리즘 -> 프로토콜
  • 3가지 주요 구조가 있음
    • Channel Partitioning : 채널을 time, frequency, code 등으로 나누어 사용하는 방식
    • Random Access : 그냥 collision이 발생하게 두고 이를 극복하는데 집중
    • Taking Turns : 노드들이 차례를 가짐

Random Access 프로토콜

모든 노드들이 우열을 갖지 않고 데이터를 보냄

  • ALOHA, CSMA, CSMA/CD, CSMA/CA

  • ALOHA : 무선 LAN을 위해 설계되었으나 유선에서도 사용 가능

    • 모든 노드는 언제든지 데이터를 송신할 수 있음
    • 프레임이 정상 수신되면 ACK 응답이 존재하여 collision detection은 불필요함.
    • 데이터를 전송 후 랜덤한 시간 후에 재전송(ACK 미확인 시)
  • Pure ALOHA

    • ACK가 들어오지 않으면, 랜덤한 길이의 backoff time을 기다린 후에 재전송
  • Slotted ALOHA

    • 공유 채널을 고정된 timeslot으로 나누고, 전송할 것이 있으면 이 slot에 맞게 보냄.
    • 전송이 아주 약간 겹쳐서 충돌이 발생할 일이 없어 충돌이 감소
  • CSMA(Carrier Sense Multiple Access)

    • 데이터 전송에 앞서 채널의 트래픽을 감지
      • 1- Persistent : 채널이 idle이면 전송, busy면 idle이 되자마자 전송
      • Non-Persistent: 채널이 busy이면 랜덤한 시간 기다리고 다시 확인.
      • P-Persistent: 위 두 방식의 조합. 채널이 idle이면 p 확률로 전송. 전송하지 않으면 (1-p) 만큼 기다렸다가 다음 타임슬롯에 다시 전송 시도
      • O-Persistent: 각 노드의 우선순위가 존재. 채널이 idle하면 우선순위 순으로 전송
  • CSMA/CD (collision detection)

    • 채널이 idle이라면, 먼저 테스트 프레임을 하나 보내본다.
    • 전송이 잘 되면 나머지 프레임을 전송한다.
    • 충돌이 강지되면, jam/stop 신호를 채널에 보내고 전송을 중단한다.
    • 랜덤한 시간을 기다리고 전송을 재개한다.
  • CSMA/CA (collision avoidance)

    • 데이터를 송신하면서 동시에 ACK 신호를 송수신하여 충돌을 확인한다.
    • 채널에 ACK 신호가 하나만 있으면 송신자 하나만 송신 중인 것이나, ACK 신호가 두 개 이상이면 여러 송신자가 동시에 송신중인 것이다.
    • 충돌 회피를 위해 다음과 같은 전략들을 사용한다.
    • Interframe space: 채널이 idle이 되어도 바로 전송하지 않고 약간 기다려본다. 이러한 시간을 IFS라 하며, 그 길이는 노드의 우선순위에 따라 달라진다.
    • Contention window: 전송 시간을 time slot으로 나누고, 전송 시 랜덤한 슬롯만큼 기다리고 전송을 시작한다.
  • Controlled Access 프로토콜

    • 각 노드들이 서로 소통하며 언제 어떤 노드가 채널을 사용할지 정한다.
    • 한 노드는 다른 노드들이 동의하지 않는 한 독단적으로 전송을 시작할 수 없다.
    • Reservation, Polling, Token Passing 기법 등
  • Channelization 프로토콜

    • 코드나 주파수 등으로 채널을 분할하여 모든 노드들이 동시에 전송할 수 있다.
    • FDMA, TDMA, CDMA가 있다.
    • TDMA는 동기화 비트가 추가되어 오버헤드가 있다.
  • IEEE Ethernet Standard

  • 이더넷의 물리적, 데이터 링크 계층의 세부 사항을 정의하는 표준

  • 10Base-T: 10Mbps 속도의 baseband signaling 기반 Twisted Pair 케이블 통신 표준

  • FDDI (Fiber Distributed Data Interface)

    • 토큰링의 개선형인 고속 LAN 기술로, 1-2km의 길이로 떨어진 1,000개의 호스트를 커버 가능
  • Fast Ethernet vs FDDI

    • Throughput: 100 Mbps의 같은 대역폭을 갖지만, FDDI는 충돌 감지가 가능하여 30-50% 빠름
    • Latency: 링 형으로 구성된 FDDI가 훨씬 높음
    • Cost: 이더넷이 더 쉽게 설치하고 유지할 수 있음.
      • 설치가 간단하고, 장치 추가도 링형의 FDDI와 달리 네트워크 다운 없이 수행 가능
    • 거리 제한은 twisted pair로 100m, 광섬유로 2km에 불과한 이더넷에 비해 100km로 훨씬 우수함
    • Host 수는 1,000여개로 비슷하나, FDDI는 호스트 수에 비례하여 지연이 길어지고, 이더넷은 충돌이 많아진다.
  • MAC Table

    • 스위치의 포트 번호와 해당 포트에 연결된 컴퓨터의 MAC 주소가 등록된 테이블
    • 기기에서 프레임이 스위치로 전송되면, MAC 주소를 확인하고 만약 등록되지 않은 주소면 추가함 → 학습 가능
    • LAN 내부에서 데이터를 주고받을 때, 라우팅 테이블 상의 MAC 주소를 통해 목적지로 데이터 전송 가능 → 주소 필터링
  • ARP Table (Address Resolution Protocol)

    • IP 주소를 통해 하드웨어 주소(MAC)를 알아내기 위한 테이블
    • LAN 통신을 하고자 하는 상대 PC의 IP는 아는데 MAC을 모를 때, ARP request 패킷을 보내면 MAC 주소를 알려줌.
  • Token Ring, Token Bus

    • LAN 구성 방식
    • 토큰 링 방식은 패킷이 링 형태로 연결된 장치들을 broadcast 됨
    • 토큰 버스 방식은 물리적 연결은 버스 형태로 되지만, 논리적인 링 구조로 전송이 이뤄져 충돌 최소화
  • Virtual LAN

    • 단일 LAN을 가상으로 분할하는 것.
profile
언젠간 전문가가 되겠지

0개의 댓글