TCP的三次握手过程

news2024/11/26 16:34:26

TCP 是面向连接的协议,所以使用 TCP 前必须先建立连接,而建立连接是通过三次握手来进行的。三次握手的过程如下图:

刚开始客户端处于 closed 的状态,服务端处于 listen 状态

第一次握手:客户端给服务端发一个 SYN 报文,客户端会随机初始化序号(client_isn)。此时客户端处于 SYN_SEND 状态。此状态下将此序号置于 TCP 首部的「序号」字段中,同时把 SYN 标志位置为 1,表示 SYN 报文。接着把第一个 SYN 报文发送给服务端,表示向服务端发起连接,该报文不包含应用层数据,之后客户端处于 SYN_SEND 状态。

第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且服务端也是也随机初始化自己的序号(server_isn),将此序号填入 TCP 首部的「序号」字段中,同时会把客户端的 client_isn + 1 作为 ACK 的值,表示自己已经收到了客户端的 SYN,接着把 SYNACK 标志位置为 1。最后把该报文发给客户端,该报文也不包含应用层数据,之后服务端处于 SYN_RCVD 状态。

 第三次握手:客户端收到服务端 SYN 报文之后,还要向服务端回应最后一个应答 ACK 报文,当然,也是一样把服务器的 server_isn + 1 作为 ACK 的值,把报文发送给服务端,表示已经收到了服务端的 SYN 报文,这次报文可以携带客户到服务端的数据,这时候客户端处于 established 状态。

服务器收到 ACK 报文之后,也处于 established 状态,此时,双方以建立起了链接,客户端和服务端就可以相互发送数据了。

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

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

相关文章

python_day10_复写,类型注解

复写:重写父类属性 class Phone:IMEI Noneproducer "XM"def call_by_5g(self):print("5g网络")# 复写 class myPhone(Phone):producer "HUAWEI"def call_by_5g(self):print("复写")# 调用父类成员:方式1# print(f"…

Notepad++ 安装 compare 插件比较文本

1、打卡Notepad软件,找到插件选项,若是英文版的,则对应选择Plugins->Plugins admin: 2、搜索compare插件,点击安装: 3、此时会弹出一个下载插件页面: 4、很可惜,我网络原因&#…

[游戏开发][Unity] TPS射击游戏相机实现

技术难点:由于是第三人称射击游戏,角色和相机之间有夹角,所以枪口点和准星是有误差的,下面是和平精英手游截图,我用AK射击zhuzi using System.Collections; using System.Collections.Generic; using UnityEngine;publ…

MyBatis 系列2 -- 增加、删除、修改操作

1. 前言 上一系列介绍了MyBatis的背景,以及为什么我们使用MyBatis进行操作数据库,还实现了使用MyBatis进行查询数据库的,接下来我们继续将使用MyBatis操作数据库的其他三种基本操作进行总结. 目录 1. 前言 2. 增加用户操作 3. 修改用户操作 4. 删除用户操作 5. 多表查询操…

unity背景缓动动效

这算是一个很常见的小功能,比如我们在玩横版游戏的时候,背景动画会以一定的频率运动,其实现方式也有很多种。 比如,使用UGUI的imageanimtion动画的方式,自己k桢实现。 还可以使用材质球本身的功能来实现,关…

datatables.editor 2.2 for PHP/JS/NodeJS Crack

使用数据表编辑器在几分钟内创建自定义、完全可编辑的表 编辑器添加了三种编辑模式,以适应任何类型的应用程序 新增功能 编辑 删除 搜索: 名字位置办公室开始日期工资名字位置办公室开始日期工资佐藤爱里会计东京2008-11-28$162,700安吉莉卡拉…

linux服务器中安装java JDK1.8版本

我们远程连接自己的linux服务器 然后 我们先执行 sudo yum update更新一下软件包 然后 有个需要选择的地方 按y 然后 我们可以直接用 yum 来安装Java 1.8版本 执行 sudo yum install java-1.8.0-openjdk然后 问你是否选择按 y即可 搞完之后 我们检查一下 输入 java -vers…

Elasticsearch:什么是矢量搜索以及它如何改进搜索结果

