linux - TCP_FASTOPEN cookie 是根据什么保存的?

标签 linux tcp network-programming

我一直在阅读有关 Linux 中的 TCP_FASTOPEN 的内容,但我无法弄清楚 cookie 保存的是什么。

如果我的 Linux 服务器上的一个程序使用 tcp 快速打开进行连接,连接到同一服务器的其他程序是否会使用之前的 cookie 进行快速打开?

或者只有来自同一程序的套接字才能使用彼此的cookie?

最佳答案

几年前,TCP_FASTOPEN (TFO) 的概念被引入,作为一种提高 TCP 连接性能、减少握手过程一次往返的解决方案。第一个实现 TFO 的操作系统是 Linux,并且在公共(public)网络中使用时已经证明了良好的改进。

Linux 内核中的实现是由多个部分完成的,Linux 内核 3.6.1 第一个实现客户端要求,然后 Linux 内核 3.7 实现服务器端套接字行为。

使用 TCP_FASTOPEN 时,行为略有不同。您不再需要使用 connect(2),而是使用 sendto(2),它还使您有机会让内核缓冲一些初始传出数据。简而言之,调用 sendto(2) 就像同时隐式 connect(2) 和 send/write(2)

了解更多信息http://edsiper.linuxchile.cl/blog/2013/02/21/linux-tcp-fastopen-in-your-sockets/

编辑

Fast Open Cookie 旨在缓解新的安全漏洞,以便在握手期间实现数据交换。 cookie是服务器生成的MAC标签,对客户端不透明;客户端只是缓存 cookie 并将其通过后续 SYN 数据包传回以打开新连接。服务器可以随时使cookie过期以增强安全性。当应用程序关闭时它不会消失,因为它存储在系统内存中

关于linux - TCP_FASTOPEN cookie 是根据什么保存的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37365711/

相关文章:

在 C 中创建一个简单的 HTTP 代理

linux - 我可以做些什么来减少 TCP 在 ubuntu 中的拥塞控制的影响?

python - 如何从 pcap 文件中提取 TCP SYN 标志并使用 Python (Scapy) 检测 SYN Flood 攻击?

c - 如何从 linux tun/tap 中逐个读取数据包

与Linux中的特定接口(interface)连接

linux - FFMPEG 缩放,如何设置比例使宽度和高度不超过一定数量?

linux - 如何使用 gawk/grep 打印特定的文本列表?例如我想打印txt文件中存在的所有颜色的名称

linux - 如何测试 TCP 写入超时的处理?

linux - Go 二进制文件无法在 openshift 中运行

android - 如何在 linux box 上授权 android 模拟器?