【计算机网络】TCP 的三次握手和四次挥手

TCP 是面向连接的,面向连接就是数据通讯的时候需要进行三次握手,断开通讯的时候需要进行四次挥手。

1.seq(sequence number),序列号,随机生成的
2.ack(acknowledgement number),确认号,ack=seq+1
3.ACK(acknowledgement),确定序列号有效
4.SYN(synchronous),发起新连接
5.FIN(FINISH),完成

TCP 的三次握手

TCP三次握手示意图:

Client            Server|                  ||    SYN=SEQ_A     ||----------------->||                  ||  SYN=SEQ_B       ||  ACK=SEQ_A+1     ||<-----------------||                  ||    ACK=SEQ_B+1   ||    SEQ=SEQ_A+1   ||----------------->||                  |

在这些示意图中,箭头表示数据流的方向。三次握手中,Client向Server发送一个带有SYN标志的报文段,Server收到后回复一个带有SYN和ACK标志的报文段,然后Client再回复一个带有ACK标志的报文段,完成三次握手。

TCP(Transmission Control Protocol)是一种常用的传输层协议,用于在网络上建立可靠的连接。TCP的三次握手是在建立连接时进行的一系列步骤,以确保通信双方都愿意开始数据传输。下面是TCP三次握手的详细讲解:

  1. 第一次握手(SYN - 发送同步序列号):
    在建立连接之前,客户端首先向服务器发送一个带有SYN标志的TCP报文段。
    这个报文段的序列号(Seq)被设置为一个随机值(假设为A)作为初始序列号。
    客户端还将设置连接标志(SYN)以及窗口大小等信息,并在选项字段中放入一些控制信息。这个报文段的目的是告诉服务器,客户端想要建立连接,并指定初始序列号A。

  2. 第二次握手(SYN + ACK - 发送同步序列号和确认序列号):
    服务器接收到客户端的SYN报文段后,会对其进行确认。
    服务器向客户端发送一个带有SYN和ACK标志的TCP报文段,其中确认号(Ack)被设置为客户端发送的初始序列号A加1(即A+1),而服务器的初始序列号被设置为另一个随机值(假设为B)。
    服务器也会设置自己的连接标志(SYN),并在选项字段中放入一些控制信息。这个报文段的目的是告诉客户端,服务器愿意建立连接,并确认客户端的初始序列号A。

  3. 第三次握手(ACK - 发送确认序列号):
    客户端收到服务器的SYN + ACK报文段后,会向服务器发送一个带有ACK标志的TCP报文段,确认服务器的初始序列号B。
    客户端的确认号被设置为服务器发送的初始序列号B加1(即B+1),而连接标志(SYN)被置为0。此时,连接已建立,双方可以开始进行数据传输。服务器收到这个确认报文段后,也确认了连接的建立。

在这里插入图片描述

这里的 0 是 wireshark 为了直观,调整了的,原始报文中不是 0

通过这三次握手,双方确认了彼此的能力和意愿,建立了一个可靠的连接,可以进行数据传输。这种三次握手机制可以确保通信双方都同意建立连接,减少了误操作或不必要的连接。在数据传输完成后,连接可以通过四次握手来正常关闭。

TCP 的四次挥手

TCP四次挥手示意图:

Client            Server|                  ||     FIN=SEQ_X    ||----------------->||                  ||  ACK=SEQ_X+1     ||<-----------------||                  ||    FIN=SEQ_Y     ||  ACK=SEQ_X+1     ||<-----------------||                  ||  ACK=SEQ_Y+1     | |  SEQ=SEQ_X+1     ||----------------->||                  |

四次挥手中,Client首先发送一个带有FIN标志的报文段,然后Server回复一个带有ACK标志的报文段,接着Server发送一个带有FIN标志的报文段,最后Client回复一个带有ACK标志的报文段,完成四次挥手。

