- 데이터 링크 계층에서 두 호스트가 통신하려면 일대일 형식의 점대점 방식으로 연결해야 함
- 점대점 연결: 주소 개념 불필요
- 멀티드롭 연결: 주소 개념 필요
- 물리 계층에서 오류 제어 방식으로 재전송 기법을 사용
- 데이터 링크 계층의 주요 기능은 두 호스트 간 물리적 오류 복구
프레임의 종류
정보 프레임
- 상위 계층이 전송을 요구한 데이터를 수신 호스트에 전송하는 용도로 사용
- 순서번호, 송수신 호스트 정보 등이 포함됨
긍정 응답 프레임 (ACK 프레임)
- 전송 데이터가 올바르게 도착했음을 회신하는 용도
- 데이터를 수신한 호스트가 데이터를 송신한 호스트에게 전송
부정 응답 프레임 (NAK 프레임)
- 전송 과정에서 프레임 변형 오류가 발생했음을 회신하는 용도
- 원래의 정보 프레임을 재전송하도록 요청
- 송신 호스트는 오류가 발생한 프레임을 동일한 순서 번호로 다시 전송
오류, 흐름 제어가 없는 프로토콜
- 가정: 이상적인 통신환경
- 단방향 통신: 데이터는 송신 호스트에서 수신 호스트로만(한쪽 방향으로만) 전달
- 전송 오류 없는 물리 매체: 통신 채널에서는 전송 오류가 발생하지 않음
- 무한 개의 수신 버퍼: 수신 호스트의 버퍼 수는 무한함
- 단순 프로토콜
- 송신 호스트는 원하는 만큼 자유롭게 프레임을 전송할 수 있음
- 오류 제어 (X): 프레임 분실/변형 오류가 발생하지 않음
- 흐름 제어 (X): 수신 버퍼가 무한이므로 분실 오류 없음
오류 제어가 없는 프로토콜
- 가정: 수신 호스트의 버퍼 개수가 유한(버퍼 개수 제한)
- 단방향 통신: 데이터는 송신 호스트에서 수신 호스트로만(한쪽 방향으로만) 전달
- 전송 오류 없는 물리 매체: 통신 채널에서는 전송 오류가 발생하지 않음
- 유한 버퍼
- 송신 호스트가 프레임을 빠르게 보내면 프레임 분실
- 흐름 제어 필요
- 흐름 제어
- 수신 호스트가 송신 호스트의 전송 속도를 조절함
- 수신 호스트는 정보 프레임 수신 후 ACK 프레임 회신
- 정지-대기 프로토콜
- ACK 프레임
- 송신 호스트에 긍정 응답의 기능을 수행
- 다음 프레임을 전송하도록 지시하는 흐름 제어 기능도 수행
- 정지-대기 방식
- 수신 호스트가 회신하는 ACK 프레임이 도착해야 다음 프레임을 전송할 수 있는 프로토콜 방식
단방향 프로토콜
-
가정: 오류 제어와 흐름 제어 기능 지원
- 단방향 통신: 데이터는 송신 호스트에서 수신 호스트로만(한쪽 방향으로만) 전달
-
유한 버퍼
-
오류가 있는 채널
- 프레임 분실 및 변형 가능
- 프레임 변형 오류를 해결하기 위한 수신 호스트의 NAK 기능 필요
- 프레임 분실 오류를 해결하기 위한 송신 호스트의 타임아웃 기능 필요
-
NAK가 없는 경우
- 정보 프레임 분실: 송신 호스트의 타임아웃 기능으로 오류 복구
- ACK 프레임 분실: 송신 호스트의 타임아웃 기능으로 오류 복구
- 수신 호스트가 같은 프레임을 중복 수신하는 것을 구별할 수 없다.
- 프레임 변형 오류: 송신 호스트의 타임아웃 기능으로 오류 복구
-
NAK가 있는 경우
- 프레임 변형 오류: 수신 호스트의 NAK 프레임 응답으로 오류 복구
- 프레임 분실 오류: 송신 호스트의 타임아웃 기능으로 오류 복구
슬라이딩 윈도우 프로토콜
- 양방향 통신 지원
- 오류 제어와 흐름 제어 기능을 모두 지원
기본 절차
- 송신 호스트는 정보 프레임(전송 데이터, 순서 번호, 오류 검출 코드)을 순서 번호에 따라 순차적으로 전송함
- 정보 프레임을 수신한 수신 호스트가 응답하는 순서 번호는 정상적으로 수신한 번호가 아닌 다음에 수신하기를 기대하는 번호를 회신하는 것이 일반적임
- 송신 호스트가 관리하는 송신 윈도우는 전송은 되었지만 긍정 응답이 회신되지 않은 프레임을 보관함
- 수신 호스트가 관리하는 수신 윈도우는 프로토콜의 방식에 따라 크기가 다름
- 고백 N 방식에서는 크기가 1임
- 선택적 재전송 방식에서는 송신 윈도우 크기와 같음
흐름 제어
-
순서 번호
- 프레임 별로 부여되는 일련 번호
- 0 부터 임의의 최댓값까지 순환 방식으로 사용
- 일반적으로 순서 번호의 최댓값이 송신 윈도우 크기보다 커야 함
- 프레임에서 순서 번호의 공간 크기 = n 비트: 순서 번호의 범위는 0 ~ 2^n -1
-
송신 호스트의 윈도우 크기
- 수신 호스트로부터 긍정 응답 프레임을 받지 않고 전송할 수 있는 정보 프레임의 최대 개수
-
송신 호스트
- 프레임을 전송하고 윈도우에 보관한다.
- ACK를 받고나서 윈도우에서 제거한다.
연속형 전송
피기배킹
- 정보 프레임을 전송하면서 응답 기능까지 함께 수행, 전송 효율 높임
- 피기배킹을 사용하지 않는 경우
- 개별 정보 프레임에 대해 긍정 응답 혹은 부정 응답 프레임이 순서 번호와 함께 별도 처리
- 피기배킹을 사용하는 경우
- 정보 프레임의 표기방식은 I(i,j)로 재정의
- i는 자신이 전송하는 데이터의 순서 번호, j는 제대로 수신한 프레임의 순서 번호를 의미
HDLC 프로토콜
- 데이터 링크 프로토콜 사례
- 일대일 혹은 일대다로 연결된 환경에서 데이터의 송수신 기능 제공
- 호스트 종류
- 주국에서 전송되는 메세지를 명령이라 정의
- 종국의 회신을 응답이라 함
- 혼합국: 주국과 종국 기능을 모두 지닌 호스트
- 명령과 응답
- 명령: 주국에서 종국으로 보내는 메세지
- 응답: 종국의 회신
- HDLC 프레임 구조
- 프레임 좌우에 위치한 01111110 플래그는 프레임의 시작과 끝을 구분
- Address: 일대다 환경에서 특정 호스트를 구분, 지칭하는 목적으로 사용
- Control: 프레임의 종류를 구분
- Data: 가변 크기의 전송 데이터가 포함
- Checksum: CRC-CCITT를 생성 다항식으로 하는 오류 검출 용도로 사용
프레임 종류
- 정보 프레임
- 네트워크 계층의 데이터 전송을 위해 정의
- 3비트의 순서 번호를 이용한 슬라이딩 윈도우 프로토콜을 사용
- 순서 번호는 0~7의 순서 번호 8개를 순환하여 사용
- Seq: 정보 프레임의 송신용 순서 번호로 사용
- Next: 피기배킹을 이용한 응답 기능으로 사용
- P/F: 값이 1로 지정되었을 경우에 한하여 Poll 혹은 Final의 의미를 갖음
- Poll: 주국의 명령 프레임으로 사용될 때
- Final: 종국의 응답 프레임에서 사용될 때
- 감독 프레임
- 정보 프레임에 대한 응답 기능을 수행하는 프레임
- 긍정 응답 프레임과 부정 응답 프레임으로 구분
- Type 0: RR로 정의된 ACK
- Type 1: REJ로 정의된 NAK
- Type 2: RNR(Receive not ready)로 정의된 응답 프레임으로 흐름 제어 기능까지 제공
- Type 3: SREJ(Selective Reject)로 정의된 프레임, 선택적 재전송 방식에서 부정 응답 기능을 지원
- 비번호 프레임: 순서 번호가 없는 프레임을 정의
- 프레임 종류
- SNRM: 정규 응답 모드의 연결 설정을 요구
- SABM: 비동기 균형 모드의 연결 설정을 요구
- SARM: 비동기 응답 모드의 연결 설정을 요구
- DISC: 연결 설정 해제를 요구
- RSET: 비정상적인 프로토콜의 동작에 따른 리세 기능을 수행
- FRMR: 비정상적인 프레임의 수신을 거부
- UA: 비번호 프레임에 대한 응답 기능을 수행
- 세가지 연결 모드
- 정규 응답: 불균형 모드를 의미하기 때문에 호스트 하나는 주국으로 동작하고, 다른 하나는 종국으로 동작한다. SNRM을 이용하여 연결 설정을 요구하며, 종국에서 데이터를 전송하려면 반드시 주국의 허락을 받아야 한다.
- 비동기 균형: 두개의 호스트가 동일한 능력을 갖는 혼합국으로 동작하며, 양쪽에서 명령과 응답을 모두 전송할 수 있다. 따라서 둘 중 임의의 호스트에서 SABM을 이용한 연결 설정 요구를 수행할 수 있다.
- 비동기 응답: 불균형 모드이나 종국이 주국의 허락 없이도 데이터를 전송할 수 있는 권한을 갖는다. 즉 주국의 허가가 없어도(주국에 의한 P/F 비트의 Poll 지정이 없어도)종국에서 먼저 SARM 응답을 보낼 수 있다.
LAP 프로토콜
비동기 응답 모드인 ARM으로 동작하는 프로토콜
- 주국에서 전송된 SARM 명령: 종국에서 UA 응답을 전송함으로써 완료
- 종국에서 주국으로 SARM 응답을 전송하여 연결 설정을 요구, 종국에서 시작된 연결 설정은 3단계로 이루어지는 효과가 발생
LAPB 프로토콜
- 비동기 균형
- 양쪽 호스트가 혼합국으로 동작, 누구나 먼저 명령을 전송 가능