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

这里写目录标题

  • 前言
  • 三次握手
  • 四次挥手
  • 三次握手和四次挥手的作用
    • 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的三次握手和四次挥手机制对于网络开发人员来说是非常重要的基础知识。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

新 Java 与旧 Java 不同的 11 个原因

Java 已经很古老了吗?那些喋喋不休地谈论闪烁着灯光的前面板和软盘时代的老人们所使用的编程语言?或者它仍然很时尚,拥有所有最新的语言增强功能,可实现直观的编码和一流的性能?也许 Java 介于两者之间:一种…

二维码巡检系统开发及部署

** 凡尔码二维码巡检系统**是一种低代码平台;用户可通过平台开发好的组件像搭积木一般灵活搭建巡检管理平台和无纸化记录应用场景。 ** 凡尔码平台功能**组件:二维码管理、表单管理、流程管理、计划管理、权限管理、隐患管理、区域管理、记录管理、任务…

vue3+vite:封装Svg组件

前言 在项目开发过程中,以svg图片引入时,会遇到当hover态时图片颜色修改的场景,我们可能需要去引入另一张不同颜色的svg图片,或者用css方式修改,为了方便这种情况,需要封装svg组件来自定义宽高和颜色&…

(3)【Python数据分析进阶】Machine-Learning模型与算法应用-线性回归与逻辑回归

目录 一、Linear Regression线性回归应用 应用案例(一)——自定义数据(Custom data) 1、下载安装sklearn库 2、导入库函数 3、加载数据集 4、创建线性回归对象 5、模型训练 6、预测结果 7、绘制模型图像 8、应用模型进行…

Python小项目:还在为备份烦恼?这个tkinter项目帮你解决!

文章目录 1 引言2 Tkinter概览3 设计备份软件的界面4 文件夹选择逻辑5 备份方案介绍5.1 完全备份5.2 增量备份5.3 镜像备份 完整代码: import tkinter as tk from tkinter import filedialog, messagebox import os import shutil import filecmpdef choose_source(…

【K8S 云原生】K8S的对外服务—ingress

目录 一、K8S的Service 1、Service的作用 2、Service类型: 二、ingress 1、ingress的组成: 2、ingress资源的定义项: 三、nginx-ingress-controller暴露服务端的方式 1、DeploymentLoadBalancer模式: 1、工作流程图&…

vector讲解

在学习玩string后我们开始学习vector,本篇博客将对vector进行简单的介绍,还会对vector一些常用的函数进行讲解 vector的介绍 实际上vector就是一个数组的数据结构,但是vector是由C编写而成的,他和数组也有本质上的区别&#xff…

pandas操作excel

目录 一:创建excel 二:修改excel 三:查找excel 四:删除数据 五:合并excel数据 一:创建excel import pandas as pd # 创建DataFrame对象 data { Name: [Alice, Bob, Charlie], Age: [25, 30, 35], S…

ISA Server 2006部署网站对比nginx

2024年了,我还是第1次使用ISA Server 。没办法在维护一个非常古老的项目。说到ISA Server可能有小伙们不清楚,但是说到nginx大家应该都知道吧。虽然他们俩定位并不相同,但是本文中提到的需求,他俩是都可以实现。 网上找的到的教程…

力扣:(692. 前K个高频单词)

题目1: 题目链接 思路1:首先可以使用map来统计单词出现的次数。然后使用vector将pair存起来,接着使用stable_sort排序(要保证数据具有稳定性),然后返回前k个单词即可。 难点:需要写一个比较函数(仿函数&am…

SAP S/4HANA 2023 Fully-Activated Appliance 虚拟机版介绍

注:市面上所有在售虚拟机均为拷贝本人所作的虚拟机,存在各种技术问题,请知悉。 SAP S4HANA 2023 FAA版本内置了四个Client: 1、000:SAP初始Client,原则上不能动; 2、100:只激活了US…

java SSM网上小卖部管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM网上小卖部管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源 代码和数据库,系统主要…

【Docker篇】详细讲解容器相关命令

🎊专栏【Docker】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 🎄欢迎并且感谢大家指出小吉的问题🥰 文章目录 🛸容器🌹相关命令🍔案例⭐创建并运…

WorkPlus Meet私有化视频会议软件-构建安全高效的内网会议体验

在企业内部,高效的会议协作是推动团队协同和工作效率的关键。而内网会议系统成为了构建安全高效的内部会议体验的必要工具。作为一家领先的内网会议系统,WorkPlus Meet以其卓越的性能和智能化的功能,助力企业实现高效安全的内部会议体验。 为…

GPU与SSD间的P2P DMA访问机制

基于PCIe(Peripheral Component Interconnect Express)总线连接CPU、独立GPU和NVMe SSD的系统架构。 在该架构中,PCIe Swicth支持GPU与SSD之间快速的点对点直接内存访问(peer-to-peer, p2p DMA)。通常情况下&#xff0…

详细版Git的下载安装与配置(Windows)

一、git的下载 Git是一个非常好用的版本控制工具。下载地址如下:Git - Downloads。建议使用国内浏览器下载,因为不用翻墙,速度快。 当你用浏览器去访问上面的地址后,下载页面会自动识别你的电脑系统,如下 点击&#…

RHEL - 为网络隔离主机构建本地软件 Repo

《OpenShift / RHEL / DevSecOps 汇总目录》 文章目录 构建本地共享软件 Repo 的方法说明准备可联网主机方法1:使用 ISO 制作本地共享 Repo方法2:使用 reposync 制作本地共享 Repo方法3:制作包含特定软件的本地独享 Repo方法4:使用…

electron-vite中的ipc通信

1. 概述 再electron中,进程间的通信通过ipcMain和ipcRenderer模块,这些通道是任意和双向的 1.1. 什么是上下文隔离进程 ipc通道是通过预加载脚本绑定到window对象的electron对象属性上的 2. 通信方式 2.1. ipcMain(也就是渲染进程向主进…

WorkPlus内网通信软件的首选,助力企业实现高效内部沟通与协同

在企业内部,高效沟通是推动工作顺利进行的关键。而内网通信软件则成为了营造安全高效内部沟通环境的必要工具。作为一家领先的内网通信软件,WorkPlus以其卓越的性能和专业的功能,助力企业构建高效的内部沟通网络。 为什么选择WorkPlus作为内…

【Docker】部署和运行青龙面板:一个支持python3、javaScript、shell、typescript 的定时任务管理面板

引言 青龙面板是一个支持python3、javaScript、shell、typescript 的定时任务管理面板。 步骤 拉取镜像 从 Docker Hub 上拉取最新的 “qinglong” 镜像。 docker pull whyour/qinglong:latest启动容器 使用刚刚拉取的镜像来启动一个新的 Docker 容器。 docker run -dit \-v…