`
isiqi
  • 浏览: 16499472 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

TFO(tcp fast open)简介

阅读更多

from: http://www.pagefault.info/?p=282

原创文章,转载请注明: 转载自pagefault

本文链接地址: TFO(tcp fast open)简介

这个是google的几个人提交的一个rfc,是对tcp的一个增强,简而言之就是在3次握手的时候也用来交换数据。这个东西google内部已经在使用了,不过内核的相关patch还没有开源出来,chrome也支持这个了(client的内核必须支持). 要注意,TFO默认是关闭的,因为它有一些特定的适用场景,下面我会介绍到。

相关的rfc:

http://www.ietf.org/id/draft-cheng-tcpm-fastopen-00.txt

相关的ppt:

http://www.ietf.org/proceedings/80/slides/tcpm-3.pdf

我来简单的介绍下这个东西.想了解详细的设计和实现还是要去看上面的rfc。

1 http的keepalive受限于idle时间,据google的统计(chrome浏览器),尽管chrome开启了http的keepalive(chrome是4分钟),可是依然有35%的请求是重新发起一条连接。而三次握手会造成一个RTT的延迟,因此TFO的目标就是去除这个延迟,在三次握手期间也能交换数据。

2 RFC793允许在syn数据包中带数据,可是它要求这些数据必须当3次握手之后才能给应用程序,这样子做主要是两个原因,syn带数据可能会引起2个问题。第一个是有可能会有前一个连接的重复或者老的数据的连接(syn+data的数据),这个其实就是三次握手的必要性所决定的。第二个就是最重要的,也就是安全方面的,为了防止攻击。

3 而在TFO中是这样解决上面两个问题的,第一个问题,TFO选择接受重复的syn,它的观点就是有些应用是能够容忍重复的syn+data的(幂等的操作),也就是交给应用程序自己去判断需不需要打开TFO。比如http的query操作(它是幂等的).可是比如post这种类型的,就不能使用TFO,因为它有可能会改变server的内容. 因此TFO默认是关闭的,内核会提供一个接口为当前的tcp连接打开TFO。为了解决第二个问题,TFO会有一个Fast Open Cookie(这个是TFO最核心的一个东西),其实也就是一个tag。

4 启用TFO的tcp连接也很简单,就是首先client会在一个请求中(非tfo的),请求一个Fast Open Cookie(放到tcp option中),然后在下次的三次握手中使用这个cookie(这个请求就会在3次握手的时候交换数据).

下面的张图就能很好的表示出启用了TFO的tcp连接:
6d8bf08d-6cb0-3ce2-8905-53ea1a49daa6

分享到:
评论

相关推荐

    tcp-fast-open:TCP Fast Open (RFC7413) 的 Golang 示例

    通过检查: /proc/sys/net/ipv4/tcp_fastopen来检查对 TCP Fast Open 的支持,确保客户端和服务器支持的值为 3。 如有必要,将 3 回显到此文件,例如: # echo 0 > /proc/sys/net/ipv4/tcp_fastopen # cat /proc/...

    tcp 连接数设置,以及查看电脑的连接数

    同时,针对不同的网络环境和应用需求,可以采用更高级的TCP优化策略,如TCP Fast Open (TFO)、TCP BBR (Bottleneck Bandwidth and Round-trip propagation time) 等。 总的来说,理解和调整TCP连接数是网络管理和...

    tcp源码分析.pdf

    8. RFC7413提出了TCP快速打开(TCP Fast Open, TFO),允许在三次握手期间减少一次往返时间,提高连接建立速度。 网络子系统是Linux内核中的关键组件,它负责处理各种网络协议,包括TCP。其核心数据结构对于理解TCP...

    TCP_WINDOWS_SET.rar_tcp Windows set

    8. **快速打开(TCP Fast Open, TFO)**:通过在三次握手期间传递数据,TFO可以减少建立连接的延迟,提高数据传输速度。 9. **TCP连接复用**:使用连接池可以重用先前建立的TCP连接,减少每次连接的初始化开销。 ...

    win2008,win8,win10网络加速TCP参数

    4. **快速打开**(TCP Fast Open, TFO):TFO是一种提高连接建立速度的技术,允许在三次握手期间就开始传输数据。在Windows中,可以通过设置`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP6\...

    Linux下TCP/IP服务器实现源码解析(含源码)

    8. **性能优化**:如TCP Fast Open (TFO)、TCP BBR(Bottleneck Bandwidth and Round-trip propagation time)等现代优化技术,源码中也会有所体现。 此外,附赠的"linux内核分析图"和"linux文件解析表"将有助于...

    RFC7413中文.pdf

    TCP快速打开(TFO)是一种互联网工程任务组(IETF)提出的实验性TCP机制,旨在减少TCP三次握手过程中的往返时间(RTT),从而加快TCP连接的建立速度。TFO的核心概念是在TCP的三次握手过程中,即在SYN和SYN-ACK数据包...

    09如何提升TCP三次握手的性能?1

    3. **快速打开(TCP Fast Open, TFO)**:如果支持,启用TFO可以减少握手次数,直接在第二次交互中完成连接建立。 总的来说,优化TCP三次握手性能主要涉及调整Linux内核参数,监控网络状态,以及根据实际需求和网络...

    TCP和IP学习资料很全面

    TFO通过使用Fast Open Cookie来标识客户端,减少了建立连接所需的RTT。 TCP报文中的时间戳选项有两个主要作用:一是计算往返时延(RTT),通过比较发送和接收的时间戳来估算;二是防止序列号回绕问题,当序列号超过...

    Linux 4.4.0内核源码分析TCP实现

    ###### 1.3.8 RFC7413: TCP Fast Open(Draft) TCP快速打开(TFO)是一种优化技术,可以在三次握手未完成之前就开始发送数据,从而减少连接建立时间。虽然这个RFC目前还是草案状态,但它已经得到了广泛的应用和支持...

    网络游戏-无线网络控制器的传输层资源分配方法.zip

    因此,传输层可能会采用TCP Fast Open(TFO)或UDP套接字直接缓冲(UDP Socket Direct Buffer,SDP)等技术减少延迟。TFO利用TCP连接的三次握手过程预置连接状态,从而缩短首次数据传输的等待时间;SDP则通过绕过...

    syn攻击检测技术实现

    5. 实施TCP连接快速打开(TCP Fast Open, TFO)减少SYN包的数量,但TFO不是所有环境都适用。 总结来说,SYN攻击是网络安全中的一个重要问题,理解和掌握其原理、检测方法以及防范策略对于保障网络服务的稳定性和...

    网络文件传输服务器源码,实现最大化带宽传输

    4. **TCP优化**:可能包括TCP快速打开(TCP Fast Open, TFO)或者TCP Congestion Window(拥塞窗口)的调整,以减少握手延迟和增加数据传输速度。 描述中提到的“客户端和服务端”表明这是一个典型的客户端-服务器...

    网络游戏-在通信网络中提供可靠的传输服务质量的方法.zip

    一种常见的方法是使用TCP基础上的优化,例如TCP Fast Open(TFO)减少握手延迟,TCP Selective Acknowledgment(SACK)用于更有效地处理丢包,以及TCP Congestion Control算法如BIC或CUBIC,以适应网络状况的变化。...

    blog:fupengfei058的博客

    目录语言PHP的socket相关函数整理C语言malloc函数原理php中mt_...WAIT状态存在的原因TCP序列号回绕与解决TCP-fastopen(TFO)tcp粘包问题http2.0入门服务器&数据库fastcgi与php-fpm的关系Nginx为什么比Apache Httpd高效

    网络游戏-Linux系统中网络协议栈管理方法及系统.zip

    为了优化网络性能,可以使用TCP快速打开(TCP Fast Open, TFO)技术减少三次握手的开销,或者使用TCP BBR(Bottleneck Bandwidth and Round-trip propagation time)算法来更好地利用网络带宽。 此外,Linux内核...

    改善网络程序的技巧.rar

    34. **TCP快速打开(TCP Fast Open, TFO)**:启用TFO,减少三次握手的延迟。 35. **TCP连接优化**:通过TCP选项如SACK、Timestamps等,增强TCP连接的可靠性。 36. **HTTP/2流优先级**:合理设置HTTP/2的流优先级...

    电信设备-提高无线通信系统数据传输速率的新方法.zip

    例如,TCP/IP协议栈的改进,如TCP Fast Open(TFO)和BBR(Bottleneck Bandwidth and Round-trip propagation time)算法,能减少握手过程,提高数据传输效率。 综上所述,提高无线通信系统数据传输速率的新方法...

    Linux 4.9内核正式发布!来看看更新了什么?

    - **TCP Fast Open (TFO)**: 实现了TCP Fast Open功能,加快了TCP连接建立的速度。 #### 驱动程序更新 - **USB Type-C**: 更新了USB Type-C驱动程序,增强了对最新USB Type-C设备的支持。 - **ACPI (Advanced ...

Global site tag (gtag.js) - Google Analytics