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

news2025/1/18 8:41:25

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.coloradmin.cn/o/943997.html

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

相关文章

Could not autowire. No beans of ‘DiscoveryClient‘ type found.

一、导错了包 DiscoveryClient对应有两个包&#xff1a; org.springframework.cloud.client.discovery.DiscoveryClient; com.netflix.discovery.DiscoveryClient; 目前导入的包是&#xff1a; 改成第一个包&#xff0c;发现不再报红了。

数据安全治理方案

数据安全能力建设工作并非从零开始&#xff0c;大部分组织在此前或多或少已有一些安全体系&#xff0c;基本上是围绕 信息系统和网络环境开展安全保护工作&#xff0c;主要聚焦在信息安全和网络安全&#xff1b;而数据安全是以数据为核心&#xff0c; 围绕数据安全生命周期进行…

【Java】知识点回顾

&#x1f384;欢迎来到边境矢梦的csdn博文&#x1f384; &#x1f384;本文主要梳理后端技术的Java的知识点以及回顾Java基础&#x1f384; &#x1f308;我是边境矢梦&#xff0c;一个正在为秋招和算法竞赛做准备的学生&#x1f308; &#x1f386;喜欢的朋友可以关注一下&…

SpringBootWeb 登录认证[Cookie + Session + Token + Filter + Interceptor]

目录 1. 登录功能 1.1 需求 1.2 接口文档 1.3 登录 - 思路分析 1.4 功能开发 1.5 测试 2. 登录校验 2.1 问题分析 什么是登录校验&#xff1f; 我们要完成以上登录校验的操作&#xff0c;会涉及到Web开发中的两个技术&#xff1a; 2.2 会话技术 2.2.1 会话技术介绍…

移动云发布长三角信创云电脑资源池

8月27日&#xff0c;2023长三角算力发展大会在苏州举行。中国移动云能力中心与江苏移动苏州分公司同期联合举办“移动云算力网络分论坛”&#xff0c;与各界领导、行业专家、领军企业家等分享了移动云算力调度能力新型应用、移动云“五岳”量子计算云平台的最新进展&#xff0c…

2023年Twitter营销应该知道的一些数据

2023 年的 Twitter月活跃用户数量达到了 3.539 亿。根据专家的最新估计数据&#xff08;eMarketer&#xff0c;2022 年&#xff09;&#xff0c;这一数字在前一年回升了 3.9%&#xff0c;在全球社交媒体用户总数中占比为 9.4 %。 明显可以看出&#xff0c;马斯克的收购对 Twit…

冠达管理:核污染防治板块热度不减,建工修复等多只个股涨停

日本福岛核污染水排海引发商场担忧&#xff0c;核污染防治概念股表现持续活跃。 8月28日&#xff0c;建工修复&#xff08;300958.SZ&#xff09;、中电环保&#xff08;300172.SZ&#xff09;、捷强配备&#xff08;300875.SZ&#xff09;20CM强势涨停&#xff0c;中广核技&a…

实现人物关系图还在用Echarts吗?快试试relation-graph

关于relation-graph 支持Vue和React的 关联关系图谱组件&#xff0c;可以展示如组织机构图谱、股权架构图谱、集团关系图谱等知识图谱&#xff0c;可提供多种图谱布局&#xff0c;包括树状布局、中心布局、力学布局自动布局等。官网 安装使用 一&#xff0c;通过nodejs开发v…

课程表00

题目链接 课程表 题目描述 注意点 prerequisites[i] 中的所有课程对 互不相同prerequisites[i] [ai, bi] &#xff0c;表示如果要学习课程 ai 则 必须 先学习课程 binumCourses表示这个学期必须选修 numCourses 门课程prerequisites[i].length 2 解答思路 最初想到的是使…

idea --Git Commit Template插件

Git Commit Template是一款免费的IntelliJ IDEA插件&#xff0c;用于提供Git提交模板。该插件可以帮助开发者编写规范的Git提交信息&#xff0c;提高代码管理效率。 首先安装插件&#xff1a; 使用Git Commit Template插件: 注&#xff1a;long description和Breaking changes…

