K 개발자

슬라이딩 윈도우 프로토콜 본문

OS/네트워크

슬라이딩 윈도우 프로토콜

ddingz 2021. 7. 30. 12:37

슬라이딩 윈도우 프로토콜

실제 통신 환경에서는 프레임 전송이 대부분 양방향으로 이루어진다.
슬라이딩 윈도우 프로토콜Sliding Window Protocol은 두 호스트 간의 프레임 전송을 위한 일반적인 통신 프로토콜로, 오류 제어와 흐름 제어 기능을 함께 지원한다.

기본 절차

  1. 정보 프레임을 전송하는 송신 호스트는 보내려는 데이터뿐 아니라 프레임의 순서 번호, 오류 검출 코드 등을 프레임에 표기한 후에 정해진 순서 번호에 따라 순차적으로 송신한다.
  2. 정보 프레임을 받은 수신 호스트는 해당 프레임의 순서 번호에 근거하여 송신 호스트에 응답 프레임을 회신해야 한다. 일반적으로 응답 프레임의 내용에 포함되는 순서 번호는 정상적으로 수신한 프레임의 번호를 기재하지 않고, 다음에 수신하기를 기대하는 프레임의 번호를 표기한다. 따라서 긍정 응답 프레임에 기록된 순서 번호 이전까지의 프레임은 모두 제대로 수신했다는 의미가 된다.
  3. 송신 호스트는 송신한 정보 프레임을 자신의 내부 버퍼에 유지해야 하며, 이를 송신 윈도우라 한다. 송신 윈도우에서 대기하는 정보 프레임은 송신 호스트가 수신 호스트에 프레임을 전송을 완료했지만 아직 수신 호스트로부터 긍정 응답을 받지 못한 프레임이다.
  4. 수신 호스트는 수신한 정보 프레임을 보관하기 위해 내부 버퍼인 수신 윈도우를 유지할 수 있다. 수신 윈도우에는 개념적으로 수신을 기대하는 프레임의 순서 번호가 들어가기 때문에 프로토콜의 동작 방식에 따라 크기가 달라질 수 있다. 선택적 재전송Selective Retransmission 방식에서는 프레임의 도착이 비순서적으로 이루어져도 처리가 가능하기 때문에 수신 윈도우의 크기가 송신 윈도우의 크기와 동일하다. 그러나 고백 NGo-Back-N 방식에서는 수신 호스트가 항상 이전에 수신한 프레임의 바로 다음 프레임만 기다리기 때문에 수신 윈도우의 크기가 1이면 충분하다.

흐름 제어

슬라이딩 윈도우 프로토콜에서 슬라이딩 윈도우는 '윈도우의 이동'을 의미하며, 이는 흐름 제어 기능을 상징적으로 대변한다.
즉, 수신 호스트가 연속으로 수신할 수 있는 정보 프레임의 개수를 윈도우의 크기로 지정함으로써, 송신 호스트의 프레임 전송 속도를 제어한다.

순서 번호

정보 프레임의 내용에는 프레임별로 고유하게 부여되는 순서 번호Sequence Number라는 일련번호가 부여된다.
이 번호는 0부터 임의의 최댓값까지 정의되는데, 최댓값 이후에는 다시 0번으로 되돌아오는 순환 방식으로 할당된다.
따라서 프로토콜을 설계할 때는 현재 처리되고 있는 서로 다른 프레임에 같은 순서 번호를 부여하지 않도록 주의해야 한다.
이런 원칙에 위배되지 않으려면 기본적으로 순서 번호의 최댓값이 송신 윈도우의 크기보다는 커야 한다.

윈도우 크기

슬라이딩 윈도우 프로토콜은 원리상 흐름 제어를 지원하기 위해 제공하는 기능이다.
기본 원리는 임의의 시점에서 송신 호스트가 수신 호스트로부터 긍정 응답 프레임을 받지 않고도 전송할 수 있는 정보 프레임의 최대 개수, 즉 윈도우 크기Window Size를 규정하기 위함이다.
송신 호스트가 관리하는 송신 윈도우에 보관된 프레임은 수신 호스트에 전송되었으나 아직 긍정 응답 프레임을 받지 못한 프레임이다.


연속형 전송

정지-대기 방식의 프로토콜은 송신 윈도우의 크기가 1인 특수한 경우이다.
송신 호스트와 수신 호스트 사이의 물리적 거리 차로 인해 프레임의 전송 시간이 상대적으로 오래 걸리는 환경에서 윈도우 크기가 1이면 전송 효율이 극단적으로 떨어진다.
이를 해결하려면 윈도우 크기를 늘려 ACK 프레임을 받지 않고도 여러 정보 프레임을 연속으로 전송할 수 있어야 하는데, 이러한 방식을 연속형 전송Pipelining이라 한다.

전송된 정보 프레임에 대한 ACK 프레임의 회신이 이루어지지 않은 상태에서 다음 프레임을 전송하는 방식은 전송 오류가 발생할 가능성이 적은 환경에서는 상당히 효율적이다.
하지만 전송된 여러 정보 프레임의 일부에 오류가 발생하면 이를 해결하는 방법론에 따라서 전송 효율이 영향을 받는다.
연속형 전송 방식의 오류를 해결하는 방법에는 고백 N 방식과 선택적 재전송 방식이 있다.

고백 N 방식

고백 N

예를 들어, 윈도우의 최대 크기가 8인 환경에서 송신 호스트가 10~17번 정보 프레임을 전송하는 경우를 가정해본다.
12번 프레임에만 오류가 발생하고 나머지는 모두 오류 없이 수신되었다면 오류 복구 과정에서 오류가 발생한 12번 프레임을 포함해 이후에 전송된 모든 정보 프레임을 재전송하는 방식을 고백 NGo-Back-N 방식이라 한다.
고백 N 방식은 오류가 발생한 프레임뿐 아니라, 정상적으로 수신한 프레임까지 재전송한다는 문제점이 있다.
따라서 직관적인 관점에서 보면 매우 비효율적이라고 생각될 수 있으나, 송수신 호스트 사이의 전송 지연 등에 따라서는 효과적인 처리 방법이 될 수 있다.

선택적 재전송 방식

선택적 재전송

직관적인 관점에서 고백 N 방식의 문제점은 수신 호스트가 올바르게 수신한 정보 프레임도 오류로 처리해 재전송한다는 것이다.
이 문제점을 해결하려면 12번 정보 프레임만 재전송하고 수신 호스트가 제대로 수신한 13~17번 정보 프레임은 정상적으로 처리하여 재전송되지 않도록 해야 한다.
이처럼 오류가 발생한 프레임만 선택적으로 복구하는 방식을 선택적 재전송Selective Retransmission이라 한다.


피기배킹

정보 프레임의 구조를 적당히 조정해 재정의하면 정보 프레임을 전송하면서 응답 기능까지 함께 수행할 수 있다.
이런 방식으로 프로토콜을 작성하면 응답 프레임의 전송 횟수를 줄이는 효과가 있어 전송 효율을 높일 수 있는데, 이를 피기배킹Piggybacking이라 한다.

'OS > 네트워크' 카테고리의 다른 글

네트워크 계층의 기능  (0) 2021.07.30
HDLC 프로토콜  (0) 2021.07.30
데이터 링크 계층 프로토콜의 기초  (0) 2021.07.29
이더넷  (0) 2021.07.28
MAC 계층과 IEEE 802 시리즈  (0) 2021.07.23
Comments