【计算机网络】TCP握手与挥手:三步奏和四步曲

news2024/11/24 13:55:21

这里写目录标题

  • 前言
  • 三次握手
  • 四次挥手
  • 三次握手和四次挥手的作用
    • TCP三次握手的作用
      • 建立连接
      • 防止已失效的连接请求建立连接
      • 防止重复连接
    • TCP四次挥手的作用:
      • 安全关闭连接
      • 避免数据丢失
      • 避免半开连接
    • 总结:
  • 总结

前言

TCP(传输控制协议)是一种面向连接的可靠的传输协议。在建立连接和关闭连接时,TCP使用了三次握手和四次挥手的机制来确保通信的可靠性。
TCP是一种非常重要的传输层协议,被广泛应用于各种网络通信场景中。无论是企业内部的数据传输,还是互联网上的数据交换,都离不开TCP的支持。

三次握手

三次握手的过程是这样的:

  • 第一步:客户端向服务器发送一个SYN(同步)标志位的数据包,请求建立连接。这个数据包包含了一个随机生成的序列号X。

  • 第二步:服务器收到客户端的请求后,会回复一个带有SYN和ACK(确认)标志位的数据包。这个数据包中除了SYN标志位外,还包含了服务器随机生成的序列号Y,以及确认号ACK为X+1。

  • 第三步:客户端收到服务器的响应后,会发送一个ACK标志位的数据包给服务器,确认连接建立。该数据包中的确认号ACK为Y+1。
    经过以上三个步骤,双方都知道彼此已经准备好进行通信,连接成功建立。

注意:三次握手的目的是为了确保双方都能够收到对方的数据包。如果只有两次握手,则存在一种情况,即客户端发送的SYN数据包在传输过程中丢失,而服务器没有收到客户端的请求,但是客户端已经认为连接建立成功了。当客户端向服务器发送数据时,服务器会认为这是一个非法的数据包,并拒绝接收。因此,三次握手可以避免这种情况的发生。
请添加图片描述

四次挥手

四次挥手的过程是这样的:

  • 第一步:客户端发送一个FIN(结束)标志位的数据包给服务器,请求关闭连接。

  • 第二步:服务器收到客户端的请求后,发送一个ACK标志位的数据包给客户端,确认收到关闭请求。

  • 第三步:服务器继续向客户端发送一个FIN标志位的数据包,表示服务器也准备关闭连接。

  • 第四步:客户端收到服务器的关闭请求后,发送一个ACK标志位的数据包给服务器,确认收到关闭请求。

经过以上四个步骤,双方都完成了关闭连接的过程。在这个过程中,服务器和客户端都需要等待一段时间(即TIME_WAIT状态)才能完全关闭连接,等待时间一般为2MSL,即2倍最大报文段生存时间。这是因为在实际应用中,网络状况可能不稳定,需要确保对方已经接收到最后一个ACK数据包。
四次挥手的过程可以避免连接关闭时出现问题,如双方同时关闭连接,但是还有数据传输的情况。
请添加图片描述

三次握手和四次挥手的作用

TCP三次握手的作用

建立连接

三次握手确保了客户端和服务器之间建立了可靠的连接。客户端发送SYN数据包给服务器,服务器回复SYN+ACK数据包给客户端,最后客户端发送ACK数据包给服务器。通过这个过程,双方都确认对方可达,并同步了序列号和确认号。只有完成三次握手,才能确保双方能够正常通信。

防止已失效的连接请求建立连接

在网络传输过程中,可能会有延迟或丢失的情况发生。如果没有三次握手,客户端发送的连接请求可能会在网络中滞留,当客户端重新发送请求时,服务器无法区分新的连接请求与旧的失效请求。通过三次握手,服务器可以确认客户端发送的连接请求是有效的,避免建立无效的连接。

防止重复连接

在网络环境中,可能存在网络拓扑改变或网络故障的情况。如果没有三次握手,客户端可能会发送多个连接请求给服务器,而服务器则无法判断是新的连接请求还是旧的重复连接。通过三次握手,服务器可以确认客户端的序列号和确认号,避免重复连接的情况发生。

TCP四次挥手的作用:

安全关闭连接

四次挥手确保了双方在关闭连接时能够安全地完成数据传输。客户端发送FIN数据包给服务器,表示不再发送数据;服务器回复ACK数据包给客户端,确认收到关闭请求;服务器继续发送FIN数据包给客户端,表示也准备关闭连接;最后,客户端回复ACK数据包给服务器,确认收到关闭请求。通过这个过程,双方都完成了数据传输并安全地关闭连接。

避免数据丢失

