
HTTP 통신은 패킷 교환 네트워크 프로토콜들의 계층화된 집합인 TCP/IP를 통해 이루어진다.
www.example.com을 입력하면 아래와 같은 과정이 이루어진다.
TCP는 충돌 없이 순서에 맞게 HTTP 데이터를 전달한다.

TCP는 IP 패킷(or IP 데이터그램)이라고 불리는 작은 조각을 통해 데이터를 전송한다.

컴퓨터는 여러개의 TCP 커넥션을 가질 수 있고, TCP 커넥션은 네 가지 값으로 식별한다.
<발신지 IP, 발신 port, 수신지 IP, 수신 port>
서로 다른 두 개의 커넥션은 구성 요소가 일부 같을 수는 있으나 모두 같은 수는 없다.

HTTP는 TCP 바로 위에 있는 계층이기 때문에 HTTP 트랜잭션의 성능은 바로 아래 계층인 TCP 성능에 영향을 받는다.

트랜잭션을 처리하는 시간은 다른 작업에 비하면 상당히 짧다. 클라이언트나 서버가 너무 많은 데이터를 내려받거나 복잡하고 동적인 자원들을 실행하지 않는 한 대부분의 HTTP 지연은 TCP 네트워크 지연 때문에 발생한다.

TCP 네트워크 지연은
에 따라 크게 달라진다. 또한 TCP 프로토콜의 기술적인 복잡성도 지연에 영향을 끼친다.

큰 데이터를 주고받지 않는 평범한 경우에느 SYN/SYN+ACK 핸드셰이크를 구성하는데 시간을 소비함으로써 지연을 발생시킨다.
TCP의 느린 시작(Slow Start)은 TCP의 혼잡 제어(congestion control) 메커니즘 중 하나로, 데이터 전송의 시작 단계에서 트래픽을 조절하는 방법이다.
데이터 전송이 시작될 때, TCP는 처음에는 송신할 수 있는 최대 세그먼트 크기의 절반만을 사용하여 시작합니다. 이후 각 라운드(라운드 트립 타임, Round Trip Time, RTT)마다 성공적으로 전송된 세그먼트의 수를 확인하고, 이를 기반으로 세그먼트 크기를 늘려가며 전송 속도를 증가시킨다.
이 혼잡 제어 기능 때문에, 새로운 커넥션은 이미 어느 정도 데이터를 주고받은 '튜닝'된 커넥션보다 느리다. '튜닝'된 커넥션은 더 빠르기 때문에 이미 존재하는 커넥션을 재사용하는 기능이 있다.
크기가 작은 HTTP 메시지는 패킷을 채우지 못하기 때문에, 앞으로 생길지 말지 모르는 추가적인 데이터를 기다리며 지연이 발생할 수 있다.
TIME_WAIT 포트 고갈은 성능 측정 시에 심각한 성능 저하를 발생시킨다.
병렬 커넥션은 몇가지 단점이 존재한다.
지속 커넥션은 위 단점들을 커버해 주기 때문에 병렬 커넥션과 함께 사용될 때에 가장 효과적이다.