TCP 相关

这里会持续记录并归档有关TCP相关的知识。

致谢

把这篇博客献给我大学计网的任课教授。

希望她能够把更多的时间留给教学。

正文

TCP 快启(TCP Fast Open,TFO)

TFO 是 TCP 连接的一种简化握手手续的拓展,用于提高两端点间连接的打开速度。

它通过握手开始时的 SYN 包中的 TFO cookie(一个TCP选项)来验证一个之前连接过的客户端。

  1. 请求Fast Open Cookie

    1. 客户端发送 SYN 包,并附带 Fast Open 选项。

    2. 服务端若支持 TCP Fast Open ,则会加密 Client 的源 IP 产生16字节长度的 Cookie(通过AES-128算法)并将其置于 SYN-ACK 数据包中的Fast Open选项以发回客户端。

    3. 客户端收到SYN-ACK后,缓存Fast Open选项中的Cookie。

  2. 使用 Fast Open Cookie

    1. 客户端发送 SYN 数据包,该数据包包含数据以及此前记录的 Cookie 。

    2. 服务端确认该 Cookie ,如果 Cookie 有效,服务器将在 SYN-ACK 数据包中对 SYN 和数据进行确认,服务器随后将数据递送至相应的应用程序;否则,服务器将丢弃 SYN 数据包中包含的数据,且其随后发出的 SYN-ACK 数据包将仅确认 SYN 的对应序列号,如果客户端在初始的SYN数据包中发送的数据未被确认,则客户端将重新发送数据。

RFC 7413

However, TFO deviates from the standard TCP semantics, since the data in the SYN could be replayed to an application in some rare circumstances.

也就是说,客户端在请求并存储了Fast Open Cookie之后,可以不断重复 TCP Fast Open 直至服务器认为 Cookie 无效。

引用

本作品采用知识共享署名 4.0 国际许可协议(CC BY-NC-SA 4.0)进行许可,转载时请注明原文链接,图片在使用时请保留全部内容,可适当缩放并在引用处附上图片所在的文章链接。

最后更新于