在关闭连接之前,可能存在数据传输的延迟。通过四次挥手,客户端和服务器可以互相通知对方不再发送数据,确保所有数据都能被接收和处理,避免数据丢失的情况。

避免半开连接

在网络环境中,可能存在半开连接的情况,即一方已经关闭连接但另一方不知道。通过四次挥手,双方都可以通知对方自己的关闭意图,并确认对方已经收到关闭请求,避免出现半开连接的情况。

总结:

TCP三次握手和四次挥手在网络通信中起着至关重要的作用。通过三次握手,双方建立可靠的连接,确保能够正常通信,并避免无效连接和重复连接的问题。而通过四次挥手,双方安全地关闭连接,完成数据传输,并避免数据丢失和半开连接的情况发生。

总结

通过三次握手和四次挥手的机制,TCP能够可靠地建立连接和关闭连接,保证数据的完整性和可靠性。在实际应用中,TCP是非常重要的协议,被广泛应用于各种网络通信场景中。了解TCP的三次握手和四次挥手机制对于网络开发人员来说是非常重要的基础知识。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《游戏-02_2D-开发》

基于《游戏-01_2D-开发》, 继续制作游戏: 首先给人物添加一个2D重力效果 在编辑的项目设置中, 可以看出unity默认给的2D重力数值是-9.81,模拟现实社会中的重力效果 下方可以设置帧率 而Gravity Scale代表 这个数值会 * 重力 还…

MySQL---多表等级查询综合练习

