
96
1
부 HTTP: 웹의 기초
HTTP
급작스러운 부하와 혼잡을 방지하는 데 쓰인다.
TCP 느린 시작은 TCP가 한 번에 전송할 수 있는 패킷의 수를 제한한다. 간단히
말해서, 패킷이 성공적으로 전달되는 각 시점에 송신자는 추가로 2개의 패킷을 더
전송할 수 있는 권한을 얻는다. HTTP 트랜잭션에서 전송할 데이터의 양이 많으면
모든 패킷을 한 번에 전송할 수 없다. 그 대신 한 개의 패킷만 전송하고 확인응답을
기다려야 한다. 확인응답을 받으면 2개의 패킷을 보낼 수 있으며, 그 패킷 각각 대
한 확인응답을 받으면 총 4개의 패킷을 보낼 수 있게 된다. 이를 ‘혼잡 윈도를 연다
(opening the congestion window)’라고 한다.
이 혼잡제어 기능 때문에, 새로운 커넥션은 이미 어느 정도 데이터를 주고받은
‘튜닝’된 커넥션보다 느리다. ‘튜닝’된 커넥션은 더 빠르기 때문에, HTTP에는 이미
존재하는 커넥션을 재사용하는 기능이 있다. 이 장의 뒤에서 HTTP의 “지속 커넥
션”을 다룰 것이다.
4.2.6
네이글(
Nagle
) 알고리즘과
TCP
_
NODELAY
애플리케이션이 어떤 크기의 데이터든지(심지어 1바이트라도) TCP 스택으로 전송
할 수 있도록, TCP는 데이터 스트림 인터페이스를 제공한다. 하지만 각 TCP 세그
먼트는 40바이트 상당의 ...