在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念:

未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。

Backlog参数:表示未连接队列的最大容纳数目。

SYN-ACK 重传次数 服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。

半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时我们也称半连接存活时间为Timeout时间、SYN_RECV存活时间。

DDOS全名是Distribution Denial of service (分布式拒绝服务***),很多DOS***源一起***某台服务器就组成了DDOS***。DoS的***方式有很多种,最基本的DoS***就是利用合理的服务请求来占用过多的服务资源,从而使服务器无法处理合法用户的指令。
SYN-Flood是目前最流行的DDoS***手段,早先的DoS的手段在向分布式这一阶段发展的时候也经历了浪里淘沙的过程。
假设一个用户向服务器发送了SYN报文后突然死机或掉线,那么服务器在发出SYN+ACK应答报文后是无法收到客户端的ACK报文的(第三次握手无法完成),这种情况下服务器端一般会重试(再次发送SYN+ACK给客户端)并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟);一个用户出现异常导致服务器的一个线程等待1分钟并不是什么很大的问题,但如果有一个恶意的***者大量模拟这种情况,服务器端将为了维护一个非常大的半连接列表而消耗非常多的资源----数以万计
的半连接,即使是简单的保存并遍历也会消耗非常多的CPU时间和内存,何况还要不断对这个列表中的IP进行SYN+ACK的重试。实际上如果服务器的TCP/IP栈不够强大,最后的结果往往是堆栈溢出崩溃---即使服务器端的系统足够强大,服务器端也将忙于处理***者伪造的TCP连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称做:服务器端受到了SYN Flood***(SYN洪水***)。

转载于:https://blog.51cto.com/babyhe/275296

TCP三次握手与DDOS***原理相关推荐

  1. TCP三次握手和劫持原理与实例

    首先详细了解一下TCP三次握手的过程     三次握手Three-way Handshake   一个虚拟连接的建立是通过三次握手来实现的   1. (B) --> [SYN] --> ( ...

  2. TCP三次握手原理,你真的了解吗?

    最近碰到一个问题,Client 端连接服务器总是抛异常.在反复定位分析.并查阅各种资料搞懂后,我发现并没有文章能把这两个队列以及怎么观察他们的指标说清楚. 问题描述 场景:Java 的 Client ...

  3. TCP三次握手、四次挥手、socket,tcp,http三者之间的区别和原理

    接着上一篇文章叙述: TCP/IP连接(在互联网的通信中,永远是客户端主动连接到服务端): 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协 ...

  4. TCP 三次握手原理,你真的理解吗

    转载自  TCP 三次握手原理,你真的理解吗 最近,阿里中间件小哥哥蛰剑碰到一个问题--client端连接服务器总是抛异常.在反复定位分析.并查阅各种资料文章搞懂后,他发现没有文章把这两个队列以及怎么 ...

  5. TCP三次握手原理详解

    TCP/IP协议不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族. 从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层.网络层.传输层.应用层. TCP协议:即传输控制 ...

  6. TCP 三次握手原理,你真的理解吗?

    阿里妹导读:最近,阿里中间件小哥哥蛰剑碰到一个问题--client端连接服务器总是抛异常.在反复定位分析.并查阅各种资料文章搞懂后,他发现没有文章把这两个队列以及怎么观察他们的指标说清楚. 因此,蛰剑 ...

  7. 由TCP三次握手原理来分析NAT回流故障

     互联网上有很多关于NAT回流故障的分析,但大多数是模棱两可,没有从根本上给出NAT回流故障的具体原因,本文通过数据包捕获.分析数据包,结合TCP三次握手原理,详细的分析了NAT回流故障的具体原因 ...

  8. mysql三次握手_一文彻底搞懂 TCP三次握手、四次挥手过程及原理

    原创文章首发于公众号:「码农富哥」,欢迎收藏和关注,如转载请注明出处! TCP 协议简述 TCP 提供面向有连接的通信传输,面向有连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接. 无论 ...

  9. TCP三次握手、四次挥手过程及原理

    TCP 协议简述 TCP 提供面向有连接的通信传输,面向有连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接. 无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接.在TCP/I ...

最新文章

  1. Android布局管理器-使用TableLayout表格布局管理器实现简单的用户登录页面
  2. SAP MTA打包的一些常见错误
  3. 深入讲解JSP 2.0下的动态内容缓存技术
  4. hibernate查询缓存_在Hibernate中启用实体和查询缓存
  5. 30 校准_校准or质控,傻傻分不清楚
  6. Android中1像素Activity进程保活
  7. 东八区转为0时区_格林尼治时间转换为北京时间
  8. 扫码枪输入mysql_使用jQuery监听扫码枪输入并禁止手动输入的实现方法
  9. SQL 交叉表存储过程
  10. Behavior Language Processing with Graph based Feature Generation for Fraud DetectioninOnline Lending
  11. 语音识别模块解决方案
  12. SAP HANA XS 专栏
  13. html代码中font是什么意思,HTML元素font标签的使用方法及作用
  14. box-shadow详解
  15. 超出本地计算机网络,超出本地计算机网络适配器卡的名称限制怎么解决?
  16. cmd下批量pingIP地址
  17. 国际标准战争的技术真相
  18. u盘数据恢复的原理_U盘数据恢复其实很简单
  19. 隐私计算:数据脱敏、匿名化、假名化、差分隐私和同态加密
  20. 利用计算机 算法写文章,计算机算法论文

热门文章

  1. VMware ESXi 高危漏洞的补丁被指不完整
  2. 安全界的硬核盛会要来了!2020北京网络安全大会倒计时100天
  3. 1120 Friend Numbers
  4. Oracle Golden Gate - 概念和机制
  5. 转] 两种自定义表单设计方案
  6. 阿里云上线镜像平台 小白用户轻松上云
  7. 现实世界中正在用Java解决的难题
  8. 数学之美--关于图论引申出来的爬虫构想
  9. python socket 实现的简单http服务器
  10. 在python中如何将两个list合并成一个list,不用for语句