当前位置: 首页 > article >正文

TCP 三次握手建立连接详解

文章目录

  • 一、三次握手流程
    • 1、第一次握手
    • 2、第二次握手
    • 3、第三次握手
  • 二、引申问题
    • 1、报文丢失,会发生什么?
      • 1.1、第一次握手丢失
      • 1.2、第二次握手丢失
      • 1.3、第三次握手丢失
    • 2、为什么 ISN(Initial Sequence Number,初始序列号) 不固定
    • 3、为什么只有第三次握手的时候可以携带数据
    • 4、为什么是三次握手,而不是两次、四次

一、三次握手流程

在这里插入图片描述
一开始,客户端和服务端都处于 CLOSED 状态(CLOSED 是一个假想的起始点, 并不是真实状态),先是服务端主动监听某个端口,处于 LISTEN 状态

1、第一次握手

在这里插入图片描述
客户端会随机初始化序号(client_isn),然后将其填入 TCP 首部的「序列号」字段中,接着把 SYN 标志位设成 1,最后发送 SYN 报文给服务端,该报文不包含应用层数据,之后客户端处于 SYN_SENT 状态

2、第二次握手

在这里插入图片描述
服务端收到客户端的 SYN 报文后,也随机初始化自己的序号(server_isn),然后将其填入 TCP 首部的「序列号」字段中,其次将 client_isn + 1 填入 TCP 首部的「确认应答号」字段中,接着把 SYN 和 ACK 标志位都设成 1,最后发送 SYN+ACK 报文给客户端,该报文也不包含应用层数据,之后服务端处于 SYN_RCVD 状态

3、第三次握手

在这里插入图片描述

  • 客户端收到服务端的 SYN+ACK 报文后,将 server_isn + 1 填入 TCP 首部的「确认应答号」字段中,接着把 ACK 标志位设成 1,最后发送该报文给服务端,这次报文可以携带客户端到服务端的数据,之后客户端处于 ESTABLISHED 状态
  • 服务端收到客户端发来的报文后,也进入 ESTABLISHED 状态

二、引申问题

1、报文丢失,会发生什么?

1.1、第一次握手丢失

1.2、第二次握手丢失

1.3、第三次握手丢失

2、为什么 ISN(Initial Sequence Number,初始序列号) 不固定

3、为什么只有第三次握手的时候可以携带数据

4、为什么是三次握手,而不是两次、四次

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

TCP 三次握手建立连接详解

文章目录 一、三次握手流程1、第一次握手2、第二次握手3、第三次握手 二、引申问题1、报文丢失,会发生什么?1.1、第一次握手丢失1.2、第二次握手丢失1.3、第三次握手丢失 2、为什么 ISN(Initial Sequence Number,初始序列号) 不固定3、为什么…...

高海拔和远距离的人员识别:面部、体型和步态的融合

大家读完就觉得有帮助记得关注和点赞!!! 摘要 我们解决了在无约束环境中进行全身人体识别的问题。这个问题出现在诸如IARPA高空和远距离生物识别与身份识别(BRIAR)计划等监视场景中,其中生物识别数据是在长…...

Golang实践录:在go中使用curl实现https请求

