我一直在阅读有关 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/