Clone this wiki locally
HTTP and TCP
This page keeps notes about best current practice for using HTTP/1 and HTTP/2 over TCP.
TCP Fast Open
Allows data to be sent on handshake. Requires client + server support, and application knowledge (GET/HEAD/OPTIONS only) or TLS Client Hello.
Implemented in Linux, experimental in iOS/OSX. Chrome has support on Linux platforms (including Android).
Initial Congestion Window
IW10 is now (fairly) widely deployed n server side. Some have experimented with IW32 + packet pacing.
Explicit Congestion Control
Apple deploying in iOS and OSX.
Tail Loss Probes
Slow Start after Idle
net.ipv4.tcp_slow_start_after_idle = 0
Most implementations disable
Client or server is free to half-close after a request or response has been completed; or when there is no pending stream in HTTP/2.
No client abort for HTTP/1.1 after the request body has been sent. Delayed full close is expected following an error response to avoid RST on the client.
TCP keep-alive likely disabled. App-level keep-alive is required for long-lived requests to detect failed peers.
Requests are expected to complete first. Clarification