亚马逊卖家必备的3款AI作图工具

Mokker Mokker AI - Instant AI Background Replacement 作为亚马逊的卖家&#xff0c;想要做好看的产品图&#xff0c;如果你此时缺少拍摄设备和环境&#xff0c;那么就可以用这个工具帮你。Mokker使用AI技术&#xff0c;可以帮你智能生成背景图。只需要上传产品图&#xff…

C# task多线程创建,暂停,继续,结束使用

1、多线程任务创建 private void button1_Click(object sender, EventArgs e) //创建线程{CancellationToken cancellationToken tokensource.Token;Task.Run(() > //模拟耗时任务{for (int i 0; i < 100; i){if (cancellationToken.IsCancellationRequested){return;…

习题练习 C语言(暑期)

编程能力小提升&#xff01; 前言一、转义字符二、重命名与宏定义三、三目运算符四、计算日期到天数转换五、计算字符串长度六、宏定义应用七、const常量八、C语言基础九、const常量&#xff08;二&#xff09;十、符号运算十一、记负均正十二、SWITCH&#xff0c;CASE十三、错…

元素隐式具有 “any“ 类型,因为类型为 “string“ 的表达式不能用于索引类型

今天在写ts文件的过程中&#xff0c;我遍历了一个对象&#xff0c;然后取值的时候发现爆红,如下图&#x1f447; 经过我一通排查&#xff08;原因我对ts也不是很熟练&#xff09;&#xff0c;了解到大致意思是说key的值类型不是string类型&#xff0c;在javascript中是默认给你…

金融行业步入大模型时代,AI重塑生态与价值

中国人工智能事业尽管起步较晚&#xff0c;但呈现出飞速发展的势头&#xff0c;自2014年起至今&#xff0c;经历了从创业高潮到应用部署再到技术瓶颈的全面生命周期&#xff0c;而今正迈入大规模商业变现的崭新阶段。围绕生成式AI浪潮下&#xff0c;谁能率先落地的AIGC应用&…

若依前端Vue3模板——自定义主题+炫彩主题

文章目录 若依框架新增自定义主题风格实现结果实现步骤默认主题的设置布局设置图标文件布局组件 准备CSS变量对状态管理库中的主题名称进行匹配logo图标组件左侧导航栏菜单组件顶部导航栏组件 炫彩主题实现结果实现步骤布局设置布局组件 其他展示内容的路由出口布局设置-开启to…

计算机网络aaaaaaa

差错检测 在一段时间内&#xff0c;传输错误的比特占所传输比特总数的比率称为误码率BER(Bit Error Rate) 11111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111…

HPC是如何助力AI推理加速的?

高性能计算&#xff08;High-Performance Computing&#xff0c;HPC&#xff09;通过提供强大的计算能力、存储资源和网络互联&#xff0c;可以显著地辅助人工智能&#xff08;AI&#xff09;应用更快地进行训练和推断。那么&#xff0c;HPC是如何助力AI推理加速的&#xff1f;…

电脑识别不了固态硬盘怎么办?

在使用固态硬盘时&#xff0c;可能会出现电脑无法识别的情况&#xff0c;这时我们就无法使用固态硬盘中的数据。那么&#xff0c;电脑识别不了固态硬盘怎么办&#xff1f; 为什么电脑识别不了固态硬盘&#xff1f; 一般来说&#xff0c;电脑识别不了固态硬盘是因为以下3个原因…

PO设计模式是selenium自动化测试中最佳的设计模式之一

Page Object Model&#xff1a;PO设计模式是selenium自动化测试中最佳的设计模式之一&#xff0c;主要体现在对界面交互细节的封装&#xff0c;也就是在实际测试中只关注业务流程就OK了传统的设计中&#xff0c;在新增测试用例之后&#xff0c;代码会有以下几个问题&#xff1a…