1. Window size
일련번호(Sequence Number)와 확인 응답 번호(Acknowledgment Number)에 대해 이야기할 때 위와 같은 예를 들었었다. 위 예시는 세그먼트 하나를 보낼 때마다 확인 응답(ACK)을 한 번 반환하는 통신이라 효율이 높지 못하다. 이렇게 매번 세그먼트를 하나 보내고 이에 대한 확인 응답을 기다리는 것보다는 세그먼트를 연속해서 수신 측의 버퍼(buffer: 세그먼트를 일시적으로 보관하는 장소)에 보낸 다음에 확인 응답을 반환하는 것이 효율이 높다.
하지만 세그먼트를 너무 많이 보내게 되면 수신 측의 버퍼가 초과되어(오버플로우) 데이터가 유실될 수 있다. 그래서 오버플로우가 발생하지 않도록 자신의 버퍼의 한계 크기를 알고 있어야 하는데 이 값이 바로 TCP 헤더의 Window size 다.
세그먼트를 보낼 때마다 확인 응답(ACK)을 기다려야 한다면 송신 효율이 좋지 않다. 때문에 세그먼트를 수신 측의 버퍼에 한꺼번에 보내고서 확인 응답을 받으면 송신 효율을 높일 수 있다. 하지만 세그먼트를 너무 많이 보낸다면 수신 측의 버퍼를 초과해(오버플로우) 데이터가 유실된다. 이 때문에 Window Size 헤더가 사용된다.Window Size는 자신의 버퍼 최대 크기이다. 3-way handshaking 시 서로의 버퍼 최대 크기를 알려주기에 상대방의 버퍼가 초과하지 않도록 세그먼트를 한꺼번에 보낸다.
- 윈도우 크기(Window Size): 송신자가 수신자로부터 일일이 확인 응답을 받지 않고 연속으로 전송할 수 있는 최대 데이터 양, 버퍼 용량의 크기
- 이 윈도우 크기의 초깃값은 3-way Handshake를 할 때 판단된다.
- 이제 상대방의 버퍼의 한계 값을 갈게 되었으니 오버플로우가 되지 않도록 세그먼트를 전송하면 된다.
- 매번 데이터를 보낼 때마다, 확인응답을 기다리지 않고 상대방의 버퍼내에서 연속해서 보낸다면 통신은 위와 같은 모습이다.
참고
책: 10일만에 배우는 네트워크 기초, 모두의 네트워크 | 미즈구치 카츠야 | 이승룡 옮김
'공부 > Network' 카테고리의 다른 글
UDP(User Datagram Protocol)란? (0) | 2024.06.26 |
---|---|
Port (포트)란? (0) | 2024.06.26 |
Sequence Number 와 Acknowledgment Number (1) | 2024.06.23 |
TCP 3-way 와 4-way Handshake (0) | 2024.06.23 |
TCP 와 TCP 헤더 (1) | 2024.06.22 |