TCP(Transmission Control Protocol)的四次挥手是用于关闭一个已建立的连接的过程。与建立连接的三次握手类似,关闭连接需要双方都达成一致。下面是TCP四次挥手的详细讲解:

  1. 第一次挥手(FIN - 发送结束标志):
    当一方(通常是客户端)决定关闭连接时,它会向另一方(通常是服务器)发送一个带有FIN标志的TCP报文段。这个报文段表示发起方没有更多数据要发送,但是仍然愿意接收来自对方的数据。
    发起方将序列号(Seq)设置为当前已发送数据的最后一个字节的序号加1。这个报文段的目的是告诉另一方,发起方希望关闭连接。

  2. 第二次挥手(ACK - 发送确认):
    收到第一次挥手的FIN报文段后,另一方(通常是服务器)会向发起方发送一个带有ACK标志的TCP报文段,表示它已经收到了发起方的关闭请求。
    确认号(Ack)会被设置为发起方的序列号加1,表示另一方已经收到了发起方的所有数据。此时,连接进入半关闭状态,发起方仍然可以发送数据,但另一方不能。

  3. 第三次挥手(FIN - 发送结束标志):
    当另一方(通常是服务器)也准备好关闭连接时,它会发送一个带有FIN标志的TCP报文段给发起方。
    这个报文段的序列号(Seq)被设置为当前已发送数据的最后一个字节的序号加1。此时,另一方表示它已经没有更多数据要发送,并准备好关闭连接。

  4. 第四次挥手(ACK - 发送确认):
    收到第三次挥手的FIN报文段后,发起方会向另一方发送一个带有ACK标志的TCP报文段,表示它已经收到了另一方的关闭请求。
    确认号(Ack)被设置为另一方的序列号加1,表示发起方已经确认了另一方的关闭请求。此时,连接正式关闭,双方都不能再发送数据。

在这里插入图片描述

通过这四次挥手,双方完成了连接的关闭,确保彼此都知道对方已经停止发送数据,从而避免了数据丢失。这个过程保证了连接的可靠关闭,以及释放相关的资源。

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

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

相关文章

Linux安装JenkinsCLI

项目简介安装目录 mkdir -p /opt/jenkinscli && cd /opt/jenkinscli JenkinsCLI下载 wget http://<your-jenkins-server>/jnlpJars/jenkins-cli.jar # <your-jenkins-server> 替换为你的 Jenkins 服务器地址 JenkinsCLI授权 Dashboard-->Configure Glob…

希尔贝壳入选“北京市人工智能大模型高质量数据集发布(第二批)”合作企业

8月28日&#xff0c;2023中国国际服务贸易交易会通用人工智能算力论坛在石景山区举办。论坛上&#xff0c;北京市人工智能大模型高质量数据集&#xff08;第二批&#xff09;发布&#xff0c;其中包含北京希尔贝壳科技有限公司的“大模型方言口语语音数据集”和“智能会议场景高…

评估安全 Wi-Fi 接入:Cisco ISE、Aruba、Portnox 和 Foxpass

在当今不断变化的数字环境中&#xff0c;对 Wi-Fi 网络进行强大访问控制的需求从未像现在这样重要。各组织一直在寻找能够为其用户提供无缝而安全的体验的解决方案。 在本博客中&#xff0c;我们将深入探讨保护 Wi-Fi&#xff08;和有线&#xff09;网络的四种领先解决方案——…

Show that f(z)=1/z is analytic or not

See https://brainly.in/question/21838444

HVV行动之态势感知平台(一)

知攻善防&#xff0c;遇强则强&#xff01; 先介绍一下什么是HVV行动&#xff1a; 它是由公安部牵头的&#xff0c;通过组织红队和蓝队进行为期两周到三周的攻防对抗演习&#xff0c;来检测一些企业单位可能存在的网络漏洞和威胁&#xff0c;进而进行修复和加固&#xff0c;提…

0829|C++day7 auto、lambda、C++数据类型转换、C++标准模板库(STL)、list、文件操作

一、思维导图 二、【试编程】将实例化类对象写入容器后&#xff0c;写入.txt文本中&#xff0c;再重新定义一个类容器&#xff0c;将.txt中的内容读取出来&#xff0c;输出到终端 封装一个学生的类&#xff0c;定义一个学生这样类的vector容器, 里面存放学生对象&#xff08;至…

什么是RESTful API,Spring MVC如何支持RESTful架构

文章目录 &#x1f388;个人主页&#xff1a;程序员 小侯 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 ✨收录专栏&#xff1a;Java框架 ✨文章内容&#xff1a;Spring MVC支持RESTful架构 &#x1f91d;希望作者的文章能对你有所帮助&#xf…

ubuntu18.04.6的安装教程

目录 一、下载并安装virtualbox virtualbox7.0.8版本的安装 二、Ubuntu的下载与安装 ubuntu18.04.6操作系统 下载 安装 一、下载并安装virtualbox VirtualBox是功能强大的x86和AMD64/Intel64虚拟化企业和家庭使用的产品。VirtualBox不仅是面向企业客户的功能极其丰富的高…

ShardingSphere——弹性伸缩原理

摘要 支持自定义分片算法&#xff0c;减少数据伸缩及迁移时的业务影响&#xff0c;提供一站式的通用弹性伸缩解决方案&#xff0c;是 Apache ShardingSphere 弹性伸缩的主要设计目标。对于使用单数据库运行的系统来说&#xff0c;如何安全简单地将数据迁移至水平分片的数据库上…