创建emp表 CREATE TABLE emp( empno INT(4) NOT NULL COMMENT 员工编号, ename VARCHAR(10) COMMENT 员工名字, job VARCHAR(10) COMMENT 职位, mgr INT(4) COMMENT 上司, hiredate DATE COMMENT 入职时间, sal INT(7) COMMENT 基本工资, comm INT(7) COMMENT 补贴, deptno INT…

【cucumber】cluecumber-report-plugin生成测试报告

cluecumber为生成测试报告的第三方插件&#xff0c;可以生成html测报&#xff0c;该测报生成需以本地json测报的生成为基础。 所以需要在测试开始主文件标签CucumberOptions中&#xff0c;写入生成json报告。 2. pom xml文件中加入插件 <!-- 根据 cucumber json文件 美化测…

使用docker配置semantic slam

一.Docker环境配置 1.拉取Docker镜像 sudo docker pull ubuntu:16.04拉取的为ununtu16版本镜像&#xff0c;环境十分干净&#xff0c;可以通过以下命令查看容器列表 sudo docker images 如果想删除多余的docker image&#xff0c;可以使用指令 sudo docker rmi -f <id&g…

【深度学习目标检测】十七、基于深度学习的洋葱检测系统-含GUI和源码(python,yolov8)

使用AI实现洋葱检测对农业具有以下意义&#xff1a; 提高效率&#xff1a;AI技术可以快速、准确地检测出洋葱中的缺陷和问题&#xff0c;从而提高了检测效率&#xff0c;减少了人工检测的时间和人力成本。提高准确性&#xff1a;AI技术通过大量的数据学习和分析&#xff0c;能够…

【面试】java并发编程面试题

java并发编程面试题 何为进程?何为线程?JVM拓展为什么程序计数器、虚拟机栈和本地方法栈是线程私有的呢&#xff1f;为什么堆和方法区是线程共享的呢虚拟机栈和本地方法栈为什么是私有的?一句话简单了解堆和方法区单核 CPU 上运行多个线程效率一定会高吗&#xff1f;创建线程…

【机组】存储器、总线及堆栈寄存器实验的解密与实战

​&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《机组 | 模块单元实验》⏰诗赋清音&#xff1a;云生高巅梦远游&#xff0c; 星光点缀碧海愁。 山川深邃情难晤&#xff0c; 剑气凌云志自修。 ​目录 &#x1f33a;一、 实验目的 …

【力扣hot100】二分查找

文章目录 Arrays.sort()时间复杂度o(n)二分法时间复杂度o(logn) 1.搜索插入位置代码 2. 搜索二维矩阵思路&#xff1a;代码&#xff1a; 34. 在排序数组中查找元素的第一个和最后一个位置思路&#xff1a;代码&#xff1a; 153. 寻找旋转排序数组中的最小值思路&#xff1a;代码…

5.2 基于深度学习和先验状态的实时指纹室内定位

文献来源 Nabati M, Ghorashi S A. A real-time fingerprint-based indoor positioning using deep learning and preceding states[J]. Expert Systems with Applications, 2023, 213: 118889.&#xff08;5.2_基于指纹的实时室内定位&#xff0c;使用深度学习和前一状态&…

从零开始的OpenGL光栅化渲染器构建3-法线贴图和视差贴图

前言 我们可以用一张纹理贴图来表现物体表面的基础反射颜色&#xff0c;也可以用一张镜面反射贴图&#xff0c;来指派表面是否产生高光。除此之外&#xff0c;我们可以用贴图来存储表面的法线信息&#xff0c;以及高度信息&#xff0c;从而让渲染效果更加精细。 法线贴图 我…

linux下USB抓包和分析流程

linux下USB抓包和分析流程 在windows下抓取usb包时可以通过wireshark安装时安装USBpcap来实现usb抓包&#xff0c;linux下如何操作呢&#xff1f; 是基于usbmon&#xff0c;本博客简单描述基于usbmon在linux系统上对通过usb口进行发送和接收的数据的抓包流程&#xff0c;分别描…

Matplotlib Mastery: 从基础到高级的数据可视化指南【第30篇—python:数据可视化】

文章目录 Matplotlib: 强大的数据可视化工具1. 基础1.1 安装Matplotlib1.2 创建第一个简单的图表1.3 图表的基本组件&#xff1a;标题、轴标签、图例 2. 常见图表类型2.1 折线图2.2 散点图2.3 条形图2.4 直方图 3. 图表样式与定制3.1 颜色、线型、标记的定制3.2 背景样式与颜色…

Linux:使用for+find查找文件并cp到其他目录,文件名带有空格

一、场景描述 在终端窗口中&#xff0c;用shell命令&#xff0c;批量拷贝文件到指定目录。 我是在Windows系统上&#xff0c;通过git bash终端来执行shell命令的。 二、实现过程 命令1 for filepath in find /d/LearningMaterials/数学/数学/高中/一数/偏基础&#xff08;基…

Zabbix分布式监控系统概述、部署、自定义监控项、邮件告警

目录 前言 &#xff08;一&#xff09;业务架构 &#xff08;二&#xff09;运维架构 一、Zabbix分布式监控平台 &#xff08;一&#xff09;Zabbix概述 &#xff08;二&#xff09;Zabbix监控原理 &#xff08;三&#xff09;Zabbix 6.0 新特性 1. Zabbix server高可用…

用BEVformer来卷自动驾驶-4

书接前文 前文链接&#xff1a;用BEVformer来卷自动驾驶-3 (qq.com) 上文书介绍了BEVformer是个啥&#xff0c;以及怎么实现Deformable-attention 我们继续 BEVformer的输入数据格式&#xff1a; 输入张量&#xff08;batachsize&#xff0c;queue&#xff0c;cam&#xff0c;…

工厂设计模式看这一篇就够了

本文将重点介绍几种工厂设计模式&#xff1a;简单工厂、工厂方法模式、抽象工厂模式和建造者模式。这几种设计模式在生产制造的流程下层层递进&#xff0c;可以满足不同的使用场景。在实际运用时&#xff0c;没有一个万能的工厂模式可以套用&#xff0c;要结合具体业务场景选择…

【华为GAUSS数据库】IDEA连接GAUSS数据库方法

背景&#xff1a;数据库为华为gauss for opengauss 集中式数据库 IDEA提供了丰富的各类型数据库驱动&#xff0c;但暂未提供Gauss数据库。可以通过以下方法进行连接。 连接后&#xff0c; 可以自动检查xml文件中的sql语句是否准确&#xff0c;表名和字段名是否正确还可以直接在…

基于 IoT 物联网 + 5G 技术搭建 100万台电梯智能化运维平台

随着近20年我国房地产的蓬勃发展&#xff0c;电梯已经成为人们现代生活中不可或缺的一部分&#xff0c;也是城市化建设中重要的建筑设备之一。据中国电梯行业协会统计&#xff0c;截至2022年底&#xff0c;我国电梯保有量为990万台&#xff0c;电梯运营健康度&#xff0c;减少事…

Pyro —— Sparse vs dense simulations

目录 Simulation area Sparse solving Understanding resizing Simulation area 在模拟的期间&#xff0c;pyro场都在当前容器内定义&#xff1b;开始非常小&#xff0c;随模拟的进行&#xff0c;解算器会不断的对其扩展或收缩&#xff1b;为重置流体框&#xff0c;解算器会…

Android 基础技术——addView 流程

笔者希望做一个系列&#xff0c;整理 Android 基础技术&#xff0c;本章是关于 addView 在了解 addView 流程之前&#xff0c;先回答下以下几个问题&#xff1a; PhoneWindow是什么时候创建的&#xff1f; DectorView 是什么&#xff1f; DectorView 是什么时候创建的&#xf…