더북(TheBook)

이해하기 쉽도록 최대 세그먼트 길이를 100바이트라 임의로 설정했다. 호스트 B는 초기 SYN-ACK 패킷으로 응답하면서 수신 윈도 크기를 300바이트로 통지했다. 따라서 호스트 A는 100바이트짜리 세그먼트를 세 번 보내고 나면 호스트 B의 ACK를 기다려야 한다. 호스트 B가 첫 번째 ACK를 보낼 때, 버퍼에 100바이트를 저장해 놓고 프로세스가 소비하길 기다려야 되므로, 호스트 A에게 수신 윈도를 200바이트로 줄여달라고 요청한다. 호스트 A는 200바이트가 이미 전송 중인 걸 알고 있으므로 데이터를 더 보내지 않고 기다린다. 이제 호스트 A는 호스트 B가 ACK를 보낼 때까지 기다려야 한다. 호스트 B가 두 번째 ACK를 보낼 때, 버퍼의 데이터 중 50바이트가 소비되었다. 따라서 버퍼에 총 150바이트가 들어있고, 나머지 150바이트의 여유가 있다. 따라서 이번 ACK를 보낼 때는 수신 윈도가 150바이트라고 알려준다. 호스트 A가 이것을 받을 때 아직 100바이트가 전송 중이지만, 이제 수신 윈도가 150바이트가 되었으므로 추가로 50바이트 세그먼트를 호스트 B에 보낸다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.