Data Link Control

Data Link Control은 직접 연결된 두 스테이션 사이에서 프레임을 안정적으로 주고받는 OSI 2계층의 제어다. 이 페이지는 흐름 제어와 오류 제어(ARQ)를 중심으로 그 요구사항을 다룬다. IP Internetworking은 Data Link가 다루는 frame 위에서 IP가 datagram을 어떻게 다루는지를 설명한다.

두 스테이션 사이 효과적인 데이터 통신을 위해 Data Link Control이 처리하는 요구사항이다.[1]

흐름 제어 (Flow Control)

송신 엔티티가 수신 엔티티를 데이터로 과부하시키지 않도록 하는 기술이다. 수신자는 보통 최대 길이의 데이터 버퍼를 할당하고, 수신 후 상위 레벨로 전달하기 전 일정 처리를 수행한다. 흐름 제어가 없으면 수신자 버퍼가 채워져 오버플로우가 발생할 수 있다.[2]

방식 설명
Stop-and-Wait 가장 단순한 형태. 큰 데이터 블록을 작은 프레임으로 나눠 전송하고, 각 프레임 전송 후 ACK를 기다린다. 공유 매체를 한 스테이션이 오래 점유하지 않게 한다. 전송 시간이 길어질수록 오류 가능성이 커진다.[3]
Sliding Window 여러 번호가 매겨진 프레임을 동시에 전송할 수 있다. 수신자는 W 길이 버퍼를 가지고, 송신자는 ACK 없이 최대 W 프레임을 보낼 수 있다. ACK는 다음에 예상되는 프레임 번호를 포함한다. 시퀀스 번호는 필드 크기(k)에 의해 제한되어 2^k modulo로 번호가 매겨지고, 최대 윈도우 크기는 2^k − 1이다. 풀 듀플렉스에서는 ACK를 피기백(piggyback)할 수 있다.[4]

오류 제어 (Error Control)

손실된 프레임(도착 안 함)과 손상된 프레임(도착했으나 일부 비트 오류)을 구분해 처리한다.[5]

ARQ (Automatic Repeat Request)

ARQ는 신뢰할 수 없는 데이터 링크를 신뢰할 수 있는 것으로 바꾸는 오류 제어 메커니즘의 총칭이다.[6]

ARQ 버전 설명
Stop-and-Wait ARQ 한 프레임 보내고 ACK를 기다리며, 수신자의 응답이 도착할 때까지 다른 데이터를 보낼 수 없다.[6:1]
Go-back-N ARQ 슬라이딩 윈도우 기반. 손실/오류 프레임 발생 시 그 이후 모든 프레임을 재전송한다(N만큼 되돌아감).[6:2]
Selective-reject ARQ 슬라이딩 윈도우 기반. 손상된 프레임만 선택적으로 재전송한다. 재전송을 최소화하지만 수신자는 충분히 큰 버퍼가 필요하고 송신자 논리가 더 복잡하다.[6:3]
sequenceDiagram
    participant S as Source
    participant D as Destination
    S->>D: Frame 1
    S->>D: Frame 2
    Note over S,D: 정상 전송: 순서대로 수신
    S-xD: Frame 3 (loss)
    S--xD: Frame 4 (error)
    S->>D: Frame 5

신뢰성과 단순성의 트레이드오프

신뢰성 vs 단순성 트레이드오프는 네트워크의 기본 질문이며, 같은 트레이드오프가 상위 계층(TCP 재전송 정책)에서도 반복된다고 볼 수 있다. 흐름 제어와 오류 제어를 개념적으로는 분리해 다루지만, 실제로는 ACK 시퀀스 번호 하나로 통합 구현되는 경우가 많다.[7]

흔히 놓치는 지점

관련

출처

테스트 질문


  1. Data Link.md — "효과적인 데이터 통신을 위해 두 개의 직접 연결된 송수신 스테이션 사이에 필요한 요구 사항 및 목표": 프레임 동기화, 흐름 제어, 오류 제어, 주소 지정, 제어 및 데이터, 링크 관리 ↩︎

  2. Data Link.md — "송신 엔티티가 수신 엔티티를 데이터로 과부하시키지 않도록 하는 기술", "흐름 제어가 없으면, 수신자의 버퍼가 채워져서 오버플로우될 수 있습니다" ↩︎

  3. Data Link.md — "가장 단순한 형태의 흐름 제어", "전송 시간이 길어질수록 오류가 발생할 가능성이 높아져 전체 프레임을 재전송해야 할 수 있습니다" ↩︎

  4. Data Link.md — "송신자는 ACK 없이 최대 W 프레임을 보낼 수 있다", "시퀀스 번호는 필드 크기(k)에 의해 제한", "최대 윈도우 크기는 최대 2^k - 1이 된다", "풀 듀플렉스 링크가 있는 경우, ACK를 피기백할 수 있다" ↩︎

  5. Data Link.md — 오류 제어 기술 목록과 "손실된 프레임: 프레임이 도착하지 않음", "손상된 프레임: 프레임이 도착했으나 일부 비트에 오류가 있음" ↩︎

  6. Data Link.md — "ARQ의 효과는 신뢰할 수 없는 데이터 링크를 신뢰할 수 있는 것으로 바꿉니다", Stop-and-Wait/Go-back-N/Selective-reject ARQ 각 절. "수신자의 응답이 도착할 때까지 다른 데이터를 보낼 수 없습니다." (L65), "재전송을 최소화합니다.", "수신자는 충분히 큰 버퍼를 유지해야 합니다.", "송신자의 논리가 더 복잡합니다." (L89-91) ↩︎ ↩︎ ↩︎ ↩︎

  7. 출처 매핑 미확인 — "같은 트레이드오프가 TCP 재전송 정책에서도 반복된다"와 "흐름 제어·오류 제어가 실제로는 하나로 통합 구현되는 경우가 많다"는 종합은 source에 없는 Wiki 차원의 해석이다. ↩︎