首页 > 其他分享 >TCP Fast Open 详解

TCP Fast Open 详解

时间:2024-11-07 17:44:52浏览次数:3  
标签:SYN TCP Cookie Fast Open 连接

TCP Fast Open详解

TCP Fast Open(TFO)是对传输控制协议(TCP)的一种扩展,用于加快两个端点之间连续 TCP 连接的打开速度。以下是关于 TCP FAST OPEN 的详细介绍:

9

10

  1. 产生背景和目的
    • 在传统的 TCP 三次握手过程中,建立连接需要一个完整的往返时间(Round Trip Time,RTT),这对于一些对延迟敏感的应用,如网页浏览等,会造成一定的性能损失。特别是在网络延迟较高的情况下,这种延迟影响更为明显。TCP Fast Open 的目的就是为了减少这种连接建立的延迟,提高 TCP 连接的效率。
  2. 工作原理
    • 首次连接请求
      • 客户端发送 SYN 报文,报文中包含 Fast Open 选项,且该选项的 Cookie 为空,表示客户端请求 Fast Open Cookie。
      • 服务器如果支持 Fast Open 功能,会生成一个 Cookie,并将 Cookie 放置在 SYN+ACK 报文中的 Fast Open 选项中返回给客户端。
      • 客户端收到 SYN+ACK 报文以后,本地缓存 Fast Open 选项中的 Cookie。
    • 后续连接建立
      • 客户端再次向服务器建立连接时,发送的 SYN 报文会包含数据以及本地缓存的 Fast Open Cookie。
      • 服务器在收到 Cookie 后会对其进行校验,如果 Cookie 有效,服务器将在 SYN+ACK 报文中对 SYN 和数据进行确认,并且随后会将数据返回给客户端。如果 Cookie 无效,服务器会丢弃 SYN 报文中的数据,随后的确认报文只会确认 SYN 对应的序列号。
      • 客户端会发送 ACK 确认服务器发回的 SYN 以及数据,如果第一次握手时数据没有被确认,客户端会重新发送数据。
  3. 优势
    • 降低连接延迟:通过在首次连接时获取 Cookie,后续连接可以在第一次握手时就发送数据,跳过了一个 RTT 的延迟,能够显著提高连接建立的速度,对于频繁建立连接的应用场景,如网页浏览、在线游戏等,性能提升效果明显。
    • 减轻服务器负担:在某些情况下,例如突发的大量连接请求,TFO 可以减少服务器在连接建立阶段的处理负担,因为部分数据可以在早期就开始传输,而不需要等待三次握手完全完成。
  4. 限制和适用场景
    • 限制
      • 数据量限制:IPv4 中,与 SYN 报文一起发送的数据量有一定限制,通常为 1460 字节。如果数据量过大,可能不适合使用 TFO。
      • 应用类型限制:并非所有的应用都适合使用 TCP Fast Open。例如,对于 POST 等非幂等性的请求(即多次请求会对服务器状态产生不同影响的操作),使用 TFO 可能会带来安全风险,因为在连接尚未完全建立时就发送数据可能会被恶意利用。
    • 适用场景:适用于对延迟敏感、且请求具有幂等性的应用,如 HTTP 的 GET 请求等。对于长时间保持连接的应用,如在线视频、实时通信等,TFO 的优势可能不太明显,因为其主要优化的是连接建立阶段的延迟。
  5. 部署和支持情况
    • 操作系统方面,Linux 内核从 3.6 版本(客户端支持)和 3.7 版本(服务器支持)开始支持 TCP Fast Open。一些其他的操作系统也逐渐添加了对 TFO 的支持。
    • 在应用程序层面,部分浏览器和服务器软件也开始支持 TCP Fast Open,但需要进行相应的配置和启用。



欢迎关注公-众-号【TaonyDaily】、留言、评论,一起学习。

公众号

Don’t reinvent the wheel, library code is there to help.

标签:SYN,TCP,Cookie,Fast,Open,连接
From: https://www.cnblogs.com/lovebing/p/18533656

