TCP网络连接中的三次握手和四次挥手
作者:
逍遥Sean
简介:一个主修Java的Web网站\游戏服务器后端开发者
主页:https://blog.csdn.net/Ureliable
觉得博主文章不错的话,可以三连支持一下~ 如有需要我的支持,请私信或评论留言!
TCP网络连接中的三次握手和四次挥手
- 一、网络基础回顾
- 二、TCP通讯的连接和断开为什么复杂?
- 三、三次握手和四次挥手
一、网络基础回顾
计算机网络结构是一个复杂的层次结构,一般可以分为七层,被称为网络协议分层结构。这个结构被用来划分网络连接的不同协议以及它们之间的相互作用。以下是这七层的详细介绍:
- 物理层:负责传输数据的物理介质,如电缆和无线信号。
- 数据链路层:负责将数据转换成数据帧,并在物理层上进行传输。数据链路层的主要任务是差错控制和流量控制。
- 网络层:负责选择数据包的传输路线,并将其传输到目标设备。网络层还负责 IP 地址的分配和路由选择。
- 传输层:负责数据传输的端到端通信,比如 TCP 协议和 UDP 协议。
- 会话层:负责建立、维护和结束数据传输会话。
- 表示层:负责数据格式的转换,确保数据可以被接收方正确地解释。
- 应用层:向用户提供应用程序,负责数据处理和传输。
这些层次结构中的每一层都有其独特的任务和功能。为了使不同的网络设备能够相互通信,必须确保它们“说”同一种语言和遵循相同的协议。这就是网络协议分层结构的目的。
二、TCP通讯的连接和断开为什么复杂?
TCP(Transmission Control Protocol)通讯是一种面向连接的、可靠的网络传输协议。它位于 OSI 模型的传输层,负责提供数据传输服务。TCP协议通过三次握手建立连接,确保数据的可靠性和有序性,同时也提供拥塞控制和流量控制机制。它适用于需要保证数据传输的可靠性和有序性的应用,例如文件传输、电子邮件、网页浏览等。
TCP通信是一种可靠的面向连接的通信方式,连接建立和断开是非常重要的过程。下面是TCP通信的连接和断开过程:
复杂的连接与释放过程是为了保证连接的可靠性
-
连接建立:
当客户端需要和服务器建立TCP连接时,它会向服务器发送一个SYN包(同步包),这是一个带有SYN标志位的TCP数据包。服务器在收到SYN包后,会向客户端发送一个带有SYN和ACK标志位的数据包,表示确认收到客户端的请求并同意建立连接。最后,客户端向服务器发送一个带有ACK标志位的数据包,表示收到了服务器的确认信息,连接建立成功。 -
数据传输:
在连接建立后,客户端和服务器之间可以进行数据传输。数据以TCP数据包的形式通过互联网传输。 -
连接断开:
TCP连接断开有两种方式:主动关闭和被动关闭。
主动关闭:当客户端或服务器需要断开连接时,它会向对方发送一个带有FIN标志位的TCP包,表示要关闭连接。对方在收到FIN包后,会回复一个ACK确认信息。最后,对方也会发送一个FIN包,表示连接已经关闭。
被动关闭:当一方突然断开连接,另一方也会收到一个FIN包,表示连接已经关闭。对方在收到FIN包后,会发送一个ACK包,然后连接关闭。
三、三次握手和四次挥手
三次握手和四次挥手都是TCP协议通信过程中建立和关闭连接的步骤。
三次握手的步骤如下:
- 客户端发送
SYN包,进入SYN-SENT状态。 - 服务器接收到
SYN包,回复一个ACK包和一个SYN包,进入SYN-RECEIVED状态。 - 客户端收到
ACK包和SYN包,回复一个ACK包,建立连接并进入ESTABLISHED状态。
四次挥手的步骤如下:
- 客户端主动关闭连接,发送
FIN包,进入FIN-WAIT-1状态。 - 服务器接收到
FIN包,回复一个ACK包,进入CLOSE-WAIT状态。 - 服务器向客户端发送
FIN包,进入LAST-ACK状态。 - 客户端接收到
FIN包,回复一个ACK包,进入TIME-WAIT状态,等待2MSL(最长报文段寿命)后关闭。
下面是三次握手和四次挥手的示意图:
三次握手:
客户端 服务器SYN_SENT状态 LISTEN状态---------------SYN包------------>SYN_RECEIVED<---------ACK包和SYN包------------ESTABLISHED
四次挥手:
客户端 服务器ESTABLISHED状态 <---------------FIN包------------FIN_WAIT_1 CLOSE_WAIT<---------------ACK包------------FIN_WAIT_2 LAST_ACK<-------FIN包--------TIME_WAIT <-------ACK包--------CLOSED
相关文章:
TCP网络连接中的三次握手和四次挥手
作者:逍遥Sean 简介:一个主修Java的Web网站\游戏服务器后端开发者 主页:https://blog.csdn.net/Ureliable 觉得博主文章不错的话,可以三连支持一下~ 如有需要我的支持,请私信或评论留言! TCP网络连接中的三…...
游戏服务商Latis Global参展2023 ChinaJoy B2B
第20届ChinaJoy于2023年7月在上海举行了为期四天的博览会,参展观众达到了33.8万人次。ChinaJoy是全球最具知名度与影响力的年度盛会之一,涵盖了包括游戏、动漫、互联网影视、电子竞技、潮流玩具、智能娱乐在内的多个数字娱乐领域。ChinaJoy不仅仅代表了数字娱乐领域的最新风向,…...
oracle常用sql
oracle常用sql oracle常用sql查询当前会话id(sid),会话序列号(serial#),操作系统进程id(spid)查询数据库信息查询实例信息查询字符集查看回收站情况数据库系统PSU信息数据库大小查看表空间状况常规库表空间情况查询,非CDBCBD表空间情况查询当前客户端信息资源使用情况…...
手游模拟器长时间运行后,游戏掉帧且不恢复
1)手游模拟器长时间运行后,游戏掉帧且不恢复 2)FrameBuffer Fetch无论哪种模式在确定支持的手机上显示全紫 3)协程中yield return CoFunction()和yield return StartCoroutine(CoFunction())的区别 这是第353篇UWA技术知识分享的推…...
linux下离线安装telnet
安装过程概要: (一)互联网端下载rpm包; (二)上传到服务器root目录下; (三)安装telnet服务和测试: 详细内容: (一)互联…...
Unity 发布WebGL平台,C#与JavaScript交互
发布H5平台,接入SDK,比如微信等,涉及到C#与JS的交互。 jslib(JavaScript Library)是Unity的一种机制,允许你在C#中通过JavaScript代码来执行一些操作。这是一种高级的技巧,主要用于一些特殊情况…...
利用 Forcing InnoDB Recovery 特性解决 MySQL 重启失败的问题
问题 由于异常断电或者系统异常重启时 MySQL 没有正常退出导致 MySQL 无法启动,启动时报错如下: [System] [Server] /usr/sbin/mysqld (mysqld 8.0.30) starting as process 2665 [System] [InnoDB] InnoDB initialization has started. [System] [Inn…...
windows修改键位F11变insert(改键盘映射)
这里是通过改变windows的注册表来实现的 1.按住winr打开运行,在运行中输入“regedit”,再点击“确定”按钮。如下图 2.找到注册表的目录 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout 3.在Keyboard Layout右击新建 -> 二进…...
安装gpu版本的paddle和paddleclas
安装gpu版本的paddle python -m pip install paddlepaddle-gpu2.3.2.post111 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html以上支持cuda11.1版本 其他需求可查阅文档在这里 安装paddleclas 1 在虚拟环境中安装所需的Python库: pip inst…...
61从零开始学Java之处理大数字相关的类有哪些?
作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 我们知道,在现实世界里,实际上数字是有无穷个的,就比如0和1之间&a…...
vscode 搜索界面的files to include files to exclude 是什么功能?
在VSCode(Visual Studio Code)中,搜索功能是一个强大的工具,可以帮助你在项目中快速查找特定的文本、代码或其他内容。搜索界面的 “files to include” 和 “files to exclude” 提供了一种方式来定制你的搜索范围。 files to in…...
数据计算-第15届蓝桥杯第一次STEMA测评Scratch真题精选
[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第154讲。 第15届蓝桥杯第1次STEMA测评已于2023年8月20日落下帷幕,编程题一共有6题,分别如下&a…...
谈谈前端和后端的选择
引言 在我的印象中,也是视线里,后端都是在一个黑屏的页面,左边一个文件类,右边在不停的写sql,一只手放在键盘上,一边写,一遍不停的关联进入,感觉很无趣,他们的分享不是什么java集成&…...
Vue3最佳实践 第六章 Pinia,Vuex与axios,VueUse 1(Pinia)
Pinia状态管理 在 Vue3 中项目中组件之间传递数据时,可以使用 Props 和 Emit,还可以使用 Provide/Inject 来代替 Props 和 Emit。Props 和 Emit 只能在具有父子关系的组件之间传递数据,所以层级越深,过程就越复杂。为了解决此类问…...
Java比较器之equals、comparable、comparator
文章目录 前言一、基本类型比较1.2.equals3.和equals的区别 二、对象的比较1.覆写基类的equals2.基于Comparable接口类的比较3.基于Comparator比较器比较4.三种方式对比 前言 在Java中,基本类型的对象可以直接比较,而自定义类型,默认是用equ…...
Virtio-user使用简介
一、简述 DPDK支持几种方式让用户空间的报文重新进入内核协议栈(这种dpdk和kernel直接通信的路径叫做exception path),例如tap/tun设备使用,kni,Virtio-user。这里主要讲Virtio-user使用,Virtio-user是virtio PMD的虚拟设备&…...
点云从入门到精通技术详解100篇-基于深度学习的三维植物点云分割网络
目录 前言 研究现状及趋势 传统的植物表型分割方法 现行的植物表型分割方法...
C语言 Cortex-A7核 SPI 实验
1 实验目的 1、数码管显示相同的值0000 1111 2222 .... 9999 2、数码管不同的值1234 2 代码 include/spi.h #ifndef __SPI_H__ #define __SPI_H__ #includ…...
Spring工具类--ReflectionUtils的使用
原文网址:Spring工具类系列--ReflectionUtils的使用_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Spring的ReflectionUtils的使用。 ReflectionUtils工具类的作用:便利地进行反射操作。 Spring还有一个工具类:ReflectUtils,它们在…...
zemax西德莫尔目镜
高性能的军用光学仪器 在两个双胶合透镜之间,增加了一块平凸透镜 半视场角增大到35度 入瞳直径4mm波长0.51、0.56、0.61半视场35焦距27.9mm 镜头参数: 成像效果:...
OpenRocket:重新定义模型火箭设计与仿真的开源力量
OpenRocket:重新定义模型火箭设计与仿真的开源力量 【免费下载链接】openrocket Model-rocketry aerodynamics and trajectory simulation software 项目地址: https://gitcode.com/GitHub_Trending/op/openrocket 核心价值:破解模型火箭开发的效…...
PyLink 实战技巧:从基础连接到高级调试
1. PyLink入门:从零搭建调试环境 第一次接触PyLink时,我也被各种专业术语弄得晕头转向。后来才发现,只要掌握几个关键步骤,就能快速搭建起嵌入式调试环境。PyLink本质上是个Python库,它像翻译官一样,把我们…...
MAXON阀150SMA12-FA22-CC2380
MAXON 150SMA12-FA22-CC2380 是一款工业燃烧控制领域的高品质燃气电磁阀。以下是对该型号的详细解析与关键参数: 1. 型号拆解 该型号遵循 MAXON(麦克森,现属 Honeywell 过程解决方案)的命名规则: 150:阀体…...
AWS Lambda性能调优终极指南:如何通过内存配置平衡成本与执行速度
AWS Lambda性能调优终极指南:如何通过内存配置平衡成本与执行速度 【免费下载链接】aws-lambda-power-tuning AWS Lambda Power Tuning is an open-source tool that can help you visualize and fine-tune the memory/power configuration of Lambda functions. It…...
RPA-Python与pytest-xdoctest集成:Xdoctest测试自动化
RPA-Python与pytest-xdoctest集成:Xdoctest测试自动化 【免费下载链接】RPA-Python Python package for doing RPA 项目地址: https://gitcode.com/gh_mirrors/rp/RPA-Python RPA-Python是一款功能强大的Python自动化库,而pytest-xdoctest则是一个…...
SkeyeVSS平台录像任务调度与设备录像查询机制详解
1. 简介 在基于 GB/T 28181 国家标准构建的视频监控平台中,录像功能是核心业务之一,主要分为两类: 平台侧计划录像:由平台主动发起,通过媒体服务器向设备请求实时流,并在平台侧(本地或云存储&am…...
DeEAR语音情感识别入门必看:三维度(唤醒度/自然度/韵律)原理与Gradio界面实操
DeEAR语音情感识别入门必看:三维度(唤醒度/自然度/韵律)原理与Gradio界面实操 1. 为什么需要语音情感识别 想象一下,当你接到客服电话时,对方的声音是机械冰冷的还是热情自然的?这种差异直接影响沟通效果…...
大模型Prompt实战指南:从基础到高阶的提问艺术
1. 为什么Prompt提问技巧如此重要? 第一次用ChatGPT时,我直接问"怎么写工作总结",结果得到一篇泛泛而谈的模板。后来学会在问题里加上"我是一名互联网产品经理,需要向CTO汇报季度工作",回答立刻精…...
BGP路由优化:配置、故障排除与网络性能提升
BGP路由优化:配置、故障排除与网络性能提升在复杂的网络环境中,尤其是在涉及多个自治系统(AS)互联互通的场景下,边界网关协议 BGP (Border Gateway Protocol) 作为互联网的关键路由协议,直接影响着网络稳定…...
照着用就行:2026最新AI论文网站测评与推荐
2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…...
