为什么TCP连接的建立是需要三次,而断开却需要四次

详解TCP四次挥手(断开TCP连接过程) 在讲述TCP三次握手,即建立TCP连接的过程之前,需要先介绍一下TCP协议的包结构。 TCP协议包结构: 这里只对涉及到三次握手过程的字段做解释 (1) 序号(Sequence number) 我们通过 TCP 协议将数据发送给对方,就比如 hellotcp,这一串字节流,假设被拆分成了三个 TCP 报文段,第一个报文段携带了 hel,第二个报文段携带了 lot,第三个报文段携带了 cp,这三个报文段不一定是按照顺序送到对端的,那么对端收到这三个段是如何确定他们的顺序的呢?此时序号的意义就体现在这里。 T 阅读详情

TCP的为什么三次握手就可以建立连接:

我先抛出一个命题,两个人想要正常沟通,至少保证双方都知道自己和对方的发送和接受功能是正常的。

假设这里有两个人,server和client。现在client需要和server建立连接。

① client->server : server,我想和你建立连接。(client什么都确认不了,因为他不知道server有没有接收到,也不能确定自己的信息有没有发出去)

如果这个时候server收到了。那么server可以确认两个事情(1.client可以发送。2.自己的能收到信息)于是server回复信息给client。

② server->client :client我收到你的请求了,我也想要建立连接。(server还是只能确定之前的那两个事情)

如果这个时候client能收到server的回复,表明client第一条信息发出成功,且server能接受到。client可以确定四个事情(1.自己的发送功能是正常的。2.自己的接受是正常的。3.server接受正常。4.server发送正常)
可是server还不知道client能不能接受信息和自己能不能发送信息。于是client需要再发送一条信息。

③ client->server :好的,那么建立连接吧。

如果这个时候server收到了client的回复信息,那么server也可以确认双方都的接受和发送的功能都是OK的,于是连接就可以确认了。

TCP为什么需要四次才能断开连接:

还是client和server,client和server已经建立了连接,client发送请求到server,server接收到请求把响应的信息返回给client。先看第一种情况。

① client->server :server我要断开连接了。

② server->client :好的,那断开链接吧。

因为在建立连接的时候就双发的发送和接受的功能,于是连接断开。诶,为什么两次会话就可以断开连接了?不急,再看另一种情况。

① client->server :server我要断开连接了。

② server->client :等会,我还有一些响应的信息还没发给你。

。。。过了一会

③client->server :你还没发好吗,我要断开连接了。

④server->client :再等会,我还有一些内容还没发好。

。。。过了一会

⑤client->server :你好慢啊,我要断开连接了。

⑥server->client :你好烦,发好了我会给你信息的。

六次会话都还没断开连接,client就学乖了,不要一直找server,它好了会给消息的。于是下次想要断开连接的时候。

① client->server :server我要断开连接了。

② server->client :等会,我还有一些响应的信息还没发给你。

。。。过了一会

③ server->client :响应信息发好了,我要断开连接了。

虽然server信息发好了,但是要考虑到client还在接受信息于是server就在等client的确认信息。

④ client->server :接收好了,断开连接了。

所以综上的情况,要确保连接的断开,至少需要四次的会话。

TCP建立连接为什么需要三次握手,而断开连接则需要四次? 一、TCP建立连接的过程 1. 第一次握手 客户端向服务器发出连接请求报文,这时报文首部中的同部位SYN=1,同时随机生成初始序列号 seq=x 此时,TCP客户端进程进入了 SYN-SENT(同步已发送状态)状态。TCP规定,SYN报文段(SYN=1的报文段)不能携带数据,但需要消耗掉一个序号。 这个三次握手中的开始。表示客户端想要和服务端建立连接。 2. 第二次握手 TCP服务器收到请求报文... 阅读详情

相关推荐

为什么tcp建立连接需要三次握手,断开连接需要四次挥手