释放矢量搜索的力量:提高搜索结果效率 想象一下这样一个世界:搜索引擎不仅能理解你输入的单词,还能理解它们背后的上下文和含义。 这就是矢量搜索发挥作用的地方,它彻底改变了我们查找信息的方式并改善了用户的搜索体验。 在本文…

Erdas专题图制作

1.导入需要做图的数据 2.在新建一个地图view 3.绘制图框 出现以下对话框,在已打开的Viewer中图象上任意位置点一下 框选需要绘制的区域 框选完成后,回到窗口,再次确定输出地图所包含的实际区域,点击ok即可完成框选 得到如下图像框…

【Python】数据可视化利器PyCharts在测试工作中的应用

点击跳转原文:【Python】数据可视化利器PyCharts在测试工作中的应用 实际应用:常态化性能压测数据统计 import random from pyecharts.charts import Line, Bar, Grid, Pie, Page from pyecharts import options as opts # 查询过去 8 次数据 time_rang…

序列模型学习

1、序列模型的应用场景(RNN) (1)、在进行语音识别时,给定了一个输入音频片段 𝑥,并要求输出对应的文字记录 𝑦。这个 例子里输入和输出数据都是序列模型,因为 &#x1…

动态规划——买卖股票的最佳时机含手续费

题目链接 leetcode在线oj题——买卖股票的最佳时机含手续费 题目描述 给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格 ;整数 fee 代表了交易股票的手续费用。 你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果…

美的代工厂雪祺电气过会:拟募资6亿元,产能利用率下滑仍要扩产

撰稿|行星 来源|贝多财经 近日,深圳证券交易所主板披露的信息显示,合肥雪祺电气股份有限公司(以下简称“雪祺电气”)获得上市委会议通过。据贝多财经了解,雪祺电气的上市申请材料于2023年2月28日获得受理。 天眼查信…

Ceph 块存储系统 RBD 接口

-创建 Ceph 块存储系统 RBD 接口- 1、创建一个名为 rbd-demo 的专门用于 RBD 的存储池 ceph osd pool create rbd-demo 64 642、将存储池转换为 RBD 模式 ceph osd pool application enable rbd-demo rbd3、初始化存储池 rbd pool init -p rbd-demo # -p 等同于 --pool4、…

前端多行文本省略号

.title {height: 4rem;line-height: 2rem;// 多行文本省略号overflow: hidden;font-size: 1.4rem;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;}

Rancher 系列文章-Rancher 升级

概述 之前在 天翼云上用 4 台机器安装了一个 1 master(及 etcd) 3 node 的 K3S 集群,并在其上使用 Helm 安装了 Rancher 2.6.3 版本。 前几天发现 Rancher 官方推荐的最新版为:v2.6.4 所以决定先后对 Rancher 和 K3S 集群进行升级。 根据…

迁移到强化学习的 6 个理由

胡巴雷拉 从 https://en.wikipedia.org/wiki/Reinforcement_learning 一、说明 强化学习(RL)是机器学习的一个领域,涉及智能体应该如何在环境中采取行动,以最大化累积奖励的概念。强化学习是三种基本的机器学习范式之一&#xff…

RHCSA/RHCE考试模拟环境搭建

RHCSA/RHCE考试模拟环境搭建 1. 使用VMware workstation部署2. 使用U盘通过物理服务器部署1. 使用VMware workstation部署 RHCSA环境内存至少16G,RHCE环境内存至少12G,处理器配置8核   网络适配器选择NAT方式   取消显示器的“加速3D图形”:   另外添加一块硬…

Time Series Classification

时间序列分类 我第一次遇到时间序列分类的概念时,我最初的想法是:我们如何对时间序列进行分类?时间序列分类的数据是什么样子的? 可以想象,时间序列分类数据不同于常规分类问题,因为属性具有有序的序列。…

【业务功能篇47】 idea自动生成代码插件EasyCode

业务越来越多需求的情况下,对应的表也是逐渐增多,许多的文件都是一些重复操作,比如表的实体类,mapper接口类,xml映射文件,业务层接口,接口实现类等。亟需一个自动化生成固定代码文件的工具&…