Tcp三次握手和四次挥手状态图

三次握手、四次挥手状态图分析 本文详细分析了TCP连接建立(三次握手)和释放(四次挥手)的状态转换机制。三次握手通过SYN、SYN+ACK和ACK确认序列号与收发能力,状态从CLOSED到ESTABLISHED;四次挥手因全双工特性需要分别关闭数据流,产生FIN_WAIT、TIME_WAIT等状态。文章还探讨了关键问题如TIME_WAIT作用、握手挥手次数原因,并给出实战案例和内核参数优化建议,结合状态迁移图和Mermaid图表,帮助深入理解TCP连接管理机制及其故障排查方法。 阅读详情
三次握手

这里写图片描述

四次挥手
  • 正常情况下
    这里写图片描述

  • 同时挥手
    这里写图片描述

SYN攻击:

在三次握手过程中,Server发送SYN-ACK之后,收到Client的ACK之前的TCP连接称为半连接(half-open connect),此时Server处于SYN_RCVD状态,当收到ACK后,Server转入ESTABLISHED状态。SYN攻击就是Client在短时间内伪造大量不存在的IP地址,并向Server不断地发送SYN包,Server回复确认包,并等待Client的确认,由于源地址是不存在的,因此,Server需要不断重发直至超时,这些伪造的SYN包将产时间占用未连接队列,导致正常的SYN请求因为队列满而被丢弃,从而引起网络堵塞甚至系统瘫痪。SYN攻击时一种典型的DDOS攻击,检测SYN攻击的方式非常简单,即当Server上有大量半连接状态且源IP地址是随机的,则可以断定遭到SYN攻击了,使用如下命令可以让之现行: #netstat -nap | grep SYN_RECV

TIME_WAIT状态是什么?

下文转载自 TIME_WAIT是什么?

在TCP断开的过程中会有四个状态变化过程,如下图所示:
这里写图片描述
在连接撤销过程中,有如下过程:

  • HOST1上的应用程序关闭己方的连接导致TCP发送一个FIN消息给HOST2。
  • HOST2发送一个确认消息给HOST1,并且HOST2把FIN作为EOF递交给HOST2上的应用程序。
  • 一段时间过后,HOST2上的应用程序关闭它那边的连接,引发一个FIN消息给HOST1。
  • HOST1给HOST2发送一个确认消息,然后HOST2关闭连接并释放资源,然而,HOST1却没有关闭连接,而是进入了TIME_WAIT状态,并为两个最大段生存时间(2MSL)保留在此状态.
为什么需要TIME_WAIT?
  • 因为在第四步的时候,HOST1发送的ACK可能丢失并导致HOST2重新发送FIN消息,TIME_WAIT维护连接状态.
    如果执行主动关闭的一方HOST1 不进入到TIME_WAIT状态就关闭连接那会发生什么呢?当重传的FIN消息到达时,因为TCP已经不再有连接的信息了,所以就用RST(重新启动)消息应答,导致HOST2进入错误的状态而不是有序终止状态,如果发送最后ACK消息的一方处于TIME_WAIT状态并仍然记录着连接的信息,它就可以正确的响应对等方HOST2的FIN消息了.

  • TIME_WAIT为连接中”离群的段”提供从网络中消失的时间。
    考虑一下,如果延迟或者重传段在连接关闭后到达时会发生什么呢?通常情况下,因为TCP仅仅丢弃该数据并响应RST消息,所以这不会造成任何问题。当RST消息到达发出延时段的主机时,因为该主机也没有记录连接的任何信息,所以它也丢弃该段。然而,如果两个相同主机之间又建立了一个具有相同端口号的新连接,那么离群的段就可能被看成是新连接的,如果离群的段中数据的任何序列号恰恰在新连接的当前接收窗口中,数据就会被重新接收,其结果就是破坏新连接。

libfranka---joint_impendence_control例程分析 joint_impedance_control.cpp例程分析 部分内容来自链接,我个人以初学者的角度对代码进行了更加细致的解释。 核心部分: // Set and initialize trajectory parameters. const double radius = 0.05; const double vel_max = 0.25; const double acceleration_time = 2.0; const double run_time = 20.0; d 阅读详情

