습관처럼

Network - TCP (Transmission Control Protocol) 슬라이딩 윈도우(Sliding window) 본문

CS/Network

Network - TCP (Transmission Control Protocol) 슬라이딩 윈도우(Sliding window)

dev.wookii 2020. 2. 29. 15:52

슬라이딩 윈도우(Sliding window)

두 개의 네트워크 호스트간, 패킷의 흐름을 제어하기 위한 방법이다.

( 발신지에서 목적지의 처리 속도를 초과하지 않기 위해 데이터의 흐름을 조절 )

 

TCP와 같이 데이터의 전달을 보증하는 프로토콜에서는 패킷 하나하나가 전달되었음을 확인 신호(acknowledgement)받아야 하며, 만약 패킷이 중도에 잘못되었거나 분실되어 확인 받지 못하는 경우, 해당 패킷을 재전송해야 하는 필요가 있다.

 

여기서 말하는 윈도(window)는 메모리 버퍼의 일정 영역을 뜻한다.

슬라이딩 윈도(Sliding window)라고 하는 이유는 "데이터가 전송되고 확인응답이 수신될 때마다 윈도의 범위를 이동시키기 때문"이다.

 

Stop-and-wait 방식을 사용했을 때는 ACK 를 받고나서 다음 프레임을 전송하므로 비효율적인 면에 비해 슬라이딩 윈도우는 전송측이 전송한 프레임에 대한 ACK 프레임의 확인을 받지 않고도 여러 패킷을 보내는 것을 가능하게 하기 때문에 Stop-and-wait 방식보다 훨신 효율 적이라고 볼 수 있습니다.

슬라이딩 윈도우 데이터 송신 과 승인 방식

[송신 측]

 

•전송 카테고리 1 : 전송했고 승인받음.
•전송 카테고리 2 : 전송 했지만 아직 승인을 받지 못함.
•전송 카테고리 3 : 수신자는 준비됐지만 아직 전송하지 못한 바이트.
•전송 카테고리 4 : 수신자가 준비되지 않았고 전송하지도 못한 바이트.

 

송신( SND)과 수신(RCV)포인터

•송신 비확인(SND,UNA) - 송신 했지만 아직 승인되지 않는 첫 번째 데이터의 순서번호. - 전송카테고리 2의 첫 번째 바이트를 가리킨다. - 앞의 순서 번호는 모두 전송 카테고리 1에 속한다.

 

송신 다음(SND.NXT)
•다른 장비에게 보내야 할 다음 바이트의 순서번호이다.
•전송 카테고리 3번의 첫 번째 바이트를 가리킨다.


송신 윈도우(SND.WND)
•송신 윈도우 크기이다.
•승인 없이 보낼 수 있는 총 바이트 수. 

 

[수신 측]

•수신 카테고리 1 +2 : 수신했고 승인 받음.
•수신 카테고리 3 : 수신자는 준비됐지만 아직 수신하지 못한 바이트
•수신 카테고리 4 : 수신자가 준비되지 않았고 수신하지도 못한 바이트

 

수신 윈도우(RCV.NXT)
•상태 장비에서 받으려고 하는 데이터의 다음 바이트의 순서 번호.

•수신 카테고리 3의 첫 번째 바이트를 가리킨다.


수신 윈도우(RCV.WND)
•상대 장비에게 광고한 수신 윈도우의 크기.

TCP 슬라이딩 윈도우 예

 

출처: https://m.blog.naver.com/gaegurijump/110188012832