TFO[1]是Linux 内核3.6版本引入的新特性,相关标准由Google提出,仍旧是RFC的草案[2],非正式标准。作者是Yuchung Cheng,Google工程师,他从加州大学圣迭戈分校获得博士学位,从国立台湾大学[3](NTU,新加坡也有一个NTU[4],美国好像也有一个)获得学士学位,
简单说明:客户端通过TCP连接到服务器时,可以在SYN报文携带数据,这将提升TCP的效率(4%-41%)[5]。前提是在这个SYN报文中,有代表客户端的在之前的TCP连接中服务器产生的cookie字段。在客户端和服务器第一次的TCP连接创建过程中,是通常的三次握手过程,但是服务器会产生cookie作为后续TCP连接的认证信息,这就避免了恶意攻击。
对于客户端用户程序来说,可直接使用sendto等带有对端地址的系统调用发送数据,如果是第一次连接(或者cookie过期),则退化到正常三次握手过程,如果是非第一次连接,则可以继续创建连接且能够直接将数据交付给应用层处理。
[1] http://lwn.net/Articles/508865/
[2] http://tools.ietf.org/html/draft-ietf-tcpm-fastopen-02
[5] http://conferences.sigcomm.org/co-next/2011/papers/1569470463.pdf