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秒
它的策略可以有效避免三次握手的动作和四关。