이전 글을 보고 오시면 이해하기 편합니다! (이전글 보고 오기)
데이터 링크 계층에서 두 호스트가 통신하려면 일대일(1:1)형식의 점대점 방식으로 연결되어야 함
- 점대점 연걸 : 주소 개념 불필요
- 멀티드롭 연결 : 주소 개념 필요
- 물리 계층에서 오류 제어 방식으로 재전송 기법을 사용
데이터 링크 프로토콜이란?
데이터 링크 계층의 구현에 사용되는 규격들의 집합.
프레임의 종류
- 정보 프레임 (I 프레임)
: 상위 계층이 전송을 요구한 데이터를 수신 호스트에 전송하는 용도로 사용
: 순서번호, 송수신 호스트 정보 등이 포함됨
- 긍정 응답 프레임 (ACK 프레임)
: 전송 데이터가 올바르게 도착했음을 회신하는 용도
: 데이터를 수신한 호스트가 데이터를 송신한 호스트에게 전송
- 부정 응답 프레임 (NAK 프레임)
: 전송 과정에서 프레임 변형 오류가 발생했음을 회신하는 용도
: 원래의 정보 프레임을 재전송하도록 요청
: 송신 호스트는 오류가 발생한 프레임을 동일한 순서 번호로 다시 전송
오류, 흐름 제어가 없는 프로토콜
- 가정 : 가장 이상적인 통신환경
: 단방향 통신 - 데이터는 송신 호스트에서 수신 호스트로만 전달
: 전송 오류 없는 물리 매체 : 통신 채널에서는 전송 오류가 발생하지 않음
: 무한 개의 수신 버퍼 : 수신 호스트의 버퍼 수는 무한함
단순 프로토콜
- 송신 호스트는 원하는 만큼 자유롭게 프레임을 전송할 수 있음
- 오류 제어 : 프레임 분실/변형 오류가 발생하지 않음
- 흐름 제어 : 수신 버퍼가 무한이므로 분실 오류 없음
- 가정 : 수신 호스트의 버퍼 개수가 유한
: 단방향 통신 - 데이터는 송신 호스트에서 수신 호스트로만 전달
: 전송 오류가 없는 물리 매체 - 통신 채널에서는 전송 오류가 발생하지 않음
정지 - 대기 프로토콜
수신 호스트 버퍼 개수가 유한할 경우, 흐름 제어 기능으로 송신 호스트의 전송 속도를 조절함
ACK 프레임
- 송신 호스트에 긍정 응답의 기능을 수행, 다음 프레임을 전송하도록 지시하는 흐름 제어 기능도 수행
정지 - 대기 방식
수신 호스트가 회신하는 ACK 프레임이 도착해야 다음 프레임을 전송할 수 있는 프로토콜 방식
단방향 프로토콜
- 가정 : 오류 제어와 흐름 제어 기능 지원
: 단방향 통신 - 데이터는 송신 호스트에서 수신 호스트로만 전달
- 오류 제어와 흐름 제어가 모두 필요
- 프레임 변형 오류를 해결하기 위한 수신 호스트의 NAK 기능 필요
- 프레임 분실 오류를 해결하기 위한 송신 호스트의 TimeOut 기능 필요
슬라이딩 윈도우 프로토콜
- 실제 환경에서는 대부분 양방향 통신이 이루어지며, 오류 제어와 흐름 제어 기능을 모두 지원한다.
기본적인 절차
- 송신 호스트는 정보 프레임(전송 데이터, 순서 번호, 오류 검출 코드)을 순서 번호에 따라 순차적으로 전송함
- 정보 프레임을 수신한 호스트가 응답하는 순서 번호는 수신한 번호가 아니라 다음에 수신하기를 기대하는 번호를 회신하는 것이 일반적이다.
- 송신 호스트가 관리하는 송신 윈도우는 전송이 되었지만, 긍정 응답이 회신되지 않은 프레임을 보관함
- 수신 호스트가 관리하는 수신 윈도우는 프로토콜의 방식에 따라 다름
흐름제어
- 순서 번호
: 프레임 별로 부여되는 일련 번호
: 0부터 임의의 최댓값까지 순환 방식으로 사용
: 일반적으로 순서 번호 최댓값이 송신 윈도우 크기보다 커야 함
: 프레임에서 순서 번호의 공간의 크기 = n비트
- 윈도우 크기
: 수신 호스트로부터 긍정응답 프레임을 받지 않고 전송할 수 있는 정보 프레임의 최대 개수
수신 윈도우 : TCP 연결에서 수신 버퍼 역할을 한다.
송신 윈도우 : 고정값이 아니라 네트워크 환경에 따라 동적으로 크기가 조절된다.
Min(혼잡 윈도우, 수신 윈도우 여유 크기)
연속형 전송
- 정지-대기 프로토콜은 송신 윈도우 크기가 1인 경우
- 연속형 전송 : ACK 프레임을 받지 않고 여러 프레임을 연속 전송
: 장점 - 오류 가능성이 적은 환경에서 효율적
- 오류 해결 방법
: 고백 N 방식 : 오류가 발생한 프레임 이후의 모든 프레임을 재전송
: 선택적 재전송 - 오류가 발생한 프레임만 재전송
수신창의 크기는 항상 1이다.
송신창의 크기는 2^m보다 작아야 한다.
ACK 누락
데이터 누락
선택적 재전송
오류가 발생한 프레임만 선택적으로 복구하는 방식
17번까지 받았는데 중간에 ACK(12) -> 11번까지는 정상이고 12번 보내라고 했는데 NAK(12) 12번이 오류가 났다는 부정응답이 돌아왔다. 이러면 우선 오류가 난 12번을 다시 보내고 보관하고 있던 13~17를 오류 검사를 해줘서 ACK(18) 17번까지 정상이라는 응답이 돌아오면 다시 프레임 전송을 시작합니다.
피기배깅
피기배깅은 정보 프레임을 전송하면서 응답 기능까지 함께 수행, 전송 효율을 높임
정보 프레임의 표기 방식을 I(i,j)로 재정의
i는 자신이 전송하는 데이터의 순서 번호, j는 제대로 수신한 프레임의 순서 번호를 의미
폴링
Polling은 여론조사라는 의미의 영어다.
여론조사처럼 폴링은 주 호스트가 종 호스트에게 전송할 데이터가 있는지 물어보고 다닌다.
이때 대상 호스트가 보낼 데이터가 없으면 호스트에 없음을 알린다.
이를 수신한 호스트는 다음 호스트에게 폴링을 수행한다.
전송할 데이터가 있을 경우, 주 호스트는 해당 호스트에게 점유권을 부여한다.
점유권을 부여받은 터미널은 송신하고자 하는 데이터를 전송한다.
셀렉션
셀렉션은 주 호스트가 종 호스트에게 보낼 데이터가 있는 경우에 수행한다.
주 호스트는 전송할 데이터의 목적지를 선택, 수신 준비를 하라는 데이터를 전달
수신 준비가 완료 됐다는 응답을 받으면, 주 호스트는 실제 데이터를 전송하기 시작한다.