[데이터 통신과 네트워킹] Data Link Control (DLC)

YJ·2024년 4월 7일
0

DLC services

Data Link Control (DLC)

  • 링크가 dedicated이거나 broadcast이거나 상관없이 두 인접한 노드 사이의 통신을 위한 절차를 다룬다.
    • dedicated : point-to-point
  • framing과 flow & eroor control을 포함한다.

Framing

  • 프레임을 만드는 것
  • 송신자와 수신자의 주소를 추가하여 구별한다.

Ethernet Frame

  • 이더넷에서는 Manchester 방식의 인코딩을 사용한다.

구성

  • Preamble : 56비트의 1과 0의 반복, 8bytes
  • SFD : 8비트의 프레임 구분자, 10101011, 1bytes
  • Destination address : 목적지 MAC 주소, 6bytes
  • Source addrress : 송신측 MAC 주소, 6bytes
  • Type / Length : 종류 또는 길이, 2bytes
  • Data and padding : 최소 길이 46bytes, 최대 1500bytes
  • CRC : 오류 체크를 위함, 4bytes

최소 프레임 길이 : 64bytes

최대 프레임 길이 : 1518bytes

CRC

Cyclic Redundancy Check

  • 오류 체크 코드
  • 송신자가 붙인다.
  • 수신측에서 검사해서, 데이터가 오류가 발생했다. → Frame을 버림

  • 나누는 수 33bit
    • CRC에 나머지 32비트가 추가됨

HDLC Frame

  • 이전에 이더넷과 다른 네트워크에서 사용함
  • High-Level Data Link Conntrol은 bit-oriented data link layer protocol이다.
  • Frame의 시작과 끝을 flag로 알린다. 01111110

  • FCS(Frame check sequence) : 프레임의 오류를 체크하기 위함

Bit Stuffing of HDLC

  • 5개의 1 bit가 나오면 0을 추가시킨다.
  • 데이터인데 flag 비트가 들어가 있으면 frame이 끝난 것으로 간주해버리므로 0을 하나 끼워넣는 것임

Error control

  • 송신측에서 CRC를 추가 시킴
  • 만약 수신 받은 프레임이 문제가 있으면, 버림
  • 만약 수신 받은 프레임이 문제가 없으면, 송신측에 ack(acknowledge)를 보냄
    • ack : 잘 받았다는 확인

Flow contorl

  • ACK를 받기 전에 송신자가 보내는 frame 수를 조절한다.
  • 송신측과 수신측 사이의 frame 갯수를 조절하는 것

CRC 동작 원리

송신측 CRC encoder

  • 원래 데이터에 divisor를 나눔
    • divisor : 송신자와 수신자가 약속한 나누는 수
      • 예) CRC-32
  • (divisor 개수 - 1)의 0을 더 추가해서 나눔
    • Multiply : AND 연산
    • Subtractor : XOR 연산
  • 나머지를 CRC에 추가시켜 보냄

수신측 CRC deocrder

  • 수신된 데이터를 divisor로 나눔
    • 나누었을 때 0이면 에러 없음
    • 나누었을 때 0이 아니면 에러 → 받은 것을 폐기
  • 일반적인 flow and error control에는 4가지 방법이 있다.
  1. Simple protocol
  2. Stop-and-Wait Protocol
  3. GO-Back-N protocol using slide window
  4. Selective-Repeat protocol using sliding window
  • 1번과 2번은 요즘도 사용하지만, 3번과 4번은 data link layer에서 사용하지 않는다.

Simple Protocol

  • data link layer에서 frame을 보내는 것으로 끝이다.
    • flow control과 error control을 하지 않음
    • 잘 받았는지 확인하지 않음
  • 수신측이 수신하는 모든 프레임을 즉시 처리할 수 있다고 가정한다.

Stop & Wait Protocol

  • flow control과 error control 다함
    • frame을 먼저 보내고 다음 frame을 보내기 전에 수신자가 잘받았는지 ACK를 기다림
    • 보내고 난 뒤에 잘 받았는지 확인하고 다음 것을 보냄
  • 중지하고 기다림
  • 수신측에서는 CRC를 가지고 에러를 체크한다.
    • CRC가 에러가 났으면 frame을 폐기한다.
    • 기다려도 ACK가 오지 않으면 frame이 잘못간 것임
  • 수신자가 frame을 보낼때마다 Timer를 시작한다. (Timer가 필요)
    • Timer가 만료되기 전에 ACK가 도착하면, 송신자는 다음 frame을 보낸다.
    • Timer가 만료되면, 송신자는 이전 frame을 다시보낸다.
  • 이를 위해 송신자는 ACK가 오기 전까지 frame을 복사해 놓아야 한다.

  • 한 방향으로 frame을 보내면 다른 방향으로 ACK를 보낸다.

송신측

  • Ready → Blocking
    • Packet came from network layer
      • frame을 만든다.
      • frame을 복사시켜 저장한다.
      • frame을 보낸다.
      • Timer를 동작시킨다.
  • Blocking : stop & wait 상태
    • Time-out
      • 복사한 frame을 다시 보낸다.
      • Timer를 다시 동작시킨다.
    • Corrupted ACK arrived
      • ACK를 폐기시킨다.
  • Blocking → Ready
    • Error-free ACK arrived
      • timer를 종료시킨다.
      • 복사한 frame을 폐기한다.

수신측

  • Ready : 받을 준비함
    • Corrupted frame arrived
      • frame을 버린다.
    • Error-free frame arrvied
      • network layer로 올려보낸다.
      • ACK를 보낸다.

Stop & Wait Protocol 예시

중복되는 frame 문제

  • 패킷의 번호가 없기 때문에 중복해서 받음

→ 0과 1만 사용해서 해결

해결책

  • ACK에 다음 받을 번호를 표시해서 보냄
  • 다음에 받은 패킷의 번호가 다르면 폐기한다.

Piggybacking

  • Data를 한 방향으로 보내면, ACK가 다른 방향에서 온다.
  • 통신을 더 효율적으로 하기 위해서 다른 방향에 데이터를 보낼때 ACK를 데이터 뒤에 끼워보낸다.
profile
제 글이 유익하셨다면 ♡와 팔로우로 응원 부탁드립니다.

0개의 댓글

관련 채용 정보