NetworkTCP/HTTP시뮬레이션
HTTP와 네트워크 기초
TCP 연결, Timeout, Keep-Alive, HTTP/2 멀티플렉싱을 직접 체험합니다.
왜 알아야 하나요?
API 호출이 가끔 5초나 걸려요!
"서버는 10ms 만에 처리하는데, 클라이언트는 왜 이렇게 느린 거죠?"
원인 분석 결과...
매 요청마다 새 TCP 연결을 맺고 있었고, Connection Timeout이 5초로 설정되어 있었습니다.
네트워크를 이해하면 성능 튜닝이 가능!
Keep-Alive, 적절한 Timeout, HTTP/2 적용으로 응답 시간을 대폭 개선할 수 있습니다.
한눈에 보기: HTTP 요청 흐름
DNS 조회
도메인 → IP
TCP 연결
3-way handshake
HTTP 요청
GET/POST/...
응답 대기
Read Timeout
각 단계에서 지연이 발생할 수 있고, 적절한 Timeout 설정이 필요합니다.
핵심 개념
TCP 3-way Handshake
TCP 연결을 맺기 위한 3단계 과정
- SYN: "연결해도 될까요?"
- SYN-ACK: "네, 연결하죠!"
- ACK: "확인, 시작합니다!"
매 연결마다 ~20-50ms 오버헤드
Connection vs Read Timeout
Connection Timeout: TCP 연결 수립 대기 시간
Read Timeout: 응답 데이터 대기 시간
둘 다 너무 길면 장애 전파, 너무 짧으면 정상 요청 실패
HTTP Keep-Alive
TCP 연결을 재사용하는 기능
매번 새 연결 vs 재사용:
10개 요청 시 ~200ms → ~40ms (5배 빠름!)
HTTP/2 멀티플렉싱
하나의 연결에서 여러 요청 동시 처리
HTTP/1.1: 6개 연결 × 순차 처리
HTTP/2: 1개 연결 × 동시 처리 (스트림)
Timeout 설정 가이드
| 상황 | Connection | Read | 설명 |
|---|---|---|---|
| 내부 마이크로서비스 | 1-2초 | 3-5초 | 네트워크 빠름, 빠른 실패 필요 |
| 외부 API | 3-5초 | 10-30초 | 네트워크 불안정, 서드파티 지연 |
| 배치 작업 | 5초 | 5-10분 | 대용량 처리, 긴 작업 |
직접 체험하기
TCP Handshake, Timeout, Keep-Alive, HTTP/2를 직접 테스트해보세요.
Network 실습
TCP 연결을 맺기 위해 클라이언트와 서버가 주고받는 3단계 과정입니다. 마치 전화 연결 시 "여보세요?" → "네, 들려요!" → "네, 시작합시다!" 와 같아요.
더 알아보기
실무 체크리스트
- - HTTP Client에 Timeout 설정했는가?
- - Connection Pool 크기는 적절한가?
- - Keep-Alive 활성화되어 있는가?
- - HTTP/2 사용 가능한가?
관련 도구
- - curl -v (상세 연결 로그)
- - tcpdump (패킷 캡처)
- - Wireshark (패킷 분석)
- - Chrome DevTools Network