📦

[Network] TCP Window Size | tcpdump로 확인하기

Table of contents

TCP - Window Size

네트워크 통신 시, "현재 수신자가 받을 수 있는 데이터의 크기"를 의미 OS의 윈도우(Windows)와 전혀 상관없음
수신자의 버퍼(Buffer) 크기와 연관
TCP에서 송신자가 한 번에 보낼 수 있는 데이터의 최대 크기를 결정하는 요소
송신자는 이 값을 보고 너무 많은 데이터를 한 번에 보내지 않도록 조절

Window size값을 조절하며 송수신 속도를 최적화하는 TCP

TCP는 실시간으로 Window size값을 조정하면서 송수신 속도를 최적화한다.
1.
처음에 서버의 수신 Buffer size = 10,000 byte
2.
서버가 5,000byte를 사용하면 ? Window size = 5,000 byte로 변경
3.
서버가 데이터를 응용 프로그램에 넘겨서 처리하면, 버퍼에 공간이 생김
4.
서버는 새로운 Window size를 ACK 패킷에 포함해서 Client에게 전달
5.
Client는 이 값을 참고하여 보낼 Data size를 조절

TCP Window Size 확인방법 - tcpdump 사용

Wireshark나 tcpdump같은 패킷 캡쳐 프로그램을 사용하여 TCP 패킷의 Window size 필드를 직접 확인 할 수 있다.
아래는 WSL2(Ubuntu)에서 server 띄워놓고, tcpdump를 실행하여 loopback주소의 8080포트로 송수신되는 패킷을 캡쳐하도록 설정해둔 뒤, client server 1회 송수신한 화면이다.
tcpdump 에서는 Window size필드가 win으로 표시된다.
TCP Window size 필드 tcpdump로 확인
영상으로 기록 !
참고 : tcp_server.c & tcp_client.c 소스코드 : [Network] TCP 통신 소스코드 예제 | C언어