相关推荐

一文看懂分布式存储架构

目录一、集中存储结构二、分布式存储1 、分布式存储的兴起2 、分布式存储的重要性3 、分布式存储的种类和比较三、分布式理论浅析1 、一致性和可用性2 、数据分布3 、复制4 、分布式协议5、跨机房部署四、分布式文件系统1、 Google 文件系统( GFS )2、 Taobao 文件系统( TFS )3、 Fackbook Haystack 文件系统4、 CDN 内容分发网络五、分布式键值系统1、 Amazon Dynamo2、 Taobao Tiar3、 ETCD4 、产品选型比较( Etcd , Zoo

weixin_70730532的博客 2万+

TCP协议的三次握手和四次挥手(详细图解)

TCP的概述 TCP把连接作为最基本的对象,每一条TCP连接都有两个端点,这种断点我们叫作套接字(socket),它的定义为端口号拼接到IP地址即构成了套接字,例如,若IP地址为192.3.4.16 而端口号为80,那么得到的套接字为192.3.4.16:80。  TCP报文首部 源端口和目的端口,各占2个字节,分别写入源端口和目的端口; 序号,占4个字节,TCP连接中传送的字节流中的...

the blog of Lee 851

计算机组成原理(二)—— 数据的表示与运算

本章目录引言一、数制与编码1.1 进位计数制1.1.1 进制及转换1.1.2 真值、机器数1.2 BCD码1.3 ASCII 码1.4 校验码1.4.1 奇偶校验码1.4.2 海明码1.4.3 CRC循环冗余码二、定点数的表示和运算2.1 定点数的表示2.1.1 无符号2.1.2 有符号(原码、反码、补码、移码)2.2 定点数的运算2.2.1 移位运算2.2.2 加减运算(溢出判断)2.2.3 乘法运算2.2.4 除法运算2.3 强制类型转换2.4 数据的存储和排列三、浮点数的表示和运算3.1 浮点数的表示

S mile0804的博客 7473

TCP 三次握手和四次挥手

TCP 三次握手和四次挥手

We choose to go to the moon in this decade and do the other things, not because they are easy, but beacase they are hard. 2万+

C语言实现俄罗斯方块

使用C语言完成俄罗斯方块。《俄罗斯方块》的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。由小方块组成的不同形状的板块陆续从屏幕上方落下来,玩家通过调整板块的位置和方向,使它们在屏幕底部拼出完整的一条或几条。这些完整的横条会随即消失,给新落下来的板块腾出空间,与此同时,玩家得到分数奖励。没有被消除掉的方块不断堆积起来,一旦堆到屏幕顶端,玩家便告输,游戏结束。顾名思义,俄罗斯方块自然是俄罗斯人发明的。

qq_54169998的博客 7万+

使用MATLAB/Simulink搭建一个简化的无人机螺旋桨气动特性模型,并通过仿真验证其基本功能

螺旋桨概述特点:螺旋桨通过旋转产生推力,推动无人机前进或上升。关键参数直径(D):影响推力和功率消耗。螺距(P):定义了螺旋桨每转一圈理论上前进的距离。效率(η):衡量螺旋桨将机械能转化为推力的有效性。应用场景:航拍摄影、农业监测、物流配送等。仿真目标搭建一个简化的无人机螺旋桨气动特性模型,涵盖从电机输入到螺旋桨输出推力的过程。分析不同条件下的系统响应特性(如推力、功率消耗),并探讨优化螺旋桨设计的方法。定义螺旋桨的一些基本物理参数,如直径、螺距、推力系数、功率系数等。使用Constant。

xiaoheshang_123的博客 428

一文搞懂TCP的三次握手和四次挥手

一文搞懂TCP的三次握手和四次挥手

不脱发的程序猿 19万+

CKAD-CN考试之路----12

显然,对应的value都已经实现了加密.保存退出,等待pod重新创建。确认secret是否被加密。编辑secret文件。

Q先生 446

【通俗易懂】三次握手与四次挥手

三次握手 1.1三次握手(Three-way Handshake)是指在建立一个TCP连接时,客户端和服务器会一共发送三个报文段。 初始时客户端和服务器都处于CLOSED状态,当服务器应用程序创建一个监听套接字时,服务器处于LISTEN状态。 1.第一次握手:客户端向服务器发送一个SYN报文段,报文段的首部中的标志位SYN置为1,另外还会指明客户端的初始化序列号ISN(seq=x),此时客户端处于SYN_SENT状态。 2.第二次握手:服务器收到SYN的报文段后,会以自己的SYNACK报文进行应答。该应答报

m0_52373742的博客 5万+

SAP ABAP 接口管理服务(ZIF)开源项目介绍

接口管理服务(ZIF)开源项目基于 SAP ABAP系统,是一款对标SAP PI/PO 的轻量接口管理产品。他通过独立开发包部署在ABAP系统中,包含接口注册、接口管理、日志服务及其他配套功能,拥有丰富的技术沉淀并通过市场检验,目前已被多家企业应用在SAP ERP系统中。

SAP李斌,本人承诺所有原创文章均不使用任何AI生成技术,请大家放心阅读。 1741

【教程4>第5章>第19节】基于Gardner环的位同步系统MATLAB仿真与带时偏基带数据导出

由于在FPGA中,时偏的影响主要是由系统收发两端晶振的不同步带来的,所以在仿真测试阶段,很难直接通过FPGA来模拟这个因素,所以我们采用MATLAB模拟带时偏的基带输入信号,并将其导出,由FPGA调用作为测试信号源。可以看到,同步之后(图3)相对于带时偏的基带信号(图2),其更接近标准的数据(图1),且抖动较小。订阅过的朋友可以复习下这个课程,没有订阅的朋友,也可以直接复制如下的程序进行仿真测试。上述程序中,加入时偏的基带信号,通过子函数。同步之后,可以恢复出标准的QPSK星座图。

FPGA/MATLAB学习教程/源码/项目合作开发 520

【网络基础】TCP协议之三次握手&四次挥手--详解与常见问题解答

根本原因: 无法确认客户端的接收能力。如果是两次,你现在发了 SYN 报文想握手,但是这个包滞留在了当前的网络中迟迟没有到达,TCP 以为这是丢了包,于是重传,两次握手建立好了连接。看似没有问题,但是连接关闭后,如果这个滞留在网路中的包到达了服务端呢?这时候由于是两次握手,服务端只要接收到然后发送相应的数据包,就默认建立连接,但是现在客户端已经断开了。看到问题的吧,这就带来了连接资源的浪费。备注:丢包的数据 服务器会根据时间戳或者根据响应时间 判定是否接受 这个请求/数据;

不积跬步无以至千里,不积小流无以成江海~ 8145

【Agent从入门到实践】01 从“工具函数”到“智能体”:Agent与传统程序的核心区别

传统程序是“你教它怎么做,它才做什么”,Agent是“你告诉它做什么,它自己想怎么做”。从技术层面来说,这个区别的背后,是Agent融合了大语言模型(LLM)、记忆能力、工具调用能力、决策能力等技术,才实现了“自主思考”和“灵活执行”,而这些技术,咱们会在后面的章节中一步步拆解,手把手教大家实现。

人工智能AI技术 988

TCP协议中的三次握手和四次挥手 状态图

建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示: 1.jpg 先来看看如何建立连接的: 2.png 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发送报文,并分配资源,这样TCP连接就建立了。 如何断开连接呢?简单的过程如下: 3.png...

phone1126的专栏 9733

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

面试官:TCP为什么要三次握手与四次分手?

点击上方“Java基基”,选择“设为星标”做积极的人,而不是积极废人!每天14:00更新文章,每天掉亿点点头发...源码精品专栏原创 | Java 2021超神之路,很肝~中文详细...

weixin_44421461的博客 240

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

TCP三次握手和四次挥手,及TCP协议端口状态说明:CLOSE-WAIT、TIME-WAIT 、LISTENING、SYN_SENT、ESTABLISHED、LAST-ACK ...

TCP三次握手和四次挥手,及TCP协议端口状态说明:CLOSE-WAIT、TIME-WAIT 、LISTENING、SYN_SENT、ESTABLISHED、LAST-ACK ... 2018年09月13日 18:10:56a3192048阅读数:149 TCP三次握手和四次挥手状态图: 三次握手: 第一次 第一次握手:建立连接时,客户端发送SYN包(syn=j)到服务器,并进入S...

binbigdata的博客 429

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

TCP为什么要三次握手与四次分手?

TCP协议简介 TCP协议是五层协议中运输层的协议,下面依赖网络层、链路层、物理层,对于一个报文想发到另一台机器(假设是服务器)上对等层,每一个所依赖的层都会对报文进行包装,例如TCP协议就依赖网络层的IP协议,所以发送的报文会经过如下封装: 当这个数据包到达服务器时,服务器的网络层会对IP相关协议内容解封装、校验,然后运输层对TCP层进行解封,解封涉及到一系列的步骤,例如这个数据包是要干嘛?是发给我的吗?这些操作需要根据TCP报文的首部信息来判断,首部包含以下内容: 主要通过首部信息来了解这

duan18888的博客 405

TCP为什么需要3次握手与4次挥手

http://blog.youkuaiyun.com/xifeijian/article/details/12777187 为什么需要“三次握手”             在谢希仁著《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。在另一部经典的《计算机网络》一书中讲“三次握手”的目的是为了解决“网络中存在延迟的重复分组”的问题。

常思考->有目标->重实践->善反思 1462

网络编程(10) : 从connect到三次握手建立连接,再从close到四次挥手断开连接

网络编程(10) : 从connect到三次握手建立连接,再从close到四次挥手断开连接

yubaoaihh 517

TCP状态图

a

jiangdewei2012的专栏 688

极客时间 - (传输层) TCP协议学习笔记01

极客时间 - (传输层) TCP协议学习笔记01 TCP包头格式 1、源端口号和目标端口号是不可少的(应用系统用端口号去寻找应用,反过来应用通过端口号监听系统) 2、发送和接收有序,还应该有的就是确认序号。 3、TCP 是靠谱的协议,努力做到在传输层不丢包。 4、TCP 有一些状态位。 SYN 是发起一个连接,ACK 是回复,RST 是重新连接,FIN 是结束连接等 5、TCP 要做流量控制...

stark张宇 611

网络笔记(11) TCP协议(上):因性恶而复杂,先恶后善反轻松

上一节,我们讲的 UDP,基本上包括了传输层所必须的端口字段。它就像我们小时候一样简单,相信“网之初,性本善,不丢包,不乱序”。 后来呢,我们都慢慢长大,了解了社会的残酷,变得复杂而成熟,就像 TCP 协议一样。它之所以这么复杂,那是因为它秉承的是“性恶论”。它天然认为网络环境是恶劣的,丢包、乱序、重传,拥塞都是常有的事情,一言不合就可能送达不了,因而要从算法层面来保证可靠性。 TCP 包头格式 ...

cowbin2012的专栏 1万+

TCP通信过程中各步骤的状态---(简单解释)

状态图 1 状态图 2 对于上面的图 N 多人都知道,它排除和定位网络或系统故障时大有帮助,但是怎样牢牢地将这张图刻在脑中呢?那么你就一定要对这张图的每一个状态,及转换的过程有深刻的认识,不能只停留在一知半解之中。下面对这张图的11种状态详细解析一下,以便加强记忆!不过在这之前,先回顾一下 TCP 建立连接的三次握手过程,以及关闭连接的四次握手过程。

alpha_love的博客 501

CS 144 Lab Four -- the TCP connection

CS 144 Lab Four -- the TCP connection

m0_53157173的博客 1899

UNIX网络编程学习笔记(一):TCP,UDP

UNP学习笔记自用

qq_29798479的博客 136
上一篇: tcp建立连接为什么需要三次握手
下一篇: 一只视频程序猿的移动直播SDK初体验
voidreturn
博客等级 码龄10年 53粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值