三次握手 三次握手的目的,是为了防止A端已经失效的连接请求突然又传到B端,被误认为是A端再次发出的一个新的连接请求,如果B端这时又再次向A发出确认报文,表示同意建立连接,就会产生错误。 第一次是A端向B端发送请求,如果是只有一次握手的话,A端不知道B端是不是收到了这个请求。 第二次是B端确认收到A端请求,如果只有两次的话,B端不确定A端是否收到了确认消息,这个确认消息有可能会在半路丢了。 第三次是A端确认收到了B的确认消息,A和B双方都是通的,然后AB就可以建立连接相互通信了。 ![](htt

Hello World 1804

TCP 三次握手、四次断开

TCP建立连接的过程就是三次握手(Three-way Handshake),在建立连接的过程实际上就是客户端和服务端之间总共发送三个数据包。建立一个连接需要进行三次握手,而终止一个连接需要经过四次挥手(断开连接),这由TCP的半关闭(half-close)造成的。 ...

m0_52165864的博客 5373

告别Godot默认编辑器:手把手教你用VSCode配置C#开发环境(附中文注释避坑指南)

本文详细介绍了如何将VSCode配置为Godot引擎的C#开发环境,提升游戏开发效率。从环境准备、扩展配置到解决中文编码问题,提供完整的避坑指南和高级调试技巧,帮助开发者充分利用VSCode的智能补全和调试功能,打造高效工作流。

weixin_30596023的博客 189

tcp的三次握手四次断开

三次握手三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收机能正常。第一次第一次握手:建立连接时,客户端发送syn包(seq=j)到服务器,并进入SYN_SENT状态,等待服务器确认第二次第二次握手:服务器收到syn包,必须确认客户端的SYN(ack=j+1),同时自己也发送一个SYN包(seq=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。第三次第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认

J_597的博客 1305

LTO编译器优化介绍以及开启方法

LTO优化的详细介绍

性感的小君君 4922

ccproxy 6.61 注册机(纯绿/傻瓜/真正去除线程限制)

导读:   软件介绍   1、 CCPROXY 6.61 注册机(纯绿/傻瓜/真正去除线程限制)   ***前言,这次的升级官方改动不大,据说只是为了不被某些软件当病毒***   附件包中解压即免安装版,CcREGTOOLFF.exe为注册机。   本人继续向大家隆重推出《CCPROXY6.61哎呀……破解版》   还是那个提示:   在此之前,本人还是那句老话想提示大家,CCPROXY是

i53nd的专栏 1万+

TCP的三次握手与四次断开

SYN:同步序列号标志位,tcp三次握⼿中,第⼀次会将SYN=1,ACK=0,此时表⽰这是⼀个连接请求报⽂段,对⽅会将SYN=1,ACK=1,表⽰同意连接,连接完成之后将SYN=0。第4次挥手:客户端收到FIN后,客户端t进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,服务端进入CLOSED状态,完成四次挥手。ACK:当ACK=1时,我们的确认序列号ack才有效,当ACK=0时,确认序号ack⽆效,TCP规定:所有建⽴连接的ACK必须全部置为1。

L234412的博客 490

【日常小结】项目Modbus RTU 协议

Modbus RTU(远程终端) 协议 一、前言 最近因为码跺宽度测量项目推广升级,更换了摄像头(换成了基恩士摄像头)和光栅(换成了施莱格05LCM系列光栅),导致原来的程序用不了了,然而这个软件升级的任务落到了我身上,作为机械非科班出身的我要学习TCP和Modbus RTU通信协议,也算是自我突破了。本文只对Modbus/RTU/HEX 进行简单的小结。 二、Modbus Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气Schneider Electric)于1979年为使用可编程逻

weixin_39681471的博客 831

TCP的三次握手和四次断开

TCP(Transmission Control Protocol)是一种可靠的、面向连接的传输层协议,用于在网络中传输数据。TCP通过三次握手建立连接和四次断开连接来确保数据的可靠传输和连接的正常关闭。在本文中,我们将详细介绍TCP的三次握手和四次断开的过程和原理。

ab12499的博客 939

TIA博途V15.1实战:用PLCSIM Advanced V2.0模拟Modbus TCP/IP通信(附完整DB块配置)

本文详细介绍了如何在TIA博途V15.1环境中,利用PLCSIM Advanced V2.0软件仿真S7-1500 PLC的Modbus TCP/IP通信功能。通过实战步骤,重点解析了MB_SERVER指令调用、连接参数(CONNECT)配置以及核心数据块(DB)的映射方法,并附上了完整的DB块配置示例,帮助工程师在无物理硬件条件下高效完成通信逻辑的验证与调试。

m2n3o4p5的博客 408

OpenClaw Skill 开发全攻略|2026 最新机制 + 文件处理实操,看完直接落地开发

很多新手刚接触时,会把 Skill 想得很复杂,其实大可不必。OpenClaw 中的每个 Skill,本质就是一套“能力描述 + 执行逻辑”的组合包,简单说就是“告诉 AI 你能做什么、怎么做,它就会调用你”,核心特征可以总结为这几点,好记又实用:核心载体:以文件夹为单位,不管多简单的 Skill,文件夹里都必须有 SKILL.md 文件——这是 AI 识别技能的唯一依据,少了它,再完善的代码也没用;

haolove527的专栏 7025

为什么TCP建立连接需要三次握手,断开却要四次挥手呢?

面对面试官毫不慌张系列

weixin_53220369的博客 8631

高熵合金AlCoCrFeNi/金刚石摩擦案例代码

本文介绍金刚石与高熵合金AlCoCrFeNi摩擦的案例。 在之前的文章中,介绍过使用fix indent命令实现虚拟球的摩擦,本文介绍使用金刚石实体球实现高熵合金摩擦的方法。 主要的模拟过程如下: (1)基体建模 建使用原子替换法获得高熵合金初始模型,升温到3000K驰豫后,冷却至300K,获得平衡组织。 (2)摩擦球建模 在高熵合金平衡组织的模型中添加金刚石摩擦球,使用change_box命令扩大box尺寸,添加金刚石摩擦球,并设置混合力场。 (3)摩擦过程 摩擦球下压一定深度后,沿y方向进行摩擦,摩擦

lammps_jiayou的博客 2899

为什么tcp建立连接需要三次握手断开连接是四次挥手

为什么tcp建立连接需要三次握手断开连接是四次挥手 syn(synchronous)同时的,同步的,在http中指建立请求的第一个包 ack (acknowledgement) 确认的意思 fin(finally) 我要最后一次啦,我暂时这样理解这个含义 今天终于搞清楚了第四次的包是怎么回事,原来第四次的发送包不算在3次握手里面,第四次包是刷新window size用的...

一起学运维 5272

在 SAP S/4HANA Public Cloud 中做产品扩展:从 Key User 到 ABAP Cloud 与 BTP 的三轨实践指南

摘要:SAP S/4HANA Public Cloud 提供三种扩展方式(key user、developer extensibility 和 side-by-side),遵循 clean core 原则确保升级稳定。key user 扩展适合无代码轻量改良,developer extensibility 用于受控 ABAP 开发,side-by-side 则适用于云原生独立应用。文章通过销售订单优先级字段、退货审批微服务和采购校验等案例,说明不同扩展路径的适用场景与实现方法,帮助开发者在三系统景观中合理选

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 293

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

TCP为什么建立连接需要三次握手,而断开连接则需要四次?

则等待传输完毕后,被断开方再发送 FIN,告知自己也已经可以断开连接。在数据传输的过程中也是如此,被重发的 segment,丢失的 segment,连续发送的 100 个 segment 如果没有 Sequence number 作为保障,他们到达(或者到达不了)接收方的排列组合方式可能千奇百怪。如果没有收到对方的 ack,或者收到的 ack 非此 segment 的 ack,则代表对方没有收到自己的消息,比如下面这个例子,此时我们能得知,对方没有收到或者暂时还没收到我们发送过去的第二个 segment。

2401_83384536的博客 1809

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

为什么建立TCP连接需要三次握手,为什么断开TCP连接需要四次握手,TIME_WAIT状态的意义

为什么建立TCP连接需要三次握手? 原因:为了应对网络中存在的延迟的重复数组的问题 (已失效的连接请求报文段) 例子: client 发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达 server。本来这是一个早已失效的报文段。但 server 收到此失效的连接请求报文段后,就误认为是 client 再次发出的一个新的连接请求。于...

amoscykl的博客 2337

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

TCP建立连接为什么是三次,断开连接为什么是四次?

1.TCP建立连接 要理解这个问题,可以从三个方面去理解。 1.1两军问题: 假如client和service是两队人马,他们要进行通信。client说:马上要进攻了,service端说:好的我知道了。似乎这么看没有问题,两次就可以建立连接了。但是问题来了:service端说了我知道以后,service端怎么知道client端有没有收到我的答复呢?那么这个时候就需要第三次连接了们也就是client说:好的我知道你收到了。那么这样就必须建立三次连接。 1.2信道可靠问题: 我们知道client端

zion--6135的博客 1564

tcp连接多久会自动断开_TCP为什么建立连接需要三次握手,而断开连接则需要四次?...

今天跟大家分享TCP建立连接的知识。1 TCP包概述一个 segment 包含 header 和 data 两个部分,对于这篇文章需要理解的就是,Sequence number 和 Acknowledgement number) 这两个字段。TCP 的可靠传输就是基于这两个字段来实现的。 虽然文章的主旨是三次握手(three-way handshake)与四次挥手(four-way handsha...

weixin_39762075的博客 3871

TCP连接建立只需要三次握手,为什么断开连接需要四次挥手?

通常TCP连接是由客户端向服务器发起和断开的。因为只有服务器在监听端口,客户端上没有监听端口,所以客户端无法接收主动来的连接。而客户端获得了自己想要的资源或者服务之后,就会断开连接。下面的三次握手和四次挥手描述了典型情况。 TCP连接建立过程: 1、客户端向服务器发送SYN,其中seq=x。 2、服务器收到SYN报文段后,发送SYN+ACK,其中seq=y,确认号=x+1。 3、客户端收到SYN+...

刘一凡的博客 9675

TCP基础 —— 为什么建立连接需要三次握手,而断开连接则需要四次?能不能是三次?...

为什么80%的码农都做不了架构师?>>> ...

weixin_33910759的博客 843

go 监测tcp 连接断开_TCP为什么建立连接需要三次握手,而断开连接则需要四次?...

今天跟大家分享TCP建立连接的知识。1 TCP包概述一个 segment 包含 header 和 data 两个部分,对于这篇文章需要理解的就是,Sequence number 和 Acknowledgement number) 这两个字段。TCP 的可靠传输就是基于这两个字段来实现的。 虽然文章的主旨是三次握手(three-way handshake)与四次挥手(four-way handsha...

weixin_30441727的博客 166
上一篇: ZooKeeper 初认识
下一篇: 数据库(MySQL)的优化技巧
CallMeJiaGu
博客等级 码龄12年 149粉丝 99原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值