1. 슬라이딩 윈도우 방식 = 연속적 ARQ(Continuous ARQ) = Go Back n ARQ
ㅇ 흐름제어를 위한 검출후 재전송 방식(ARQ)의 일종 (혼잡제어도 가능)
- 일정한 윈도우 크기 이내에서 한번에 여러 패킷을 송신하고,
- 이들 패킷에 대하여 단지 한 번의 ACK 로써 수신 확인을 하며,
- 윈도우 크기를 변경시키며 흐름제어(혼잡제어도 가능)를 하는 기법
ㅇ 슬라이딩 윈도우 방식 주요 용도
- TCP, HDLC, 패킷교환(X.25) 등에 널리 이용
2. 슬라이딩 윈도우 동작상 주요 요소
ㅇ 윈도우 구조
- 송신기,수신기 모두에 유사한 윈도우 구조를 유지할 필요 있음
. 여기서, 가장 중요한 변수는 버퍼의 여유 용량(윈도우 크기)임
ㅇ 윈도우 크기 (Window Size)
- 한번에 전송할 수 있는 최대 프레임 크기(통상, `바이트 갯수` N)를 의미
- 수신 윈도우 크기 (rwnd, Receiving Window) : 수신 버퍼의 여유 용량
. 수신 윈도우 크기로써 수신측에 의해 결정되어 송신측에 통보됨
.. 아직 확인응답되지 않았으나, 송신할 패킷 덩어리 크기
- 혼잡 윈도우 크기 (cwnd, Congestion Window) : 혼잡 미유발 한계 용량
. 네트워크 혼잡을 초래하지 않도록 송신율을 제한하는 (송신) 윈도우 크기
ㅇ 윈도우 크기 알림 (Window Advertizement, Window Update) 기능
- 수신측에서 송신측에게 얼마나 큰 윈도우 크기를 유지해야 하는지를 알려주는 것
ㅇ 윈도우 이동
- 윈도우 시작 위치 (n)
3. TCP 슬라이딩 윈도우 구현 요소
ㅇ TCP 헤더 내 3개 필드(순서번호,승인번호,윈도우 크기)로 구현
- 통상, 송신측 TCP는 수백 바이트씩 모아 세그먼트 단위로 나누고,
윈도우 크기 내에서 1 이상의 세그먼트들을 연속 송신하고는,
한번의 확인응답을 받게 됨
ㅇ 주요 변수 관리
- 윈도우 시작 위치에 대한 변수 관리
. 송신측 : `순서번호`로써 관리
. 수신측 : `승인번호(확인응답번호)`로써 관리
- 윈도우 크기
. 윈도우 크기는 흐름제어/혼잡제어를 수행하는 수단
.. 윈도우 크기를 늘리거나 감소시킴으로써, 흐름제어/혼잡제어 수행
. 윈도우 크기 상한
.. TCP에서는 윈도우 크기를 TCP 최대 세그먼트 크기(MSS) 보다 크게 할 수 없음
. 실제 윈도우 크기
.. 실제 송신 윈도우 크기 = min ( cwnd, rwnd )
.. 즉, cwnd 및 rwnd 중 작은 값을 취함
. 흐름제어 (수신측이 주도적으로 rwnd 값 결정)
.. 수신측은 송신측에게 자신의 가능한 수신 버퍼 상태(rwnd)를 알리는 방법
.. 수신측은 ACK(확인응답)을 보내면서 현재의 수신 윈도우 크기를 함께 보내게됨
. 혼잡제어 (네트워크 혼잡 상황에 따라 cwnd 값 결정) ☞ TCP 혼잡제어 참조