HTTP는 TCP 계층 위에 존재하기 때문에, TCP 성능에 영향을 받는다.
HTTP 트랜잭션을 처리하는 시간은 TCP 커넥션을 설정하고 요청을 전송하고 응답 메시지를 보내는 시간에 비하면 상대적으로 짧다. 그래서 대부분의 지연은 TCP 네트워크 지연에 많은 영향을 받는다.
- DNS 리졸브 하는데 걸리는 시간
- TCP 커넥션 요청을 보내고 핸드쉐이크를 하는데 걸리는 시간
- 커넥션이 맺어지고 데이터를 받는 데 걸리는 시간
TCP 네트워크 지연은 하드웨어의 성능, 전송 속도, 메시지 크기, 물리적인 거리 등 다양한 요인이 존재한다. 또한 TCP 프로토콜의 기술적인 복잡성도 지연에 큰 영향을 미친다.
4.2.2 성능 관련 중요 요소
- TCP 커넥션의 핸드쉐이크 설정
- 인터넷의 혼잡을 제어하기 위한 TCP의 느린 시작 (slow-start)
- 데이터를 한데 모아 한번에 전송하기 위한 네이글(nagle) 알고리즘
- TCP의 편승(piggyback) 확인응답(ack)을 위한 지연Ack 알고리즘
- TIME-WAIT와 같은 포트 고갈
4.2.3 TCP 커넥션 핸드쉐이크 지연
4.2.4 ACK응답 지연
4.2.5 TCP 느린 시작 (slow-start)
4.2.6 네이글(Nagle) 알고리즘
4.2.7 TIME_WAIT와 포트고갈