TCP三次握手的第三个ACK包丢了,会发生什么? |
您所在的位置:网站首页 › tcp三次握手发的什么包 › TCP三次握手的第三个ACK包丢了,会发生什么? |
第三次的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 |