데이터 링크 프로토콜
효과적인 데이터 통신을 위한 데이터 링크 제어의 필요성과 요구 사항
- 프레임 동기화 (Frame Synchronization):
- 데이터는 프레임(frame)이라는 블록 단위로 전송됩니다.
- 수신 측에서 각 프레임의 시작과 끝을 인식할 수 있어야 합니다.
- 흐름 제어 (Flow Control):
- 송신 측은 수신 측이 처리 가능한 속도 이상으로 프레임을 전송하지 않아야 합니다.
- 과부하를 방지하여 데이터 손실을 막습니다.
- 에러 제어 (Error Control):
- 전송 시스템에서 발생한 비트 에러를 탐지하고 수정해야 합니다.
- 데이터의 정확성과 무결성을 유지합니다.
- 주소 지정 (Addressing):
- 공유 링크에서는 송신 측과 수신 측의 정체성을 명확히 해야 합니다.
- 어떤 스테이션 간의 통신인지 지정할 수 있어야 합니다.
- 제어 정보와 데이터의 동일 링크 사용 (Control and Data on Same Link):
- 제어 정보와 데이터가 별도의 물리적 경로를 사용하는 것은 비효율적입니다.
- 따라서 수신 측은 데이터와 제어 정보를 구분할 수 있어야 합니다.
- 링크 관리 (Link Management):
- 데이터 교환의 시작, 유지, 종료 과정에서 송신기와 수신기 간의 조정 및 협력이 필요합니다.
- 이를 위해 관리 절차가 정의되어야 합니다.
흐름 제어(Flow Control)
송신 측이 수신 측을 데이터로 과부하하지 않도록 보장하는 기법,
이는 데이터 전송 과정에서 수신 측의 처리 능력을 초과하지 않게 조정하는 중요한 메커니즘
- 수신 측은 일반적으로 데이터를 전송받기 위해 최대 길이가 정해진 데이터 버퍼를 할당합니다.
- 데이터를 수신하면, 수신 측은 데이터를 상위 소프트웨어로 전달하기 전에 일정한 처리 작업을 수행해야 합니다.
- 흐름 제어가 없는 경우, 송신 측이 데이터를 계속 전송하면 수신 측의 버퍼가 가득 차거나 넘쳐서(오버플로우) 이전 데이터를 처리하는 동안 데이터 손실이 발생할 수 있습니다.
- 이 모델은 수직 시간 시퀀스 다이어그램으로, 시간 의존성과 송신-수신 관계를 명확히 보여줍니다.
- 화살표는 두 스테이션 사이에서 데이터 링크를 통해 전송되는 단일 프레임을 나타냅니다.
Stop-and-Wait Flow Control
송신 측이 큰 데이터 블록을 작은 불록으로 나누어서 여러 프레임으로 데이터를 전송하는 경우가 많음, 이때 수신 측의 버퍼 크기는 제한될 수 있음
- 전송 시간이 길어질수록 에러 발생활 가능성이 높고 이로 인해 프레임 전체를 재전송할 수 있음
- 공유 매체에서 하나의 스테이션이 매체를 장시간 점유하지 않도록 해야 하고, 그렇지 않을 경우 다른 송신 스테이션간 긴 지연이 발생 가능
- 프레임 전송 : 송신 측이 하나의 프레임을 전송합니다.
- 프레임 수신 및 처리 : 수신 측은 해당 프레임을 수신하고 처리합니다.
- 승인 메시지(ACK) 전송 : 수신 측은 다음 프레임을 받을 준비가 되었음을 알리는 승인 메시지(ACK)를 송신 측에 보냅니다.
- 승인 대기 : 송신 측은 승인 메시지를 받을 때까지 대기합니다.
- 다음 프레임 전송 : 송신 측이 승인 메시지를 받으면 다음 프레임을 전송합니다.
슬라이딩 윈도우 흐름 제어 (Sliding Windows Flow Control)
송신 측은 한 번에 여러 프레임을 전송이 가능하며 최대 w개의 프레임을 저장할 수 있는 버퍼를 가짐
이때, 송신 측은 승인(ACK) 없이 최대 W개의 프레임을 전송 가능하며 ACK에는 다음에 받을 것으로 예상되는 프레임 번호를 포함하여 송신측에 알림
- 최대 윈도우 크기 : 2^(k) -1 / 시퀀스 번호 : 필드 크기 k로 제한
에러 제어 기술
유실된 프레임 (Lost Frames) : 프레임이 수신 측에 도착하지 못하는 경우
손상된 프레임 (Damaged Frames) : 프레임이 수신 측에 도착했지만, 일부 비트가 에러로 인해 손상된 경우
{주요 에러 제어 기법}
- 에러 탐지 : 수신 측은 프레임의 에러를 탐지하고, 에러가 발생한 프레임을 폐기합니다.
- 긍정적 승인 : 수신 측이 에러 없는 프레임을 성공적으로 수신했을 때, 송신 측에 긍정적 승인(ACK) 메시지를 보냄
- 시간 초과 후 재전송 : 송신 측이 일정 시간 안에 승인(ACK)을 받지 못하면, 해당 프레임을 재전송합니다.
- 부정적 승인 및 재전송 :
- 수신 측이 에러가 있는 프레임을 발견하면, 송신 측에 부정적 승인(NACK) 메시지를 보냅니다.
- 송신 측은 NACK을 받은 프레임을 재전송합니다.
자동 반복 요청 (ARQ, Automatic Repeat Request)
ARQ의 효과는 신뢰할 수 없는 데이터 링크를 신뢰할 수 있는 데이터 링크로 변환하는 것
Stop and Wait ARQ
Stop-and-Wait 흐름 제어 기술을 기반으로 합니다.
송신 스테이션은 하나의 프레임을 전송한 후, 승인(ACK)을 기다려야 합니다.
수신 스테이션의 응답이 송신 스테이션에 도착하기 전까지는 다른 데이터 프레임을 보낼 수 없습니다.
발생할 수 있는 두 가지 에러
- 손상된 프레임:
- 도착한 프레임이 손상되었을 경우, 수신 측은 에러 탐지 기술을 사용하여 이를 감지하고 프레임을 폐기
- 이 상황을 대비해 송신 측은 타이머를 사용합니다.
- 프레임 전송 후 일정 시간 동안 ACK가 도착하지 않으면, 송신 측은 같은 프레임을 다시 전송합니다. 따라서, 송신 측은 승인(ACK)을 받을 때까지 전송된 프레임의 복사본을 유지해야 합니다.
- 손상된 승인(ACK):
- ACK가 손상되어 송신 측에서 이를 인식하지 못한 경우, 송신 측은 타이머가 만료되면 같은 프레임을 다시 전송합니다.
- 이 복제된 프레임이 수신 측에 도착하면, 수신 측은 같은 프레임을 두 번 받아들여 중복 처리를 하게 됩니다.
중복 처리 방지 방법
- 각 프레임은 번갈아 0 또는 1로 번호가 매겨집니다.
- 긍정적 승인(ACK)도 ACK0 또는 ACK1 형식으로 표시됩니다.
- ACK0: 번호가 1인 프레임을 수신했음을 확인하고, 번호가 0인 프레임을 받을 준비가 되었음을 나타냄
- ACK1: 번호가 0인 프레임을 수신했음을 확인하고, 번호가 1인 프레임을 받을 준비가 되었음을 나타냄
Go-Back-N ARQ
슬라이딩 윈도우(sliding-window)를 기반으로 합니다.
이 방식은 윈도우 크기를 사용해 확인 대기 중인 프레임의 개수를 제어합니다.
정상 동작 시
- 에러가 발생하지 않으면, 수신 측은 도착한 프레임을 정상적으로 승인합니다.
- 승인 메시지는 다음과 같은 형태로 전송됩니다:
- RR (Receive Ready): 수신 준비 상태를 나타냄.
- Piggybacked Acknowledgment: 데이터 프레임과 함께 ACK(승인) 정보를 포함시켜 전송.
에러 발생 시
- 에러 탐지: 수신 측이 프레임에서 에러를 감지하면 REJ (Reject) 메시지를 송신 측으로 보냅니다.
- 프레임 폐기:
- 수신 측은 에러가 발생한 프레임과 이후의 모든 프레임을 폐기합니다.
- 에러가 발생한 프레임이 올바르게 수신될 때까지 이후 프레임을 처리하지 않습니다.
- 재전송: 송신 측은 에러가 발생한 프레임부터 모든 이후 프레임을 다시 전송해야 합니다.
Selective-Reject ARQ
- 거부된 프레임만 재전송:
- 에러가 발생한 프레임(거부된 프레임)만 송신 측에서 재전송합니다.
- 다른 정상적인 프레임은 재전송하지 않음
- 수신 측의 처리:
- 에러 이후에 수신된 프레임은 수신 측에서 수락하여 버퍼에 저장합니다.
- 따라서 재전송된 프레임과 함께 데이터 순서가 유지됩니다.
- 재전송 최소화: 에러가 발생한 프레임만 재전송하기 때문에 불필요한 재전송을 줄이고, 효율성을 높입니다.
High Level Data Link Control (HDLC)
데이터 링크 계층에서 데이터 통신을 관리하기 위한 프로토콜로, 데이터의 프레임화, 흐름 제어, 에러 제어를 수행하며, 신뢰성 있는 데이터 전송을 보장합니다.
{3 가지 스테이션 유형}
- 주 스테이션(Primary Station):
- 링크 운영을 제어하는 역할을 담당합니다.
- 주 스테이션이 발행하는 프레임은 명령이라고 불립니다.
- 부 스테이션(Secondary Station):
- 주 스테이션의 제어 하에서 작동합니다.
- 부 스테이션이 발행하는 프레임은 응답이라고 불립니다.
- 주 스테이션은 각 부 스테이션과 개별적으로 논리적 링크를 유지합니다.
- 혼합 스테이션(Combined Station):
- 주 스테이션과 부 스테이션의 기능을 결합한 형태입니다.
- 혼합 스테이션은 명령과 응답을 모두 발행할 수 있습니다.
{2 가지 링크 구성}
- 비대칭(Unbalanced) 구성:
- 하나의 주 스테이션과 하나 이상의 부 스테이션으로 구성됩니다.
- 전이중(Full-Duplex) 및 반이중(Half-Duplex) 전송을 모두 지원합니다.
- 대칭(Balanced) 구성:
- 두 개의 혼합 스테이션으로 구성됩니다.
- 전이중 및 반이중 전송을 모두 지원합니다.
[HDLC는 3 가지 데이터 전송 모드를 정의]
1. 정상 응답 모드 (NRM: Normal Response Mode)
- 사용 환경: 비대칭 구성(Unbalanced Configuration)에서 사용됩니다.
- 특징:
- 주 스테이션이 부 스테이션으로 데이터 전송을 시작할 수 있습니다.
- 그러나 부 스테이션은 주 스테이션의 명령에 응답할 때만 데이터를 전송할 수 있습니다.
- 적용 사례: 다중 접속 라인에서 사용되며, 여러 단말이 호스트 컴퓨터에 연결된 환경에서 적합합니다.
2. 비동기 대칭 모드 (ABM: Asynchronous Balanced Mode)
- 사용 환경: 대칭 구성(Balanced Configuration)에서 사용
- 특징:
- 혼합 스테이션(Combined Station) 중 어느 쪽이든 상대방의 명시적인 허가 없이 데이터 전송을 시작할 수 있습니다.
- 가장 널리 사용되는 모드로, 전이중(Full-Duplex) 포인트 투 포인트 링크를 효율적으로 활용합니다.
3. 비동기 응답 모드 (ARM: Asynchronous Response Mode)
- 사용 환경: 비대칭 구성(Unbalanced Configuration)에서 사용됩니다.
- 특징:
- 부 스테이션이 주 스테이션의 명시적인 허가 없이 데이터 전송을 시작할 수 있습니다.
- 그러나 주 스테이션은 여전히 라인의 책임(초기화, 에러 복구, 논리적 연결 종료 등)을 유지합니다.
- 적용 사례: 부 스테이션이 데이터 전송을 시작해야 하는 특수한 상황에서만 사용됩니다.
HDLC의 플래그와 비트 삽입(Bit Stuffing)
- 플래그의 역할
- 프레임의 시작과 끝을 구분하기 위해 01111110 패턴이 사용됩니다.
- 이 패턴은 프레임 경계를 표시하며, 데이터 전송의 동기화를 돕습니다.
- 플래그는 한 프레임의 닫는 플래그이면서 동시에 다음 프레임의 여는 플래그로 사용할 수 있습니다.
문제: 데이터와 플래그 혼동 가능성
- 데이터 필드에 01111110과 동일한 패턴이 나타나면, 수신기가 이를 플래그로 착각해 동기화 오류가 발생할 수 있습니다.
해결책: 비트 삽입(Bit Stuffing)
- 송신기가 5개의 1이 연속될 때마다 0을 추가로 삽입합니다.
- 수신기는 플래그를 감지한 후 다음 규칙으로 처리합니다:
- 6번째 비트가 0이면: 삽입된 비트이므로 삭제
- 6번째가 1이고, 7번째가 0이면: 플래그로 간주
- 6번째와 7번째가 모두 1이면: 송신기가 전송 중단(Abort)을 의미
데이터 투명성(Data Transparency) : 플래그와 데이터 간 혼동을 방지하고 데이터 전송의 신뢰성을 유지합니다.
주소 필드(Address Field)
프레임을 전송한 부 스테이션(Secondary Station) 또는 프레임을 수신할 부 스테이션을 식별하기 위해 사용됩니다.
HDLC의 통신 구조에서 포인트 투 포인트(Point-to-Point) 링크에서는 필요하지 않을 수 있지만, 일관성을 유지하기 위해 항상 포함됩니다.
HDLC는 세 가지 유형의 프레임을 정의하며, 각 유형은 다른 제어 필드 형식을 가집니다.
1. 정보 프레임 (I-frames)
- 역할: 사용자 데이터를 전송하기 위한 프레임
- 특징:
- 데이터 외에도 ARQ 메커니즘을 사용해 흐름 제어 및 에러 제어 데이터를 포함합니다.
- 이러한 제어 데이터는 Piggybacking을 통해 정보 프레임에 포함됩니다.
2. 감독 프레임 (S-frames)
- 역할: Piggybacking이 사용되지 않을 때 ARQ 메커니즘을 제공합니다.
- 특징: 흐름 제어와 에러 제어를 위한 독립적인 프레임으로 작동합니다.
3. 비번호 프레임 (U-frames)
- 역할: 추가적인 링크 제어 기능을 제공합니다.
- 특징: 링크 초기화, 설정, 종료 등과 같은 보조적인 제어 작업을 수행합니다.
Control Field
Poll/Final (P/F) 비트의 사용은 문맥에 따라 달라집니다.
- 명령 프레임(Command Frames): P 비트가 1로 설정되며, 상대방 HDLC 엔터티에게 응답 요청(Poll)을 의미
- 응답 프레임(Response Frames): F 비트가 1로 설정되며, 요청받은 명령에 대한 응답 프레임임을 나타냅니다.
S-프레임과 I-프레임의 제어 필드
- 기본 제어 필드: 3비트 시퀀스 번호를 사용합니다.
- 확장 제어 필드: 적절한 모드 설정 명령을 사용하여, 7비트 시퀀스 번호를 사용하는 확장 제어 필드를 선택할 수 있습니다.
HDLC Operation
HDLC 작동 과정은 3 가지 단계로 이루어집니다.
- 초기화(Initialization):
- 한쪽에서 데이터 링크를 초기화하여 프레임이 체계적으로 교환될 수 있도록 설정합니다.
- 이 단계에서 사용할 옵션(예: 동작 모드, 시퀀스 번호 길이 등)이 합의됩니다.
- 데이터 교환(Data Exchange): 초기화 후, 두 측은 사용자 데이터와 흐름 및 에러 제어 정보를 교환합니다.
- 연결 종료(Termination): 한쪽에서 작업 종료를 신호하여 연결을 종료합니다.
'Computer Science > 데이터 통신' 카테고리의 다른 글
Chapter 09. WAN 기술과 프로토콜 (0) | 2024.11.23 |
---|---|
Chapter 08. 멀티플렉싱 (0) | 2024.11.23 |
Chapter 06. (오류 탐지 및 수정) (0) | 2024.11.23 |
데이터 통신 5주차 (신호 해석 기술) (0) | 2024.10.16 |
데이터 통신 4주차 (전송 매체) (3) | 2024.10.15 |