1KB 더 보내려다 100ms 더 기다리기

status
publish
thumbnail
date
Mar 9, 2025
slug
tcp-round-trip-time-delay
summary
TCP 통신에서 14KB와 Round Trip Time의 상관관계 알아보기
notion image
10KB인 A 파일과 15KB인 B파일, 2개가 존재한다 가정해보자.
B 파일은 A 파일보다 50% 큰 용량이기 때문에, 네트워크 상에서 파일을 받아오는 상황에서 시간이 A 파일에 비해서 50% 만큼 더 걸릴까?
TCP 네트워크 속도는 다양한 요소에 영향을 받는다. 특히, 속도를 결정하는 중요한 요소 중 하나는 전송하고자 하는 데이터의 크기를 14KB 이하로 유지하는 것이다.

14KB

왜 하필 14KB일까? 앞서서 RTT, MTU, MSS 개념을 알아야한다.

Round Trip Time

왕복 시간, Round Trip Time(RTT)은 TCP 통신에 있어서 지연의 핵심 요소다. 패킷이 송신자로부터 수신자까지 이동하고 다시 응답이 돌아오는데 걸리는 시간을 의미한다. RTT는 물리적 거리, 네트워크 장비 수, 네트워크 혼잡도 등 다양한 요소에 영향을 받는다.
TCP는 3-way handshake 과정에서 반드시 1 RTT를 소모하며, 만약 TLS를 통해 암호화를 진행한다면 TLS handshake로 인해 2 RTT가 추가된다.

MTU (Maximum Transmission Unit)

출처 https://afrozahmad.com/blog/mtu-vs-mss/
출처 https://afrozahmad.com/blog/mtu-vs-mss/
MTU는 네트워크가 전송할 수 있는 최대 패킷 크기를 의미한다. Ethernet에서는 일반적으로 1500 Bytes로 설정된다. 이 값은 네트워크 인터페이스의 물리적 특성과 프로토콜 요구사항에 따라 결정된다.

MSS (Maximum Segment Size)

MSS는 IP 헤더와 TCP 헤더를 제외한 데이터 부분의 최대 크기다. MSS는 일반적으로 MTU에서 IP 헤더(20 Bytes)와 TCP 헤더(20 Bytes)를 뺀 값인 1460 Bytes이다.

초기 윈도우 (Initial Window)

초기 윈도우 크기는 TCP 연결 설정 직후에 한 번에 전송할 수 있는 최대 데이터 크기를 결정한다. 현대 TCP 구현에서는 RFC 6928를 참고하여 초기 윈도우 크기를 최대 10 MSS로 설정한다.
즉, 14KB가 초기에 보낼 수 있는 데이터의 최대 크기란 의미가 된다.
만약 데이터가 14KB보다 크게 된다면 데이터는 여러 패킷으로 분할되며, CP Slow Start의 보낼수 있는 데이터의 양으로 정해진다.

TCP Slow Start

TCP의 혼잡 제어 방식 중 하나로 혼잡 윈도우(cwnd)를 2배씩 증가시키며, 1 RTT에서 네트워크가 수용할 수 있는 데이터 량을 조절하면서 혼잡을 피한다.
여기서 혼잡 윈도우는 위에서 말한 초기 윈도우(10 MSS)부터 시작된다.
Round Trips
TCP Capacity (KB)
Cumulative Transfer (KB)
1
14
14
2
28
42
3
56
98
4
112
210
5
224
434
6
448
882
7
896
1,778
8
1,792
3,570
9
3,584
7,154
10
7,168
14,322
위 표에서 볼 수 있듯이 RTT 횟수가 증가함에 따라 한 번의 RTT에서 교환할 수 있는 데이터 크기가 지수적으로 증가한다. 따라서 성능 최적화 관점에서는 초기 14KB 내에서 요청을 완료하는 것이 가장 효율적이다.

A 파일(10KB)과 B 파일(15KB) 예시

  • A 파일(10KB):
    • 초기 윈도우 크기(14KB) 내에 들어가므로 한 번에 전송 가능
    • 전송 과정: TCP + TLS 연결(3 RTT) + 데이터 전송(1 RTT) = 총 4 RTT
  • B 파일(15KB):
    • 초기 윈도우 크기(14KB)를 초과하므로 14KB, 1KB 분할 전송 필요
    • 전송 과정: TCP + TLS 연결(3 RTT) + 첫 데이터 전송(1 RTT) + 두 번째 데이터 전송(1 RTT) = 총 5 RTT
결국 B 파일은 A 파일보다 크기는 50% 크지만, 전송 시간은 50%가 아닌 100% 더 소요된다. 단 1KB 차이로 추가 RTT가 발생하는 상황이 벌어질 수도 있다.

결론

TCP 통신에서 파일 크기와 전송 시간 관계는 선형적이지 않다. 14KB를 기준으로 전송 패턴이 완전히 달라진다. 작은 차이가 생각보다 큰 영향을 미치는 것이다.
네트워크 최적화를 고려할 때는 단순히 "파일을 작게 만들자"가 아니라, "초기 윈도우 크기를 고려해 전략적으로 최적화하자"라는 접근이 필요한 것 같다.
 
;