首页 > 编程知识 正文

tcp快速打开,tcpdump监听网卡eth0

时间:2023-05-04 00:57:24 阅读:176047 作者:4973

一. TFO概述

为了改善网络APP的适当延迟,谷歌发表了通过变更TCP协议进行利用了3次握手的数据交换的TFO(TCPfastopen,RFC 7413 )。

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

二. TFO原理图

一般的TCP连接步骤如下图所示

TFO的连接流程如下

客户端断开连接一段时间后,重新连接过程如下

使用TFO,您会发现连接时间减少了RTT的一个延迟。

三.开启TFO

RHEL7/CentOS7受支持,但缺省情况下未启用,因为TFO功能已开始与Linux 3.7内核集成。 按以下方式打开:

echo3/proc/sys/net/IP v4/TCP _ fast open

#3意味着打开TFO客户端和服务器端

#1表示打开客户端,2表示打开服务器端

除了内核支持外,还必须打开对APP应用程序的支持。 例如,nginx(1.5.8)的开启方法如下。

服务器{

listen 80 backlog=4096 fast open=256 default;

server_name _;

四. TFO客户支持情况

可以手动打开Linux 3.7或更高版本的内核。 3.13或更高版本的内核在缺省情况下处于打开状态。 默认值为1。

Windows10默认打开1607 (如果打开自动更新) ) )。

windows默认Edge浏览器14352或更高版本。

Linux、Android上的Chrome浏览器版本。 windows不支持版本。

Firefox浏览器默认关闭,可以手动打开。

虽然可以支持苹果的iOS 9和OS X 10.11,但是默认情况下可能没有启用。

linux上的curl 7.49或更高版本支持。

五. TFO测试

在服务器端打开了TFO,并配置为nginx支持TFO。

客户端打开TFO,将curl升级到7.61版。 然后使用curl访问HTTP页面进行测试。

客户端如下所示

# curl-s-o/dev/null-- TCP-fast open http://10.140.10.16 /

您可以使用ip tcp_metrics show查看cookie

# IP TCP _ metrics show|grep ' fo _ cookie '

10.140.10.16 age 41.955 sectw _ ts 282422045/42 secagortt 250 usrttvar 250 us cwnd 10 metric _ 52380 metric _ 61190 fo _ MSS 1460

服务器端捕获如下所示。 cookie,1640a20f99195995已经发行。

20336017:10.533466 IP 10.140.12.45.2872210.140.10.16.80: flags [ s ]、seq 1532602092、win 29200、option nn

20336017:10.533518 IP 10.140.10.8010.140.12.45.2872: flags [ s.],seq 108109466,ack 153260202093,ack nop,wscale 9,tfo cookie 1640a20f99195995,nop,nop],length 0

使用以下命令查看TFO连接的统计信息

# grep ' ^ TCP ext : '/proc/net/netstat|cut-d '-f87-92|column-t

tpofomergetcpchallengeacktcpsynchallengetcpfastopenactivetcpfastopenactivefailtcpfastopenpassive

9306 29958 2457 0 0 11

六.其他问题

下一个问题还没有解决。

客户端的TFOcookie将在多长时间后删除? 谁来维护和删除?

nginx的TFO队列具体是什么意思? 如果队伍排满了会怎么样? 数值设定多少比较合适?

队列是RFC7413中服务器的安全机制,超出队列的包将降级为普通的无cookie连接。 也就是说,TFO功能将被禁用。 但是,这个数值的具体设定不太好。

七.参考资料

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。