-
Notifications
You must be signed in to change notification settings - Fork 26
TCP
# HTTP and TCP
This page keeps notes about best current practice for using HTTP/1 and HTTP/2 over TCP.
## TCP Fast Open
[RFC](https://tools.ietf.org/html/rfc7413)
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](https://developer.apple.com/videos/wwdc/2015/?id=719). Chrome has support on Linux platforms (including Android).
## Initial Congestion Window
[IW10](http://tools.ietf.org/html/rfc6928) is now (fairly) widely deployed n server side. Some have experimented with IW32 + packet pacing.
## Explicit Congestion Control
Apple [deploying in iOS and OSX](https://developer.apple.com/videos/wwdc/2015/?id=719).
## Tail Loss Probes
[draft](http://tools.ietf.org/html/draft-dukkipati-tcpm-tcp-loss-probe-01)
## Slow Start after Idle
net.ipv4.tcp_slow_start_after_idle = 0
## Nagle's Algorithm
Most implementations disable
## Half-close
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.
## Abort
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.
## Keep-alive
TCP keep-alive likely disabled. App-level keep-alive is required for long-lived requests to detect failed peers.
## Full-duplex read/write
Requests are expected to complete first. [Clarification](https://tools.ietf.org/html/draft-zhu-http-fullduplex)
NOTE: All contributions are made under these terms.