TCP的三次握手和四次挥手······详解

1、三次握手

三次握手是建立连接的过程

如图大致为三次握手的流程图:
在这里插入图片描述

当客户端对服务端发起连接时,会先发一个包连接请求数据,去询问能否建立连接,该数据包称为 “SYN”包
在这里插入图片描述
然后,如果对方同意连接,那么对方将会回复一个 “SYN+ACK”包

在这里插入图片描述

客户端收到后,回复一个 “ACK”包,连接就建立了

在这里插入图片描述
因为该过程中,互相发送了三包数据,所以称为 “三次握手”

但是为什么是 “三次握手” , 而不是 “两次握手”,明明服务端回复完 “SYN+ACK”包后就能建立连接

这是为了防止已失效的请求报文,忽然又传到服务器,从而引起错误

比如:
当发送请求包时,因为某些原因,该包并没有到达服务器,在某个节点产生了滞留,然而客户端为了建立连接会重新发送 “SYN”包,正常送达后回复 “SYN+ACK”包建立连接,但是,第一个包滞留的包突然恢复,又送达到服务端,这时服务端会误以为客户端发送了一个连接请求,这时,服务端认为是两个连接,二客户端认为只有一个连接,造成了状态不一致。

如果在 “三次握手”的情况下

客户端没有回复 “ACK”包,就无法建立连接,解决了网络信道不可靠的问题

2、四次挥手

四次挥手大致流程图
在这里插入图片描述

第一次挥手

客户端向服务端发送 “FIN”包,表示要关闭连接,自己则进入终止等待1状态,这是第一次挥手,如图

在这里插入图片描述

第二次挥手

服务端接收到 “FIN”包 ,回复一个 “ACK”包 ,表示自己进入关闭等待状态,而客户端同时进入终止等待2状态,这是第二次挥手,如图

PS:服务端此时还可以发送未发送的数据,而客户端也还可以接收数据

在这里插入图片描述

第三次挥手

待服务端发送完数据后,会发送一个 “FIN”包,进入最后确认状态,这是第三次挥手

在这里插入图片描述

第四次挥手

客户端收到后,回复 “ACK”包,进入超时等待状态,经过超时时间后关闭连接,而服务端收到 “ACK”包立即关闭连接

在这里插入图片描述

为什么客户端需要 “等待超时时间”

这是为了保证 服务端已收到 “ACK”包,因为假设客户端发送完 “ACK”包后就断开连接,一旦 “ACK”包在网络中丢失,服务端就一直停留在最后确认状态。

而有了 “等待超时时间”

服务端会因为没有收到 “ACK”包,会对客户端重新“FIN”包,此时,客户端会对服务端发送 “ACK”包,并且刷新超时时间,这也是为了在不可靠的网络连接中,可以可靠进行地连接断开。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/54189.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java实现数据库表中的七种连接【Mysql】

Java实现数据库表中的七种连接【Mysql】 前言版权推荐Java实现数据库表中的七种连接左外连接右外连接其他连接 附录七种连接SQL测试Java测试转换方法类 Cla1类 Cla2类Cla3 最后 前言 2023-8-4 16:51:42 以下内容源自《【Mysql】》 仅供学习交流使用 版权 禁止其他平台发布时…

macOS下Django环境搭建

1. macOS升级pip /Library/Developer/CommandLineTools/usr/bin/python3 -m pip install --upgrade pip 2. 卸载Python3.9.5版本 $ sudo rm -rf /usr/local/bin/python3 $ sudo rm -rf /usr/local/bin/pip3 $ sudo rm -rf /Library/Frameworks/Python.framework 3. 安装P…

笔记本更换固态硬盘和清灰更换硅脂经历分享

本文仅供参考。 目录 购买 固态硬盘和固态硬盘盒 拆机工具 系统迁移 拆机 螺丝花了不要急 换硬盘 清灰 换导热硅脂 处理分区 购买 固态硬盘和固态硬盘盒 自己选购硬盘的时候一定要和自己电脑硬盘型号匹配。至于如何查看自己电脑硬盘型号,这个可以去自己…

Mac应用程序无法打开或文件损坏的处理方法

1. 打开系统偏好设置界面,进入安全性与隐私,如下图所示: 2. 点按左下角的锁头图标,解锁更改权限 3. 将允许从以下位置下载的应用,更改为 “ 任何来源 ” ,然后再打开应用即可 有朋友就说了,我这…

一、ADAS技术概述

根据《国家车联网产业标准体系建设指南》对智能网联汽车定义:智能网联汽车是指搭载先进的车载传感器、控制器、执行器等装置,并融合现代通信与网络技术,实现车与X(人、车、路、云端等)智能信息交换、共享,具…

css在线代码生成器

这里收集了许多有意思的css效果在线代码生成器适合每一位前端开发者 布局,效果类: 网格生成器https://cssgrid-generator.netlify.app/ CSS Grid Generator可帮助开发人员使用CSS Grid创建复杂的网格布局。网格布局是创建Web页面的灵活和响应式设计的强…

工作记录------单元测试(持续更新)

工作记录------单元测试 之前的工作中从来没有写过单元测试&#xff0c;新入职公司要求写单元测试&#xff0c; 个人觉得&#xff0c;作为程序员单元测试还是必须会写的 于此记录一下首次编写单元测试的过程。 首先引入单元测试相关的依赖 <dependency><groupId>…

18. SpringBoot 如何在 POM 中引入本地 JAR 包

❤️ 个人主页&#xff1a;水滴技术 &#x1f338; 订阅专栏&#xff1a;成功解决 BUG 合集 &#x1f680; 支持水滴&#xff1a;点赞&#x1f44d; 收藏⭐ 留言&#x1f4ac; Spring Boot 是一种基于 Spring 框架的轻量级应用程序开发框架&#xff0c;它提供了快速开发应用程…

小程序 view下拉滑动导致scrollview滑动事件失效

小程序页面需要滑动功能 下拉时滑动&#xff0c;展示整个会员卡内容&#xff0c; 下拉view里包含了最近播放&#xff1a;有scrollview&#xff0c;加了下拉功能后&#xff0c;scrollview滑动失败了。 <view class"cover-section" catchtouchstart"handletou…

Mac电脑怎么使用“磁盘工具”修复磁盘

我们可以使用“磁盘工具”的“急救”功能来查找和修复磁盘错误。 “磁盘工具”可以查找和修复与 Mac 磁盘的格式及目录结构有关的错误。使用 Mac 时&#xff0c;错误可能会导致意外行为&#xff0c;而重大错误甚至可能会导致 Mac 彻底无法启动。 继续之前&#xff0c;请确保您…

Java上传文件图片到阿里云OSS

开通阿里云OSS 进入阿里云官网&#xff0c;开通对象存储 OSS服务进入对象存储 OSS管理控制台&#xff0c;在Bucket 列表中创建Bucket 在AccessKey管理中创建AccessKey ID和AccessKey Secret。保存起来&#xff0c;代码中需要 代码开发 pom引入依赖 <!-- 阿里云OSS -->…

单片机复位电路分析

来分析一下这个电路&#xff1a; 首先这里面有电容&#xff0c;所以是一个动态电路。哈哈哈 假设左上角的电压源是5V的代号为VOLT。 可以知道电容capacitor C1左边的电压也是5V&#xff0c;电容中间隔着一个绝缘体&#xff0c;所以不导电&#xff0c; 这个时候电流无法通过…