약식 프로토콜에서는 프레임 전송이 한쪽 방향으로만 이루어진다고 가정했지만, 실제 통신 환경에서는 대부분 양방향으로 이루어진다. 슬라이딩 윈도우 프로토콜은 두 호스트 간의 프레임 전송을 위한 일반적인 통신 프로토콜로, 오류 제어와 흐름 제어 기능을 함께 지원한다.
슬라이딩 윈도우 프로토콜의 원리는 현재 대부분 통신 프로토콜에서 사용하는 방식으로 기본 절차를 따른다.
- 정보 프레임을 전송하는 송신 호스트는 보내려는 데이터 뿐 아니라 프레임의 순서 번호, 오류 검출 코드 등을 프레임에 표기한 후에 정해진 순서 번호에 따라 순차적으로 송신한다.
- 정보 프레임을 받은 수신 호스트는 해당 프레임의 순서 번호에 근거하며 송신 호스트에 응답 프레임을 회신해야 한다. 일반적으로 응답 프레임의 내용에 포함되는 순서 번호는 정상적으로 수신한 프레임의 번호를 기재하지 않고, 다음에 수신하기를 기대하는 프레임의 번호를 표기한다. 따라서 긍정 응답 프레임에 기록된 순서 번호 이전까지의 프레임은 모두 제대로 수신했다는 의미가 된다.
- 송신 호스트는 송신한 정보 프레임을 자신의 내부 버퍼에 유지해야 하며, 이를 송신 윈도우라 한다. 송신 윈도우에서 대기하는 정보 프레임은 송신 호스트가 수신 호스트에 프레임 전송을 완료했지만 아직 수신 호스트로부터 긍정 응답을 받지 못한 프레임이다.
- 수신 호스트는 수신한 정보 프레임을 보관하기 위해 내부 버퍼인 수신 윈도우를 유지할 수 있다. 수신 윈도우에는 개념적으로 수신을 기대하는 프레임의 순서 번호가 들어가기 때문에 프로토콜의 동작 방식에 따라 크기가 달라질 수 있다. 선택적 재전송 방식에서는 프레임의 도착이 비순서적으로 이루어져도 처리가 가능하기 때문에 수신 호스트가 항상 이전에 수신한 프레임이 바로 다음 프레임만을 기다리기 때문에 수신 윈도우의 크기가 1이면 충분하다.
흐름제어
슬라이딩 윈도우 프로토콜에서 슬라이딩 윈도우는 '윈도우의 이동'을 의미하며, 이는 흐름제어 기능을 상징적으로 대변한다. 즉, 수신 호스트가 연속으로 수신할 수 있는 정보 프레임의 개수를 윈도우의 크기로 지정함으로써 송신 호스트의 프레임 전송 속도를 제어한다.
순서번호
정보 프레임의 내용에는 프레임별로 고유하게 부여되는 순서번호라는 일련번호가 부여된다. 이 번호는 0부터 임의의 최대값까지 정의되는데 최대값 이후에는 다시 0번으로 되돌아오는 순환 방식으로 할당된다. 따라서 프로토콜을 설계할 때는 현재 처리되고 있는 서로 다른 프레임에 같은 순서 번호를 부여하지 않도록 주의해야 한다. 이런 원칙에 위배되지 않으려면 기본적으로 순서 번호의 최대값이 송신 윈도우의 크기보다는 커야 한다.
정보 프레임의 내용에는 순서 번호를 위한 공간이 확보되어 있는데, 할당된 공간의 크기가 n비트라고 가정하면 프로토콜에서 사용할 수 잇는 순서 번호의 번위는 0~2^n-1이다. 정지 - 대기 방식의 프로토콜은 슬라이딩 윈도우 프로토콜에서 가장 기본이 되는 n값이 1인 경우이다.
윈도우 크기
슬라이딩 윈도우 프로토콜은 원리상 흐름 제어를 지원하기 위해 제공하는 기능이다. 기본 원리는 임의의 시점에서 송신 호스트가 수신 호스트로부터 긍정 응답 프레임을 받지 않고도 전송할 수 있는 정보 프레임의 최대 개수, 즉 윈도우 크기를 구정하기 위함이다. 송신 호스트가 관리하는 송신 윈도우에 보관된 프레임은 수신 호스트에 전송되었으나 아직 긍정 응답 프레임을 받지 못한 프레임이다.
윈도우에 포함된 정보 프레임의 관리는 순서 번호를 기반으로 이루어지는데, 이들 순서 번호의 묶음이 결과적으로 윈도우가 된다. 송신 윈도우에 보관된 프레임은 낮은 순서부터 차례로 처리된다. 즉, 긍정 응답 프레임이 회신되고 오류 없이 수신 호스트에 전달되었음을 확인함에 따라 윈도우에 새로 추가될 정보 프레임의 순서 번호도 순차적으로 높은 번호로 이동한다.
송신 윈도우 프로토콜의 동작 과정 (송신 윈도우 크기 = 3)
수신 호스트로부터 0번에 대한 ACK 프레임이 돌아오면 프레임 처리가 완료된 것이기 때문에 송신 윈도우에는 1번과 2번 프레임만 존재한다. 윈도우의 최대 크기가 3이므로 3번 프레임을 전송할 수 있다.
1번 프레임에 대한 ACK 프레임이 도착하면 d의 이미지와 같이 되고, e 처럼 4번 프레임까지 전송할 수 있다. f는 2번과 3번 프레임에 대한 ACK 프레임이 도착한 직후이다. 5번과 6번의 정보 프레임을 전송할 수 있다. 그림에서 순서 번호의 최대 값을 9라고 가정하면 9번 프레임 다음에 전송되는 프레임은 순서번호 0번이 된다.
송신 호스트와 수신 호스트가 정보 프레임과 응답 프레임을 전송하는 과정이 직관적으로 표기되어 이해하기 쉽다.
연속형 전송
정지-대기 방식의 프로토콜은 송신 윈도우의 크기가 1인 특수한 경우이다. 송신 호스트와 수신 호스트 사이의 물리적인 거리 차로 인해 프레임의 전송 시간이 상대적으로 오래 걸리는 환경에서 윈도우 크기가 1이면 전송 효율이 극단적으로 떨어진다.
이를 해결하려면 윈도우 크기를 늘려 ACK 프레임을 받지 않고도 여러 정보 프레임을 연속으로 전송할 수 있어야 하는데, 이러한 방식을 연속적 전송이라 한다.
전송된 정보 프레임에 대한 ACK 프레임의 회신이 이루어지지 않은 상태에서 다음 프레임을 전송하는 방식은 전송 오류가 발생할 가능성이 적은 환경에서는 상당히 효율적이다. 하지만 전송된 여러 정보 프레임의 일부 오류가 발생하면 이를 해결하는 방법론에 따라서 전송 효율이 영향을 받는다.
연속적 전송 방식의 오류를 해결하는 방법
고백N 방식과 선택적 재전송 방식이 있다.
예를들어 윈도우의 최대 크기가 8인 환경에서 송신 호스트가 10~17번 정보 프레임을 전송하는 경우를 가정하면, 12번 프레임에만 오류가 발생하고 나머지는 모두 오류 없이 수신되었다면 논리적인 측면에서 볼 때 12번 프레임에 대한 오류 복구 과정만 수행하면 된다.
고백 N(Go-Back-N)방식
오류 복구 과정에서 오류가 발생한 12번 프레임을 포함해 이후에 전송된 모든 정보 프레임을 재전송 하는 방식을 고백N 방식이라 한다.
고백 N 방식은 오류가 발생한 프레임 뿐 아니라, 정상적으로 수신한 프레임까지 재전송한다는 문제점이 있다. 따라서 직관적인 관점에서 보면 매우 비효율적이라고 생각될 수 있으나, 송수신 호스트 사이의 전송 지연 등에 따라서는 효과적인 처리방법이 될 수 있다.
부정 응답 기능을 수행하는 NAK 프레임이 전송되는 원인을 두 가지로 나누어 생각해볼 수 있다. 하나는 12번 정보 프레임이 수신 호스트에 도착하였으나 내용이 변질된 경우이고, 다른 하나는 12번 프레임이 도착하지 않은 경우이다. 12번 프레임이 도착하지 않은 경우를 보면 수신 호스트에 10번과 11번 프레임이 도착한 후에 13번 14번 15번 순으로 프레임이 도착한다. 그러면 수신 호스트는 중간의 12번 프레임을 분실했음을 인지하여 NAK 프레임을 전송할 수 있다.
만일 프로토콜에서 NAK 프레임을 사용하지 않고 ACK 프레임만으로 프로토콜을 작성한다면 송신 호스트가 12번 전송 프레임의 긍정 응답 프레임을 받을 수 없으므로 타임아웃 과정에 의해 12번 프레임부터 다시 전송해야 한다.
수신 호스트가 전송한 ACK (17)프레임은 17번 프레임이 제대로 도착했다는 의미가 아니고, 17번 프레임을 포함하여 이전의 프레임이 모두 제대로 처리되었음을 나타낸다. 프레임의 전송 순서도는 형태가 다를 수 있다.
선택적 재전송 방식
직관적인 관점에서 고백 N 방식의 문제점은 수신 호스트가 올바르게 수신한 정보 프레임도 오류로 처리해 재전송 한다는 것이다. 이 문제점을 해결하려면 12번 정보 프레임만 재전송하고 수신 호스트가 제대로 수신한 13~17번 정보 프레임은 정상적으로 처리하여 재전송되지 않도록 해야 한다. 오류가 발생한 프레임만 선택적으로 복구하는 방식을 선택적 재전송이라 한다.
부정 응답 프레임을 사용해 오류가 발생한 정보 프레임을 처리하는 경우 수신 호스트가 NAK(12)프레임을 전송한 후에는 I(12)번 프레임 처리를 완료할 때 까지 다음 정보 프레임에 대한 긍정 응답 프레임을 전송하지 않도록 주의해야 한다.
프로토콜에서 NAK 프레임이 정의되지 않으면 그 처리 과정이 약간 달라질 수 있다. NAK 프레임이 없는 경우의 기본 동작 원리는 제대로 전달된 모든 정보 프레임에 대해 수신 호스트가 개별적으로 ACK 프레임을 전송해야 한다는 것이다.
고백N방식과 선택적 재전송 방식의 차이는 수신 윈도우 크기의 차이로도 설명할 수 있다. 고백 N 방식에서는 수신 호스트가 임의의 앞선 순서 번호를 갖는 정보 프레임이 처리될 때 까지 다음 정보 프레임을 모두 버리는 방식으로 처리된다. 따라서 수신 윈도우에는 현재 처리중인 프레임 한 개만 존재하므로 수신 윈도우의 크기가 1이라 할 수 있다.
선택적 재전송 방식은 앞선 정보 프레임에 대한 처리가 이루어지지 않았어도 오류 없이 수신된 모든 정보 프레임을 수신 윈도우에 보관하기 때문에 수신 윈도우의 크기가 송신 윈도우의 크기와 같다고 볼 수 있다.
선택적 재전송 방식에서는 프레임의 도착 순서가 송신 순서와 일치하지 않을 수 있다.
피기배킹
양방향의 전송 기능을 갖춘 채널 방식에서는 송신 호스트와 수신 호스트의 구분 없이, 양방향으로 동시에 정보 프레임과 응답 프레임을 교차하여 전송할 수 있다. 이 때 ACK와 NAK 프레임으로 구성된 응답 프레임의 목적은 상대방이 다음에 전송할 프레임을 지정하기 위함이므로 반드시 응답 프레임만 사용해 응답 기능을 수행해야 하는 것은 아니다.
정보 프레임의 구조를 적당히 조정해 재정의하면 정보 프레임을 전송하면서 응답 기능까지 함께 수행할 수 있다. 이런 방식으로 프로토콜을 작성하면 응답 프레임의 전송 횟수를 줄이는 효과가 있어 전송 효율을 높일 수 있는데, 이를 피기배킹이라 한다.
프로토콜의 동작 과정에서 정보 프레임의 내용에는 전송할 데이터와 해당 데이터에 대한 순서 번호가 포함되고, 응답 프레임의 내용에는 다음에 수신할 정보 프레임의 순서 번호가 포함되었다. 피기배킹을 지원하려면 정보 프레임의 구조를 확장해 두 종류의 순서 번호를 모두 표기해야 한다. 즉, 피기배킹 프로토콜에는 전송할 데이터와 해당 데이터의 순서번호는 물론이고, 현재까지 제대로 수신한 프레임의 순서 번호까지 포함된다. 이렇게 함으로써 정보 프레임의 전송과 프레임의 회신을 한번에 처리할 수 있다.
피기배킹을 사용하지 않은 경우는 왼쪽에서 0번과 1번 정보 프레임을 전송하고, 오른쪽에서도 0번과 1번의 순서대로 정보 프레임을 전송하는 경우를 가정한다. 개별 정보 프레임에 대해 긍정 응답 혹은 부정 응답 프레임이 순서 번호와 함께 별도로 처리되고 있다.
피기배킹을 사용하면 더 효과적으로 개선하여 전송할 수 있다. 정보 프레임의 표기 방식은 I(i,j)로 재정의 되었다. 이때 첫 번째 순서 번호 i는 자신이 전송하는 데이터의 순서 번호를 의미하고, j는 제대로 수신한 프레임의 순서 번호를 의미한다.
응답 프레임을 전송할 시점에서 전송할 정보 프레임이 있으면 피기배킹 기능을 사용할 수 있지만, 정보 프레임이 없으면 응답 프레임만 전송해야 한다. 그러나 현재는 정보 프레임이 없지만 잠시 후에 전송할 정보 프레임이 생길 가능성이 있다면 응답 프레임의 회신을 잠시 늦춰 피기배킹 방식으로 전송할 수 있다. 이 때는 얼마나 기다리게 할 것인가가 시스템의 성능에 영향을 준다.
Reference
쉽게 배우는 데이터 통신과 컴퓨터 네트워크
'CS > Network' 카테고리의 다른 글
[Chapter 7] IP 프로토콜(연결형 서비스와 비연결형 서비스) (0) | 2025.02.13 |
---|---|
[Chapter 6] 데이터 링크 계층(HDLC 프로토콜) (0) | 2025.02.13 |
[Chapter 6] 데이터 링크 계층(프레임의 종류) (0) | 2025.02.12 |
[Chapter 5] MAC 계층(토큰 링) (0) | 2025.02.11 |
[Chapter 5] MAC 계층(토큰 버스) (0) | 2025.02.11 |