相关文章

  • 接触放电顶到RJ45 TCP网口金属或者是USB ESD静电放电问题疑问
    接触放电顶到RJ45TCP网口金属或者是USB金属8KV不重启,只要把接触放电头抬高点不直接接触就会重启当遇到“接触放电顶到RJ45TCP网口金属或者是USB金属8KV不重启,只要把接触放电头抬高点不直接接触就会重启”的情况,这可能与静电放电的路径、设备的电磁兼容性和接地情况等多种因......
  • Mac压缩工具首选?FastZip为什么那么受欢迎
    Mac上的压缩工具,各有各的好,也各有各的不好FastZip,Mac上的一款免费多功能压缩工具速度快,支持自定义压缩线程分配,最高支持8线程压缩,将近10GB的文件压缩只需二十秒左右,大文件压缩不再需要长时间等待格式齐全,压缩格式支持7Z、Zip,解压格式支持7Z、ZIP、RAR、TAR、GZIP、BZIP2、X......
  • 49_api_intro_stock_fund_fundopenrankinglist
    开放式基金实时排行API数据接口多维度参数返回,实时数据,类型参数筛选。1.产品功能返回实时开放式基金排行数据可定义查询基金类型参数;多个基金属性值返回多维指标,一次查询毫秒级返回;数据持续更新与维护;全接口支持HTTPS(TLSv1.0/v1.1/v1.2/v1.3);全面兼容Apple......
  • 48_api_intro_stock_fund_fundopenetfrealtime
    场内交易基金实时数据API数据接口多维数据查询指标,场内基金数据,每日实时数据。1.产品功能支持所有场内交易基金实时数据查询;实时数据,支持一次查询单个或所有基金数据;每个交易日16:00-23:00更新当日的最新场内交易基金净值数据;多数据源清洗整合,百万级数据毫秒级返回;......
  • 47_api_intro_stock_fund_fundopenetfhistory
    场内交易基金历史数据API数据接口多维数据查询指标,场内基金数据,全量历史数据。1.产品功能支持所有场内交易基金历史数据查询;历史数据,支持指定日期范围返回基金数据;多数据源清洗整合,百万级数据毫秒级返回;数据持续更新与维护;全接口支持HTTPS(TLSv1.0/v1.1/v1.2/v......
  • 46_api_intro_stock_fund_fundetfopenrankinglist
    开放式场内交易基金排行API数据接口多维度参数返回,实时数据,返回多维度指数。1.产品功能返回实时开放式ETF基金排行数据多个基金属性值返回多维指标,一次查询毫秒级返回;数据持续更新与维护;全接口支持HTTPS(TLSv1.0/v1.1/v1.2/v1.3);全面兼容AppleATS;全国多节......
  • 39_api_intro_stock_cn_stockcnpreopen
    A股当日分时含盘前数据API数据接口支持实时盘前数据,支持时间区间获取,分钟级实时数据。1.产品功能支持所有A股数据查询;支持指定时间段盘前历史数据查询;支持分钟级盘前实时数据查询;毫秒级查询性能;数据持续更新与维护;全接口支持HTTPS(TLSv1.0/v1.1/v1.2/v1.3);......
  • Openlayers高级交互(20/20):超级数据聚合,页面不再混乱
    本示例在vue+openlayers中使用cluster生成聚合数据的效果。在OpenLayers中实现点聚合(clustering)是一个常见的需求,特别是在处理大量地理数据点时。聚合可以提高地图的性能并减少视觉上的混乱。一、示例效果图专栏名称内容介绍Openlayers基础实战(72篇)专栏提供73......
  • P10161 [DTCPC 2024] 小方的疑惑 10 [构造 + 背包DP]
    P10161[DTCPC2024]小方的疑惑10Solution一开始看这题的时候,我们可能会觉得无从下手,这时不妨列出几种方案,计算它们的贡献,尝试得到一些启发。画来画去,发现无非就是并列和包含两种情况,并列就是()()()(),设它一共由\(x\)对括号组成,那么它的总贡献是\(x\times(x+1)\div......
  • 面试:TCP、UDP如何解决丢包问题
    文章目录一、TCP丢包原因、解决办法1.1TCP为什么会丢包1.2TCP传输协议如何解决丢包问题1.3其他丢包情况(拓展)1.4补充1.4.1TCP端口号1.4.2多个TCP请求的逻辑1.4.3处理大量TCP连接请求的方法1.4.4总结二、UDP丢包2.1UDP协议2.1.1UDP简介2.1.2......