4通过TCP链接通过握手

通常,一个正常的TCP连接将有三个阶段:1、TCP三次握手;2、数据传输;3、TCP四挥手。

其中的一些概念:

SYN:(同步序列号,同步序列号)

ACK:(确认号,确认号)

翅片:(端旗,后罩)

TCP三次握手(创建开放)

客户端启动一个请求,创建与服务的TCP链接,该服务是SYN(j)。

在接收到对客户端的创建请求之后,服务器返回两个信息:SYN(k)+ ACK(j + 1)

客户端在成功的ACK信息检查到服务器(j和j + 1)之后返回消息:ACK(k + 1)

服务器在接收客户机的ACK信息验证(k和K + 1)之后,不再返回信息,稍后再进入数据通信阶段。

数据通信

客户机/服务器读/写数据包

TCP四次握手(接近完成)

客户机启动关机请求并发送信息:鳍(M)

在接收到信息之后,服务器首先返回到ACK(M + 1),表示他已收到消息。

服务器在准备关闭之前,最后向客户端发送一条鳍(n)消息,询问客户端是否准备关闭。

在接收服务器发送的消息之后,客户机返回一条确认消息:ACK(n + 1)

最后,当双方确认时,服务器和客户端都关闭或恢复相应的TCP链路。

详细的状态描述(与Linux相关的参数调整)

syn_send

客户端试图通过open方法链接服务器端,即在TCP三握手的第一步之后,关注点是客户机状态。

net.ipv4.tcp_syn_retries sysctl - W = 2,作为客户端可以设置SYN包重试次数,默认的5倍(约180s)引用了校长的话:只要重试2次,现代网络是不够的。

syn_received

在服务接收到创建请求的SYN之后,即在发送ACK数据包之前,在TCP的三次握手中的第二步。

关注的是服务器的状态,通常约15正常,如果非常大,怀疑是被syn_flood

sysctl - W网。IPv4。tcp_max_syn_backlog = 4096,在等待队列数。默认值是1024。升级后,可适当防止SYN洪水。见人7 TCP。

sysctl - W网。IPv4。tcp_syncookies = 1,打开syncookie,并提供一种机制,暂时取代了SYN连接SYN积压队列是不足时,

net.ipv4.tcp_synack_retries sysctl - W = 2,这是重发的服务器端返回的ACK包。默认的时间是5倍(约180秒),这是由校长引用。这只重2倍,和现代的网络是不够的。

建立了

客户端接受服务器的ACK包的状态,服务器在确定某个时间后发送ACK。

net.ipv4.tcp_keepalive_time sysctl - W = 1200,默认为7200秒(2小时),系统将检查自由链接心跳如果超过net.ipv4.tcp_keepalive_probes * net.ipv4.tcp_keepalive_intvl,默认为11分,相应的TCP连接终止时,可适当调整心跳检查频率

目前在线监测预警:600、关键:800

fin_wait1

主动关闭的一方,在鳍请求之后,是TCP四握手的第一步。

close_wait

被动接收端在接收到客户端的鳍之后,是TCP四握手的第二步。

fin_wait2

四次握手的第二步是在接受ACK的被动关闭后,主动关闭该方。

sysctl - W网。IPv4。tcp_fin_timeout = 30,你可以设置后被动关闭方返回的超时时间,有效回收环节和避免SYN Flood。

lask_ack

被动关闭的一方,在发送ACK(确保客户端已经收到)之后的一段时间之后,启动一个鳍请求,这是TCP四次握手的第三步。






time_wait

主动关闭的一方在接收被动关闭的鳍包后发送ACK,这是TCP四次握手的第四个步骤。

net.ipv4.tcp_tw_recycle sysctl - W = 1,开放和快速恢复time_wait,启用此选项不推荐以来,不,和正确的方法。

net.ipv4.tcp_tw_reuse sysctl - W = 1,快速重用和重用time_wait链接,似乎有冲突,tw_recycle,不能重复使用

net.ipv4.tcp_max_tw_buckets:是最链接数在time_wait状态,默认是180000。

相关解释

主动接近被动侧鳍请求接收一个ACK成功发送到对方后,其地位由fin_wait2 time_wait修改,必须等待2次MSL(最大段的寿命,MSL是一个数据报可以存在于网络的时间,双方经过)状态更改为关闭关闭连接。目前,时间在RHEL保持time_wait状态60秒

它的策略可以有效避免三次握手的动作和四关。