1. TFO

为了改善web应用相应时延,google发布了通过修改TCP协议利用三次握手时进行数据交换的TFO(TCP fast open,RFC 7413)。

TFO允许在TCP握手期间发送和接收初始SYN分组中的数据。如果客户端和服务器都支持TFO功能,则可以减少建立到同一服务器的多个TCP连接的延迟。这是通过在初始TCP握手之后在客户端上存储TFO cookie来实现的。如果客户端稍后重新连接,则此TFO cookie将发送到服务器,从而允许连续的TCP握手跳过一个往返延迟,从而减少延迟。

2. TFO原理

第一次连接:

  1. 客户端发送SYN数据包,带有Fast open选项并且里面的cookie值是空的
  2. 客户端收到SYN,以后生成Cookie,并且放进ACK+SYN包的fast Open选项里面,发回给客户端
  3. 客户端收到cookie以后就存起来了、

第一次连接断开了,开始第二次连接了:

  1. 客户端发ACK给服务器的时候,把刚刚缓存的cookie也带上,并且把数据也带上了

  2. 服务器校验收到的cookie合法性。如果不合法的话,就把当前的包丢掉,走正常的三次握手。如果合法的话,服务器就给客服端发ACK+SYN并且带上数据包

  3. 客户端发ACK确认给服务器

3. TFO的好处

以两次建立连接和发送请求为例

第二次请求的时候,TFO可以将请求报文和响应报文,放在前面两次握手的过程中,因此第二次请求中,可以在一个RTT内就能拿到响应数据了

重学TCP协议(11)TFO(Tcp Fast Open)相关推荐

  1. 一篇文章让你理解TCP协议,搭建TCP flood攻击实验以及了解其防御原理

    目录 1.知识点回顾 2.TCP协议 3.TCP字段含义 4.TCP的三次握手过程 5.释放连接的四次挥手过程 6.握手挥手七次总过程 7.TCP的半关闭状态 8.TCP的半连接状态 9.常见的TCP ...

  2. 5.3 计算机网络传输层之TCP协议(tcp协议特点、tcp报文段首部格式、tcp连接---三次握手、tcp连接释放---四次握手)

    文章目录 1.TCP协议特点 2.TCP报文段的首部格式 3.TCP连接管理 (1)连接的建立 - - - 三次握手 (2)SYN泛洪攻击 4.TCP连接释放----四次握手 5.TCP连接建立和释放 ...

  3. 5.3.1 TCP协议特点和TCP报文段格式

    5.3.1 TCP协议特点和TCP报文段格式

  4. TCP协议特点和TCP报文段

    TCP协议的特点 TCP是面向连接(虚连接)的传输层协议 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的 TCP提供可靠交付的服务,无差错.不丢失.不重复.按序到达. TCP提供全双工 ...

  5. TCP协议 STCP与TCP比较

    可靠性是计算机系统的基础应用程序信赖于底层计算机系统数据 的可靠传 输,系统保证数据传送到底层后不会丢失和重复.保证端对端数据传输的可靠 性 ,是通过传输层来实现的. 传输层定义了主机应用程序之间端到 ...

  6. 大白话了解TCP协议:了解TCP?先别急,来看看TCP的前世——“最简单的”可靠传输协议:停止等待协议

    TCP是可靠传输协议的衍生.拓展 先了解可靠传输协议的基本概念就可以非常轻松得了解TCP协议了! 这是个有安全感的协议类型~ 在漫长的线路中,这些数据要经过路由器.网线,甚至还有风风雨雨--数据就很容 ...

  7. 【计算机网络】——TCP协议简介以及TCP编程

    文章目录 1.TCP概述 1.1TCP含义 1.2TCP首部报文格式 1.3理解源IP地址和目的IP地址 1.4认识端口号 2.网络编程基础API 2.1创建socket 2.2命名socket--b ...

  8. 2022.9.07 TCP协议特点,TCP适用场合,TCP连接方式(三次握手,四次挥手)。

    传输层协议: TCP   <传输控制协议>    transport control protocol TCP协议特点: 是一种面向连接的传输层协议,它能够提供高可靠性通信,无数据丢失,无 ...

  9. 重学JavaSE 第11章 : 常用类API、String、日期API、比较器、BigDecimal、System等

    文章目录 一.字符串相关的类 1.1.String类的概述 1.2.理解String的不可变性 1.3.String不同实例化方式的对比 1.4.String不同拼接操作的对比 1.4.1.Strin ...

  10. TCP协议经典数据--TCP/IP高效编程 : 改善网络程序的44个技巧

最新文章

  1. C语言程序设计 细节总结(第1-7章)
  2. Boost:矩阵转置的测试程序
  3. Python编程习惯
  4. 等差数列划分Python解法
  5. 2725. [Violet 6]故乡的梦(删边最短路同[TJOI2012]桥)
  6. Kava将于下午2时重新启动Kava Chain
  7. 为什么易燥易怒以及柔润相处的练习
  8. 用python把相同名称的放在一起,python实现将具有相同名称的文件放入相应的文件夹中,把,对应,内...
  9. java随机数生成方法
  10. 天堂2单机版进去显示服务器维护,天堂2五章单机版设置完成后却玩不了 高手解决一下...
  11. Codevs_P1907HDU_P1565 方格取数3(最大流)
  12. P2882 [USACO07MAR]Face The Right Way G 【贪心 + 差分】
  13. 社交帝国的至暗时刻,Facebook“非死不可”?
  14. Python计算时间差天数
  15. uni-app 页面中的背景图片高度和宽度自适应
  16. GPS坐标显示在百度地图上(Qt+百度地图)
  17. 微信小程序转换为uni-app项目
  18. 云服务器系统结构图,云服务器系统结构图
  19. go 函数os.OpenFile
  20. as 运行java_解决AndroidStudio无法运行java中的mian方法问题

热门文章

  1. 多线程顺序交替打印ABCD
  2. RocketMQ避坑指南:springcloud教程权威指南
  3. 修改npm全局安装模式的路径
  4. logstash5.x改变
  5. Unity3D 装备系统学习Inventory Pro 2.1.2 基础篇
  6. 使用VB.net建立excel文件
  7. Android RecyclerView (一) 使用完全解析
  8. 图学java基础篇之IO
  9. SQL Azure十月份更新
  10. 网页中层或菜单被Flash挡住的解决办法