TCP三次握手的第三个ACK包丢了,会发生什么?

您所在的位置:网站首页 tcp三次握手发的什么包 TCP三次握手的第三个ACK包丢了,会发生什么?

TCP三次握手的第三个ACK包丢了,会发生什么?

2024-05-16 09:21| 来源: 网络整理| 查看: 265

第三次的ack包丢失就是说在client端接收到syn + ack之后,向server发送的ack包,由于各种原因server没有收到。这时client, server分别会进行怎样的处理?

Server 端

第三次的ACK在网络中丢失,那么Server 端该TCP连接的状态为SYN_RECV,此时server把这个连接会进入到半连接队列,分配内存,并且会根据 TCP的超时重传机制,会等待3秒、6秒、12秒后重新发送SYN+ACK包,以便Client重新发送ACK包。

而Server重发SYN+ACK包的次数,可以通过设置/proc/sys/net/ipv4/tcp_synack_retries修改,默认值为5。

如果重发指定次数之后,仍然未收到 client 的ACK应答,那么一段时间后,Server自动关闭这个连接。

Client 端

在linux c 中,client 一般是通过 connect() 函数来连接服务器,而connect()是在 TCP三次握手的第二次握手完成后就成功返回值。也就是说 client 在接收到 SYN+ACK包,它的TCP连接状态就为 established (已连接),表示该连接已经建立。如果第三次握手中的ACK包丢失的情况下,Client 向 server端发送数据,Server端将以 RST包响应,方能感知到Server的错误。

注意:

RST(Reset)包是TCP协议中的一种控制报文,用于终止连接或表示错误,当一方收到另一方发来的RST包时,它会立即关闭连接,不经过正常的连接关闭阶段。RST包的接收端不会执行连接的正常关闭流程,而是直接关闭连接并释放相关资源。

为什么要三次握手,而不是二次握手?   为了避免已失效的连接报文段又到达可服务器。   避免建立多个链接 DDoS攻击

DDoS攻击方式多种多样,常见的包括:

1)SYN Flood攻击:攻击者向受害主机的TCP端口发送大量伪造的SYN包,导致受害主机消耗大量资源在处理这些无效连接上,从而无法响应合法请求。(常伴随IP欺骗)2)ACK Flood攻击:与SYN Flood类似,但使用ACK包进行攻击,同样导致受害主机资源耗尽。3)UDP Flood攻击:攻击者发送大量UDP数据包,由于UDP不建立连接,因此这种攻击不会建立大量的连接,而是直接消耗网络带宽和服务器处理能力。4)DNS Flood攻击:通过大量伪造的DNS请求洪水攻击,导致DNS服务器过载。5)CC攻击:通过控制大量僵尸主机向目标服务器发送大量请求,导致服务器超负荷运行。6)TCP全连接攻击:攻击者利用大量僵尸主机与受害服务器建立大量的TCP连接,直到服务器的内存等资源被耗尽。7)ICMP/IGMP洪水攻击:通过发送大量的ICMP或IGMP报文,消耗目标的宽带资源。8)刷script脚本攻击:攻击者通过与服务器建立正常的TCP连接,并提交大量耗费数据库资源的查询或列表等操作,导致服务器资源耗尽。

Server端易受到SYN攻击的原因:

服务器端的资源分配是在二次握手时分配的,而客户端的资源是在完成三次握手时分配的,所以服务器容易受到SYN洪泛攻击,SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server则回复SYN+ACK确认包,并等待Client确认回复ACK,而这些大量的IP是不存在的,并不会向服务端发送ack确认包,所以会大量的占领半连接队列资源,导致正常的SYN请求因为半连接队列满而被丢弃,从而引起网络拥塞甚至系统瘫痪。

如何预防SYN攻击

1)开启SYN cookie技术

2)调整最大半连接数

3)调整缩短半连接超时时间



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3