面试题:

在 TCP 建立连接的三次握手连接阶段,如果客户端发送的第三个ACK包丢了,那么客户端和服务端分别进行什么处理呢?

相信了解 tcp 协议的人,三次握手的过程肯定很了解了。第三次的 ack 包丢失就是说在 client 端接收到 syn + ack 之后,向 server 发送的 ack 包 由于各种原因 server 没有收到。这时 client, server 分别会进行怎样的处理呢?

Server 端

    第三次的ACK在网络中丢失,那么Server 端该TCP连接的状态为SYN_RECV,并且会根据 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的错误。

链接:https://www.nowcoder.com/discuss/8081?type=1&order=0&pos=105&page=1

SYN攻击

  • 什么是 SYN 攻击(SYN Flood)?

    在三次握手过程中,服务器发送 SYN-ACK 之后,收到客户端的 ACK 之前的 TCP 连接称为半连接(half-open connect)。此时服务器处于 SYN_RCVD 状态。当收到 ACK 后,服务器才能转入 ESTABLISHED 状态.

    SYN 攻击指的是,攻击客户端在短时间内伪造大量不存在的IP地址,向服务器不断地发送SYN包,服务器回复确认包,并等待客户的确认。由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,导致目标系统运行缓慢,严重者会引起网络堵塞甚至系统瘫痪。

    SYN 攻击是一种典型的 DoS/DDoS 攻击。

  • 如何检测 SYN 攻击?

    检测 SYN 攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源IP地址是随机的,基本上可以断定这是一次SYN攻击。在 Linux/Unix 上可以使用系统自带的 netstats 命令来检测 SYN 攻击。

  • 如何防御 SYN 攻击?

    SYN攻击不能完全被阻止,除非将TCP协议重新设计。我们所做的是尽可能的减轻SYN攻击的危害,常见的防御 SYN 攻击的方法有如下几种:

    • 缩短超时(SYN Timeout)时间
    • 增加最大半连接数
    • 过滤网关防护
    • SYN cookies技术

转载自:https://hit-alibaba.github.io/interview/basic/network/TCP.html

TCP第三次握手失败的处理(Server端超时重传机制、RST包响应、SYN攻击)相关推荐

  1. TCP第三次握手失败怎么办,即最后一次握手失败

    和DDOS攻击一样,握手失败和没发送握手报文一样!!!服务器无法完成第三次握手,但服务器不会立即放弃,服务器会不停的重试并等待一定的时间后放弃这个未完成的连接,这段时间叫做SYN timeout,这段 ...

  2. TCP 第三次握手失败

    这是另外一个问题,之前对于TCP握手以及通信底层没有什么概念.出现问题后,客户发来了Wireshark抓包. 客户端101.253发出了SYN包给服务器102.24, 客户端进入SYN_SEND状态. ...

  3. [TCP/IP] TCP第三次握手失败怎么办

    三次握手 客户端 ==> SYN是1同步 ,ACK确认标志是0,seq序号是x ==> 服务器 客户端 <== SYN是1同步 ,ACK确认标志是1,seq序号是y,ack确认号是x ...

  4. TCP第三次握手失败会怎么样

    转载自:https://blog.csdn.net/gochenguowei/article/details/79649997 面试题: 在 TCP 建立连接的三次握手连接阶段,如果客户端发送的第三个 ...

  5. tcp三次握手和在局域网中使用 awl伪装MAC地址进行多线程SYN攻击

    内容 1.tcp三次握手及tcp连接状态 2.实战:在局域网中使用 awl伪装MAC地址进行多线程SYN攻击 ssh 客户端: 63 192.168.1.63 sshd服务端: 64 192.168. ...

  6. Wireshark抓包分析TCP的三次握手

    一.TCP三次握手连接建立过程 Step1:客户端发送一个SYN数据包(SYN=1,Seq=X,ACK=0)给服务端,请求进行连接,这是第一次握手: Step2:服务端收到请求并且允许连接的话,就会发 ...

  7. TCP的 “三次握手” 和“四次挥手”,到底是什么鬼?

    轻松了解HTTP协议 为什么要学习网络协议呢?为什么要学习计算机网络呢?显然这很重要,至少能够帮助你找到工作的原因之一,学习网络知识点太多太多,没有那么快就能记住. 理解的网络协议,应该从背景原理去着 ...

  8. 网络通信TCP协议三次握手

    TCP是什么? TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的.可靠的. 基于IP的传输层协议.TCP在IP报文的协议号是6.TCP是一 ...

  9. 在深谈TCP/IP三步握手四步挥手原理及衍生问题—长文解剖IP

    如果对网络工程基础不牢,建议通读<细说OSI七层协议模型及OSI参考模型中的数据封装过程?> 下面就是TCP/IP(Transmission Control Protoco/Interne ...

最新文章

  1. c语言arr什么意思6,初识C语言(六)
  2. CHM综述:建立因果关系,合成菌群在植物菌群研究中的机会
  3. namesapce的作用 增加访问路径 目的:区分不同包的相同action的访问路径
  4. 计算机二级C语言操作题评分标准,计算机二级C语言题型和评分标准
  5. 索引---B+Tree
  6. 应用容器公共免费部署平台
  7. 利用圆解一元二次方程
  8. 双网关,可以上内网或外网,如何同时上内网和外网?
  9. [转]上海新东方vs新东方,SEO实战
  10. 查看eclipse使用的jre版本
  11. 2020软考数据库系统工程师-下午案例分析真题解析视频-任铄-专题视频课程
  12. 编译原理实验1——词法分析器设计
  13. FPGA串口传图sobel边缘检测
  14. 安卓手机怎么设置蓝牙耳机弹窗动画_AirPods Pro 搭配安卓一个月深度体验
  15. 字幕基础:字幕介绍、字幕种类及常见格式(转)
  16. hadoop搭建伪分布式集群(centos7+hadoop-3.1.1)
  17. Java.SE01.多线程_案例01
  18. C#桌面办公应用-工资管理系统系列五
  19. Dvorak Simplified Keyboard
  20. 鸿蒙发布会图文直播,华为nova 7系列线上发布会图文直播

热门文章

  1. csust2020新生赛题解
  2. nyoj--61 传字条(一)(多线程dp)
  3. 循环队列队空队满判断
  4. Java类集框架--Stream数据流
  5. 从0到1实现python基于RPC协议的接口自动化测试
  6. 什么叫软件测试工程师?
  7. jdk中缺少.msi文件的解决办法(心塞之旅)
  8. 薪酬分析:4大IT最具潜力职位
  9. RPG地图绘制 Android studio
  10. Sencha Touch Carousel 去除底栏