6장. 데이터링크 계층
(1) 프로토콜의 기초
강의 목표
- 라우팅 기능과 주요 프로토콜 이해
연결 구성
- 점대점(point-to-point): 직접 묶여있어 받을 주소를 지칭할 필요 없음
- 멀티드롭(multi drop): 주소(address) 개념 필요
프레임 종류
-
정보 프레임
- I 프레임 (Information)
- 상위 계층이 전송 요구한 데이터를 송신하는 용도
- 순서번호, 송수신 호스트 정보 등이 포함됨
-
긍정 응답 프레임
- ACK 프레임 (Acknowledge)
- 전송 데이터가 올바르게 도착했음을 회신하는 용도
- 데이터를 수신한 호스트가 데이터를 송신한 호스트에게 전송
-
부정 응답 프레임
- NAK 프레임 (Negative Acknowledge)
- 전송 데이터가 깨져서 도착했음을 회신하는 용도
- 데이터를 수신한 호스트가 데이터를 송신한 호스트에게 전송
- 데이터를 송신한 호스트는 원래 데이터를 재전송하여 오류 복구
- 긍정 응답, 부정 응답 프레임 모두 회신하고자 하는 I 프레임 순서 번호 포함. 제대로 도착한 프레임과 오류가 발생한 프레임 판단 가능
몇 가지 프로토콜을 예시로 들어 각 상황에서 어떻게 동작하는지 알아보자.
오류, 흐름 제어가 없는 프로토콜 (단순 프로토콜)
-
가정(조건)
- 단방향 통신: 송신 호스트에서 수신 호스트 한쪽으로만 데이터 전송
- 전송 오류가 없는 물리 매체: 오류 제어 기능이 필요 없음
- 무한 개의 수신 버퍼: 흐름 제어 기능이 필요 없음
- 송신 호스트는 원하는 만큼 자유롭게 프레임을 전송할 수 있음
- 프레임 분실/변형 오류가 발생하지 않으므로 오류 제어 없음
- 수신 버퍼가 무한이므로 분실 오류 없음
- 순서번호도 불필요
- 하지만 이런 프로토콜은 현실적으로 불가능
오류 제어가 없는 프로토콜 (정지-대기 프로토콜)
-
가정(조건)
- 단방향 통신: 송신 호스트에서 수신 호스트 한쪽으로만 데이터 전송
- 전송 오류가 없는 물리 매체: 오류 제어 기능이 필요 없음
- 유한 개의 수신 버퍼: 버퍼 부족으로 프레임 분실 가능
-
정지대기(STOP-AND-WAIT)란?
- 하나의 프레임 전송 후 응답 대기
- 전송 효율이 떨어지므로 잘 사용하지 않음
- 수신 버퍼 수가 유한하므로 흐름 제어(STOP-AND-WAIT) 필요
- 이전 프레임을 잘 받았다는 긍정 응답 기능과 수신 호스트가 송신 호스트의 전송 시점을 지정하기 위한 ACK 프레임 필요 (오류 제어 개념이 아님)
- 하지만 이 응답 프레임마저 분실될 수 있어 프레임을 또 보낼 수 있기 때문에(중복 수신) 순서 번호 필요
- 가장 단순한 프로토콜
단방향 프로토콜
-
가정(조건)
- 단방향 통신: 송신 호스트에서 수신 호스트 한쪽으로만 데이터 전송
- 전송 매체 오류 발생 가능
- 버퍼 유한
- NAK가 없는 경우 1 - 정보 프레임 분실 - 주어진 시간 내 응답(ACK 또는 NAK)이 오지 않았기 때문에 분실로 인지하고 프레임 재전송 (타임아웃 기능)
- NAK가 없는 경우 2 - ACK 프레임 분실 - 수신 호스트로부터 응답이 오지 않은 경우와 동일하게 처리 - i번 프레임을 수신했다는 응답을 보냈는데 또 전송된 것으로 응답이 분실됐음을 판단하여 응답을 재전송하는 것으로 오류 극복
- NAK가 없는 경우 3 - 정보 프레임 변형 - 따라서 수신 호스트에서 응답이 나가지 않음 - 위 두 가지 케이스와 동일하게 처리
- NAK가 있는 경우 1 - 정보 프레임 변형 - 변형된 프레임을 무시하여 프레임 분실 오류와 동일하게 처리 - NAK가 없는 경우와 동일하게 처리 (타임아웃으로 재전송)
- NAK가 있는 경우 2 - 정보 프레임 변형 - NAK를 이용하여 데이터 오류 통보 - 통보 받은 송신 호스트가 데이터 재전송 - 타임아웃이 되기 전 데이터를 재전송하므로 시간이 덜 걸리므로 NAK 응답이 없는 경우보다 더 효율적 - 그러나 다른 요인에 의해 NAK를 사용하지 못하는 경우도 있음