TCP와 IP의 개요
- 인터넷의 중심은 TCP(전송 제어 프로토콜)와 IP(인터넷 프로토콜)로 이루어진다.
- TCP는 신뢰성을 보장하며, 데이터 전송 순서 확인, 데이터 재전송 등을 처리한다.
- TCP는 HTTP 표준의 기본 전송 프로토콜로 활용된다.
TCP의 핵심 메커니즘
3-Way 핸드셰이크:
- 연결 성립 전 클라이언트와 서버 간 초기화 절차.
- 왕복 레이턴시가 연결 성능에 영향을 미친다
느린 시작(Slow-Start):
- 새로운 연결에서 데이터 전송 속도를 점진적으로 증가시킨다.
- 초기 처리량이 제한되며, 대규모 데이터를 처리하는 경우 더 큰 영향을 미친다.
TCP Fast Open:
- 구글이 개발한 최적화 기법으로 초기 핸드셰이크 레이턴시를 줄인다.
- SYN 패킷에서 데이터 전송 가능
- HTTP 트랜잭션 속도를 약 10~40%까지 개선.
혼잡 제어(Congestion Control) vs 흐름 제어(Flow Control):
항목 | 혼잡 제어 | 흐름 제어 |
정의 | 네트워크의 혼잡 상태를 완화하고 패킷 손실을 방지하기 위한 메커니즘. | 수신자의 처리 용량을 초과하는 데이터 전송을 방지하기 위한 메커니즘. |
목적 | 네트워크 전반의 안정성을 유지하고 혼잡으로 인한 성능 저하를 줄이는 것. | 송신자가 수신자의 버퍼 용량을 초과하는 데이터를 보내지 않도록 보장. |
초점 | 네트워크의 상태에 따라 전송 속도를 조절. | 수신자의 상태에 따라 전송 속도를 조절. |
작동 원리 | - 패킷 손실을 혼잡의 신호로 판단. | - 리시브 윈도(rwnd) 를 기준으로 송신량을 조절. |
- 혼잡 윈도 크기(cwnd)를 조정하여 전송 속도 감소 및 회복. | - 송신자와 수신자가 TCP 핸드셰이크 중에 초기 리시브 윈도(rwnd) 를 설정하고, 이후 ACK 패킷을 통해 업데이트. | |
주요 알고리즘 | - 느린 시작(Slow-Start): 작은 윈도 크기로 시작해 점진적으로 증가. | - 수신자가 버퍼가 포화 상태에 가까워지면 리시브 윈도(rwnd) 를 줄여 송신자에게 알림. |
- 혼잡 회피(Congestion Avoidance): 패킷 손실 발생 시 혼잡 윈도를 줄여 네트워크 부담 감소. | - 리시브 윈도(rwnd) 가 0이면 송신자는 수신 버퍼가 비워질 때까지 대기. | |
병목 원인 | 네트워크 경로 내의 혼잡(라우터, 스위치 등)에서 발생. | 수신자의 버퍼 용량 부족으로 인해 발생. |
주요 지표 | - 혼잡 윈도(cwnd): 송신자가 전송할 수 있는 데이터의 양. | - 리시브 윈도(rwnd): 수신자가 처리할 수 있는 데이터의 양. |
주된 영향 | - 네트워크 경로에서 데이터 처리량이 줄어들거나 지연이 발생. | - 송신자가 데이터를 전송하지 못하거나 속도가 제한됨. |
활용 사례 | 네트워크 전송 속도가 다양한 상황(혼잡, 정체 등)에서 효율적으로 조절되어야 하는 경우. | 데이터 처리 용량이 한정된 IoT 기기, 모바일 기기 등에서 송신 속도를 조절해야 하는 경우. |
혼잡 회피(Congestion Avoidance)
- 패킷 손실을 피드백으로 사용하여 혼잡 윈도를 패킷 손실이 발생할 때까지 증사 시킴
- 알고리즘 종류
- TCP Tahoe and Reno (original implementations) (AIMD)
- TCP Vegas
- TCP New Reno
- TCP BIC
- TCP CUBIC (default on Linux) or Compound TCP (default on Windows)
웹 성능 최적화 방법
- 서버 설정 최적화:
- 최신 커널 업데이트 및 초기 혼잡 윈도 크기를 10으로 설정.
- 느린 시작 재시작 기능 비활성화.
- 네트워크 환경 개선:
- 서버를 사용자와 가까운 위치에 배치.
- 기존 TCP 연결을 최대한 재사용.
- 데이터 전송 최적화:
- 불필요한 데이터 전송 제거.
- 전송 데이터를 압축하여 처리량 개선.
결론
TCP는 안정적이고 신뢰할 수 있는 프로토콜로 설계되었지만, 레이턴시가 주요 병목 요인이 될 수 있다. 이를 해결하기 위해 애플리케이션 설계와 서버 설정을 최적화하는 것이 중요하다.
참고 문헌
[1] 일리아 그리고릭, "구글 엔지니어에게 듣는 네트워킹과 웹 성능 최적화 기법", 정해권, 오현주 공역, 인사이트(insight)
[2] https://docs.google.com/presentation/d/1ZgF4MQ-7BBS92Zlz3mB52APRmyoSyaXprwltw5y3VJg/edit#slide=id.p9
'Multimedia Networking' 카테고리의 다른 글
High Performance Browser Networking: Ch 04 전송계층보안(Transport Layer Security) (0) | 2025.02.12 |
---|---|
High Performance Browser Networking: Ch 03 UDP의구성요소 (0) | 2025.02.05 |
High Performance Browser Networking: Ch 01 Latency와 Bandwidth (0) | 2025.01.22 |
클라우드 게임 스트리밍: 초저지연 스트리밍 (Cloud Game Streaming: Ultra Low Latency Streaming) (0) | 2020.06.07 |
실시간 인터액티브 스트리밍 구조 (Real-time Interctive Streaming) (0) | 2020.06.01 |