• TCP的十一种状态集


    TCP三次握手过程中的五种状态

    在这里插入图片描述
    三次握手过程 (5种状态)

    客户端 和 服务端 初始状态: closed

    第一个历程: 服务端状态发生变化
    closed --> listen 创建网络socket
    第二个历程: 客户端状态发生变化
    closed --> syn_sent 完成了第一次握手过程 发送了syn
    第三个历程: 服务端状态发生变化
    listen --> syn_rcvd 接收第一次握手请求, 并做出回复 发送 syn ack
    第四个历程: 客户端状态发生变化
    syn_sent --> established 接收第二次握手回复的信息, 并发送最后确认信息 ack
    第五个历程: 服务端状态发生变化
    syn_rcvd --> established 接收第三次握手回复的确认信息

    syn泛洪攻击:
    SYN攻击利用的是TCP的三次握手机制,攻击端利用伪造的IP地址向被攻击端发出请求,
    而被攻击端发出的响应 报文将永远发送不到目的地,那么被攻击端在等待关闭这个连接的过程中消耗了资源,
    如果有成千上万的这种连接,主机资源将被耗尽,从而达到攻击的目的。
    就是让服务端的状态一直处于syn_rcvd的状态,消耗服务端的资源

    TCP四次挥手过程中的六种状态

    正常情况是以下五种状态:
    在这里插入图片描述

    特殊情况:
    在这里插入图片描述

    四次挥手过程 (6种状态)
    客户端 和 服务端 初始状态为: established
    第一个历程: 服务端状态发生变化
    established --> fin_wait1 完成第一次挥手过程 发送 fin ack
    第二个历程: 客户端状态发生变化
    established --> close_wait 接收第一次挥手信息 并发送 ack信息
    第三个历程: 服务端状态发生变化
    fin_wait1 --> fin_wait2 接收第二次挥手信息
    ====================================================
    补充: 特殊情况
    服务端直接接收到了 fin 和 ack 第三次挥手信息 ,直接由closing 状态替换fin_wait2状态,过渡到time_wait 状态
    fin_wait1 --> closing
    ====================================================
    第四个历程: 客户端状态发生变化
    close_wait --> last_ack 完成第三次挥手过程 发送 fin ack
    第五个历程: 服务端状态发生变化
    fin_wait2 --> time_wait 完成第四次挥手过程 发送 ack
    第六个历程: 客户端状态发生变化
    last_ack --> closed 接收第四次挥手信息
    第七个历程: 服务端状态发生变化
    time_wait --> closed 等待一段时间(60s 90s 120s)

    补充:优化可以针对系统的time_wait进行优化,防止time_wait状态的连接过多,新的连接进不来。

  • 相关阅读:
    车云汇元宇宙:开启虚拟与现实融合的汽车养护新篇章
    Java-Based Configuration Beans for Ioc Container
    dolphinscheduler试用(一)(边用边修bug。。。。create tenant error)
    Flink SQL 常用作业sql
    MiniGPT-4:看图聊天、教学、创作、搭网站......还开源了
    NCO IP Core
    MySQL 常用函数
    SpringSecurity前后端分离
    鉴源论坛 · 观模丨基于软件性质的自动化测试技术
    Linux面试题
  • 原文地址:https://blog.csdn.net/Wangjiachenga/article/details/125493711