본문 바로가기
컴퓨터 네트워크

컴퓨터 네트워크 17장 - 슬라이딩 윈도우 프로토콜 -

by ChocoPeanut 2017. 4. 22.

컴퓨터 네트워크 17

- 슬라이딩 윈도우 프로토콜 -

 

슬라이딩 윈도우 프로토콜은 두 호스트 간 데이터 전송을 위한 일반적인 통신 프로토콜로 오류 제어와 흐름 제어를 함께 지원한다. 슬라이딩 윈도우 프로토콜은 다음의 기본 절차를 따른다.


송신 호스트는 정보 프레임(전송 데이터, 순서 번호, 오류 검출 코드)을 순서 번호에 따라 순차적으로 전송한다.


정보 프레임을 수신한 수신 호스트가 응답하는 순서 번호는 정상적으로 수신한 번호가 아닌, 다음에 수신하기를 기대하는 번호를 회신하는 것을 사용한다.


송신 호스트는 송신한 정보 프레임을 자신의 내부 버퍼인 송신 윈도우를 유지해야한다. 송신 호스트가 관리하는 송신 윈도우는 전송은 되었지만 긍정 응답이 회신되지 않은 프레임을 보관한다.


수신 호스트는 수신한 정보 프레임을 보관하기 위한 내부 버퍼인 수신 윈도우를 유지해야한다. 수신 호스트가 관리하는 수신 윈도우는 프로토콜의 동작 방식에 따라 크기가 달라진다. 동작 방식으로는 선택적 재전송과 고백 N 방식이 있다.



이제 슬라이딩 윈도우 프로토콜의 흐름 제어에 대해 알아보자.


순서번호는 프레임 별로 부여되는 일련의 번호이다. 수신 호스트와 송신 호스트가 정보 프레임을 구별하기 위해서 순서번호를 사용한다. 0부터 임의의 최댓값까지 순환 방식으로 사용한다. 일반적으로 순서 번호의 최댓값이 송신 윈도우 크기보다 커야 한다. 왜냐하면 순서번호를 지정할 때 최댓값 이후에는 다시 0번으로 순서번호를 지정하기 때문에 송신 윈도우의 크기가 더 클 경우 순서번호가 겹치는 현상이 발생할 수 있다. 정지-대기 방식의 프로토콜은 정보 프레임을 하나씩 보내는 방식이므로 송신 윈도우 크기를 1만 가지고 순서번호가 필요 없을 수 있다.


윈도우 크기는 긍정 응답 프레임을 받지 않고도 연속으로 전송할 수 있는 프레임의 개수이다. 송신 윈도우에 보관된 프레임은 수신 호스트에 전송되었으나 아직 긍정 응답을 받지 못한 프레임이다. 윈도우에 포함되는 정보 프레임의 관리는 순서 번호를 기반으로 이루어지는데 낮은 순서 번호부터 처리된다.


정지-대기 프로토콜의 경우 송신 윈도우 크기가 1인 경우이다. 프레임 전송 시간이 오래 걸리는 경우 전송 효율이 극단적으로 떨어질 수 있다. 왜냐하면 하나의 프레임을 보내고 응답을 받고 그 응답이 송신 호스트로 다시 들어왔을 때 프레임을 전송할 수 있기 때문이다. 이를 보안하기 위해 연속형 전송을 지원한다.


연속형 전송ACK 프레임을 받지 않고 여러 프레임을 연속으로 전송할 수 있는 방식이다. 전송 오류 발생 가능성이 적은 환경에서는 상당히 효율적으로 작동한다. 하지만 오류 발생의 가능성이 있기 때문에 이를 처리하는 방식이 존재한다. 바로 고백 N(Go-back N) 방식과 선택적 재전송 방식이다.


고백 N 방식은 오류 복구 과정에서 오류가 발생한 프레임을 포함해 이후에 전송되는 모든 정보 프레임을 재전송하는 방식이다. 만약 10~14 번호의 프레임을 전송하였는데 12번에서 오류가 발생했다는 것을 수신 호스트가 알게 된다면 12번 이후의 13~14번까지의 모든 프레임을 버리고 11번까지의 긍정 응답을 보내고 12번에 대한 부정 응답을 보낸다. 이런 응답을 받은 송신 호스트는 12번부터 다시 재전송한다.



선택적 재전송 방식은 고백 N 방식을 보안한 방식이라고 할 수 있다. 수신 호스트가 올바르게 수신한 정보 프레임까지 버리게 되므로 이를 재전송 하지 않게 처리를 하도록 하는 방식이 선택적 재전송이다. 만약 앞의 경우와 같이 10~14번호의 프레임을 보냈는데 12번이 오류가 났다고 하자. 그러면 수신 호스트는 해당 11번까지의 긍정 응답과 12번의 부정 응답을 송신 호스트에 보내게 된다. 그러면 송신 호스트는 12번에 대한 프레임을 재전송한다. 그러면 수신 호스트는 14번까지 제대로 왔다는 긍정 응답을 송신 호스트에 보내게 된다. 그러면 송신 호스트는 13번부터 프레임을 보내는 것이 아니라 15번부터 새로운 프레임을 보내게 된다.



피기배킹이라는 용어가 있다. 우리는 앞에서 살펴본 방식은 양방향 전송 기능에 대해 설명을 하지 못하였다. 피기배킹은 양방향으로 동시에 정보 프레임과 응답 프레임을 교차하여 전송하는 경우를 사용하는 방식이다. 정보 프레임과 응답 프레임을 각각 보내는 것이 아니라 정보 프레임을 전송하면서 응답 기능까지 동시에 수행하도록 프레임 구조를 변형시킨 것이다. 이렇게 되면 응답 프레임의 전송 횟수를 줄이는 효과가 있어 전송 효율을 높일 수 있다.