In computer networking,TCP Fast Open (TFO) is an extension to speed up the opening of successiveTransmission Control Protocol (TCP) connections between two endpoints. It works by using aTFO cookie (a TCP option), which is a cryptographic cookie stored on the client and set upon the initial connection with the server.[1] When the client later reconnects, it sends the initial SYN packet along with the TFO cookie data to authenticate itself. If successful, the server may start sending data to the client even before the reception of the final ACK packet of the three-way handshake, thus skipping a round-trip delay and lowering thelatency in the start of data transmission.
The cookie is generated by applying ablock cipher keyed on a key held secret by the server to the client's, generating anauthentication tag that is difficult for third parties to spoof, even if they can forge a source IP address or make two-way connections to the same server from other IP addresses. Although it uses cryptographic techniques to generate the cookie, TFO is not intended to provide more security than the three-way handshake it replaces, and does not give any form of cryptographic protection to the resulting TCP connection, or provide identity assurance about either endpoint. It also is not intended to be resistant toman-in-the-middle attacks. If such resistance is required, it may be used in combination with a cryptographic protocol such asTLS orIPsec.
TFO has been difficult to deploy due to protocol ossification; in 2020, noWeb browsers used it by default.[2]
TFO presentsprivacy challenges; the TFO cookie can allow persistently tracking a client across sessions, even by passive observers.[3]
The TFO proposal was originally presented in 2011[4]and was published as the experimental RFC 7413 in December 2014.[5] TCP Fast Open shares the goal of bypassing the three-way handshake of TCP with an earlier proposal from 1994, calledT/TCP (RFC 1644). In contrast to TCP Fast Open, T/TCP paid no attention to security,[5] opening a path for vulnerabilities and failing to gain traction.
TFO implementations include the following:
The client-side support has been merged for Linux 3.6
Linux 3.7. TCP Fast Open will now be supported on servers