线上批量查询物流导出到表格的操作指南

现在的生活中&#xff0c;我们经常需要查询包裹物流信息。如果一次性需要查询多个快递单号的物流信息&#xff0c;手动一个一个查询会非常麻烦。今天&#xff0c;我将向大家分享一个简单实用的方法&#xff0c;可以批量查询物流并导出到表格&#xff0c;方便随时查看。 首先&am…

【100天精通python】Day50:python web编程_Django框架使用

目录 1 安装Django Web框架 2 创建一个Django 项目 3 数据模型 3.1 在应用程序的 models.py 文件中定义数据模 3.2 创建模型的迁移文件并应用 3.2.1 查询模型对象&#xff1a; 3.2.2 创建新模型对象&#xff1a; 3.2.3 更新模型对象&#xff1a; 3.2.4 删除模型对象&a…

盘点狼人杀中的强神与弱神 并评价操作体验

最初 强神是大家对猎人的称呼&#xff0c;但随着板子的增加 强神渐渐变成了强神神牌的统称。 狼人杀发展至今板子已经非常多了&#xff0c;而每个板子都会有不同的角色。 相同的是 大部分都会希望拿到一张强力神牌&#xff0c;这样能大大提高我们玩家的游戏体验&#xff0c;但其…

【WebSocketIndexedDB】node+WebSocketIndexedDB开发简易聊天室

序幕介绍&#xff1a; WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。 讲人话就是说&#xff1a;WebSocket 使得客户端和服务器之间的数据交换变得更加简单&#xff0c;在 WebSocket API 中&#xff0c;浏览器和服务器只需要完成一次握手&#x…

正中优配:沪指震荡涨0.23%,保险、酿酒等板块走强,半导体板块下挫

1日早盘&#xff0c;沪指、深成指盘中强势震动上扬&#xff0c;创业板指回落翻绿&#xff0c;科创50指数跌超1%&#xff1b;两市半日成交缺乏5000亿元。 到午间收盘&#xff0c;沪指涨0.23%报3127.19点&#xff0c;深成指涨0.25%&#xff0c;创业板指跌0.23%&#xff0c;科创5…

数字人创作+SadTalker+GTX1080

https://github.com/OpenTalker/SadTalker 开源项目 SadTalker模型是一个使用图片与音频文件自动合成人物说话动画的开源模型&#xff0c;我们自己给模型一张图片以及一段音频文件&#xff0c;模型会根据音频文件把传递的图片进行人脸的相应动作&#xff0c;比如张嘴&#xf…

Java面试之用两个栈实现队列

文章目录 题目一、什么是队列和栈&#xff1f;1.1队列1.2栈 二、具体实现2.1 思路分析2.2代码实现 题目 用两个栈实现一个队列&#xff0c;实现在队列尾部插入节点和在队列头部删除节点的功能。 一、什么是队列和栈&#xff1f; 1.1队列 队列是一种特殊的线性表&#xff0c;…

Linux 命令大全(下)

Linux 命令大全&#xff08;上&#xff09; 本文目录 6. 网络通讯 常用命令6.1 ssh 命令 – 安全的远程连接服务器6.1.1 含义6.1.2 语法格式6.1.3 常用参数6.1.4 参考示例 6.2 netstat 命令 – 显示网络状态6.2.1 含义6.2.2 语法格式6.2.3 常用参数6.2.4 参考示例 6.3 dhclient…

Postgresql的一个bug_涉及归档和pg_wal

故障描述&#xff1a; 服务器ocmpgdbprod1&#xff0c;是流复制主节点&#xff0c;它的从节点是ocmpgdbprod2&#xff0c;两个节点的Postgresql数据库版本都是PostgreSQL 11.6&#xff0c;主节点ocmpgdbprod1配置了pg_wal归档&#xff0c;从节点ocmpgdbprod2没有配置pg_wal归档…

DVWA XSS

反射型 low 查看源代码&#xff0c;没有任何过滤 构造 medium 这里是过滤了 high 这里把双写和大小写和JavaScript都过滤了,用事件来绕过<img src0 οnerrοralert(“xss”)> impossible 这里使用htmlspecialchars进行实体转换并且输出的结果还不能使用事件来…

前端面试中Vue的有经典面试题一

1. 谈谈你对MVVM开发模式的理解 MVVM分为Model、View、ViewModel三者。 Model&#xff1a;代表数据模型&#xff0c;数据和业务逻辑都在Model层中定义&#xff1b; View&#xff1a;代表UI视图&#xff0c;负责数据的展示&#xff1b; ViewModel&#xff1a;负责监听Model中…