之前曾经在一个 golang 工程调用 libcur 实现 https的请求,当前自测是通过的。后来迁移到另一个小系统出现段错误,于是对该模块代码改造,并再次自测。 问题提出 大约2年前,在某golang项目使用libcurl进行https请求(参…...

自然语言处理入门级项目——文本分类

文章目录 前言1.数据预处理1.1数据集介绍1.2数据集抽取1.3划分数据集1.4数据清洗1.5数据保存 2.样本的向量化表征2.1词汇表2.2向量化2.3自定义数据集2.4备注 结语 前言 本篇博客主要介绍自然语言处理领域中一个项目案例——文本分类,具体而言就是判断评价属于积极还…...

如何利用大模型对文章进行分段,提高向量搜索的准确性?

利用大模型对文章进行分段以提高向量搜索准确性,需结合文本语义理解、分块策略优化以及向量表示技术。以下是系统性的解决方案: 一、分块策略的核心原则 语义完整性优先 分块需确保每个文本单元在语义上独立且完整。研究表明,当分块内容保持单一主题时,向量嵌入的语义表征能…...

一发入魂:极简解决 SwiftUI 复杂视图未能正确刷新的问题(上)

概述 各位似秃非秃小码农们都知道,在 SwiftUI 中视图是状态的函数,这意味着状态的改变会导致界面被刷新。 但是,对于有些复杂布局的 SwiftUI 视图来说,它们的界面并不能直接映射到对应的状态上去。这就会造成一个问题&#xff1…...

深入理解 Dijkstra 算法:原理、实现与优化

算法核心思想 Dijkstra算法采用贪心策略,其核心思想可以概括为: 初始化:设置起点到自身的距离为0,到其他所有点的距离为无穷大 迭代处理: 从未处理的顶点中选择当前距离起点最近的顶点 标记该顶点为已处理 通过该顶…...

Postman中https和http的区别是什么?

作为每天与API打交道的测试工程师,理解HTTP与HTTPS的区别不仅关乎协议本身,更直接影响测试方案设计。本文将用测试视角揭示二者在Postman中的关键差异,并分享实战排查技巧。 一、协议层本质差异(测试工程师需要知道的底层原理) 1. 安全传输机制对比 特性HTTPHTTPS加密方…...

软件设计师-下午题-试题4(15分)

目录 1 回溯法 1.1 N皇后问题 1.1.1 非递归求解N皇后问题 1.1.2 递归求解N皇后问题 1.2 真题 2 分治法 2.1 真题 3 动态规划法 3.1 0-1背包问题 3.2 真题 1 回溯法 1.1 N皇后问题 上图Q4与Q2在同一列且与Q1在同一斜线,先回溯到上一个皇后改变Q3皇后的位置…...

《隐私计算:数据安全与隐私保护的新希望》

一、引言 在数字化时代,数据已成为企业和组织的核心资产。然而,数据的收集、存储和使用过程中面临着诸多隐私和安全挑战。隐私计算作为一种新兴技术,旨在解决数据隐私保护和数据共享之间的矛盾。本文将深入探讨隐私计算的基本概念、技术原理、…...

leetcode二叉树相关题目复习(C语言版)

目录 1.单值二叉树 2.相同的树 3.对称二叉树 4.二叉树的前序遍历 5.另一颗树的子树 1.单值二叉树 思路1: 判断根节点、左节点与右节点的值是否相等,因为正向判断(即判断三值相等返回true)比较麻烦(不能根节点满足…...

第十九次博客打卡

今天学习的内容是Java中的常见循环。 在 Java 中,常见的循环结构主要有以下几种:for 循环、while 循环、do-while 循环以及增强型 for 循环(也称为 for-each 循环)。 1. for 循环 for 循环是一种非常灵活的循环结构&#xff0c…...

【Pandas】pandas DataFrame describe

Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.any(*[, axis, bool_only, skipna])用于判断…...

机器人示教操作

机器人基础操作 **ES机器人试教操作知识** **1. 视角移动** **1.1 基础模式** - 关节轴控制:通过关节1至关节6实现单轴正反转移动 - 直线移动:通过X/Y/Z坐标轴沿指定方向直线移动 - 旋转移动:通过RX/RY/RZ坐标轴绕指定轴旋转 **1.2 步进模式…...

浅聊一下数据库的索引优化

背景 这里的索引说的是关系数据库(MSSQL)中的索引。 本篇不是纯技术性的内容,只是聊一次性能调优的经历,包含到一些粗浅的实现和验证手段,所以,大神忽略即可。 额…对了,笔者对数据库的优化手段…...

山东大学软件学院软件工程计算机图形学复习笔记(2025)

写在前面: 现在是考完试的第二天,考试的内容还是有一部分没有复习到的…… 根据三角形的3个顶点坐标和内部某点坐标D,写出点D的基于面积的权重坐标Bresenham的算法描述与改进策略(这里ppt上很不清晰)以及直线反走样的…...

【Docker】Docker Compose方式搭建分布式内存数据库(Redis)集群

文章目录 开发环境开发流程运行效果Docker Desktop桌面中的Redis结点启动图Redis结点1的打印日志情况图 配置代码命令行启动配置文件: README.md删除集群信息新建数据目录本地Redis的结点的域名,并添加到/etc/hosts文件的末尾域名映射启动集群结点创建集群关闭集群结点 redis-c…...

如何在 Bash 中使用 =~ 操作符 ?

在 Bash 脚本世界中,有各种操作符可供我们使用,使我们能够操作、比较和测试数据。其中一个操作符是 ~ 操作符。这个操作符经常被忽视,但功能非常强大,它为我们提供了一种使用正则表达式匹配字符串模式的方法。 ~ 操作符语法 语法…...

科学养生指南:打造健康生活

在快节奏的现代生活中,健康养生成为人们关注的焦点。科学养生无需复杂理论,掌握以下几个关键要素,就能为身体构筑坚实的健康防线。​ 合理饮食是健康的基础。世界卫生组织建议,每天应摄入至少 5 份蔬菜和水果,保证维生…...

华为OD机试真题——单词接龙(首字母接龙)(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现

2025 A卷 100分 题型 本专栏内全部题目均提供Java、python、JavaScript、C、C++、GO六种语言的最佳实现方式; 并且每种语言均涵盖详细的问题分析、解题思路、代码实现、代码详解、3个测试用例以及综合分析; 本文收录于专栏:《2025华为OD真题目录+全流程解析+备考攻略+经验分…...

React构建组件

React构建组件 React 组件构建方式详解 React 组件的构建方式随着版本迭代不断演进,目前主要有 函数组件 和 类组件 两种核心模式,并衍生出多种高级组件设计模式。以下是完整的构建方式指南: 文章目录 React构建组件React 组件构建方式详解…...

计算机网络-MPLS VPN基础概念

前面几篇文章我们学习了MPLS的标签转发原理,有静态标签分发和LDP动态标签协议,可以实现LSR设备基于标签实现数据高效转发。现在开始学习MPLS在企业实际应用的场景-MPLS VPN。 一、MPLS VPN概念 MPLS(多协议标签交换)位于TCP/IP协…...

基于TouchSocket实现WebSocket自定义OpCode扩展协议

基于TouchSocket实现WebSocket自定义OpCode扩展协议 前言一、WebSocket OpCode规范速览二、实现示例:协同编辑光标同步1. 客户端发送实现2. 服务端接收处理 三、应用场景分析1. 实时协作系统2. 物联网控制协议3. 游戏实时交互 四、协议设计建议1. 帧结构优化2. 性能…...

【Linux系列】bash_profile 与 zshrc 的编辑与加载

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

Spring Boot中的拦截器!

每次用户请求到达Spring Boot服务端,你是否需要重复写日志、权限检查或请求格式化代码?这些繁琐的“前置后置”工作让人头疼!好在,Spring Boot拦截器如同一道智能关卡,统一处理请求的横切逻辑,让代码优雅又…...

基于 Spring Boot 瑞吉外卖系统开发(十五)

基于 Spring Boot 瑞吉外卖系统开发(十五) 前台用户登录 在登录页面输入验证码,单击“登录”按钮,页面会携带输入的手机号和验证码向“/user/login”发起请求。 定义UserMapper接口 Mapper public interface UserMapper exte…...

计算机网络笔记(二十三)——4.5IPv6

4.5.1IPv6的基本首部 IPv6 的基本首部相对于 IPv4 进行了重大简化和优化,固定长度为 40 字节,大幅提升了路由器的处理效率。以下是各字段的详细说明: IPv6 基本首部字段组成 字段名位数作用描述版本 (Version)4 bits固定值为 6&#xff0c…...

推荐一个Winform开源的UI工具包

从零学习构建一个完整的系统 推荐一个开源、免费的适合.NET WinForms 控件的套件。 项目简介 Krypton是一套开源的.Net组件,用于快速构建具有丰富UI交互的WinForms应用程序。 丰富的UI控件,提供了48个基础控件,如按钮、文本框、标签、下拉…...

位与运算

只有当除数是 2 的幂次方(如 2、4、8、16...)时,取模运算才可以转换为位运算。 int b 19;int a1 b % 16; // 传统取模运算int a2 b & 15; // 位运算替代取模printf("b %d\n", b);printf("b %% 8 %d\n",…...

算法备案如何判断自己的产品是否具备舆论属性

判断互联网产品是否具备舆论属性或社会动员能力,需要结合《具备舆论属性或社会动员能力的互联网信息服务安全评估规定》法规及实际功能、用户规模、信息传播方式等综合因素判定。 一、舆论属性判断标准 (1)服务功能与形式 信息交互功能&am…...