🐳第一部分:什么是TCP和UDP?

先给结论:TCP 和 UDP 都是传输层协议,负责把数据从一台电脑 “搬” 到另一台电脑,但它们的 “搬运风格” 完全不同

📦 比喻:TCP 像 "打电话",UDP 像 "写信"

  • TCP(Transmission Control Protocol,传输控制协议)
    就像打电话—— 必须先 “拨通对方号码”(三次握手建立连接),通话中能"实时确认对方听到"(通过确认应答、重传机制保障可靠),挂电话前还要"说清楚再见"(四次挥手断开连接)。
    核心是双向确认、实时反馈,确保对话完整、有序。
  • UDP(User Datagram Protocol,用户数据报协议)
    就像写信—— 写好内容、填完地址,直接丢进邮筒(无需确认对方是否在线)。信寄出去后,不管对方收没收到、内容是否完整(丢包、乱序不管),自己的 "发送任务 "就结束了。
    核心是简单快捷、无需等待,追求 “发出去就行”

📌 一句话总结:

TCP 像"实时电话",追求稳、准、全;UDP 像 "投信",追求快、简、省

🐳第二部分:TCP的三次握手和四次挥手

2.1 TCP的三次握手🌈

🤝1.第一次握手(客户端→服务器)
  • SYN 标志位:此时 SYN 标志位被置为 1,表示客户端希望与服务器建立一个 TCP 连接。
  • 序列号(Sequence Number,seq):客户端会随机生成一个初始序列号,比如记为 x 。这个序列号用于标识客户端在这个连接中发送的第一个字节的数据,后续发送的数据会基于这个序列号进行编号。 比如后续发送的数据长度为 100 字节,那下一个数据段的起始序列号就是 x + 100。

在第一次握手时,客户端向服务器发送一个带有 SYN 标志位且包含初始序列号 x 的 TCP 报文段,此时该报文段不包含 ACK 标志位,因为还没有收到服务器的确认信息。

🤝2.第二次握手(服务器→客户端)
  • SYN 标志位:同样被置为 1 ,这是因为服务器在收到客户端的连接请求后,也同意建立连接,所以使用 SYN 标志位来同步自己的初始序列号。
  • 序列号(seq):服务器也会随机生成一个初始序列号,比如记为 y 。
  • ACK 标志位:被置为 1,表示服务器对客户端发送的 SYN 报文进行确认。
  • 确认号(Acknowledgment Number,ack):其值为客户端初始序列号 x 加 1,即 ack = x + 1 。这表明服务器已经成功收到了客户端的 SYN 报文,并且期望客户端下一次发送的数据从序列号 x + 1 开始。

所以,第二次握手时服务器发送的报文段同时包含了 SYN 和 ACK 标志位,以及服务器自己的初始序列号 y 和对客户端的确认号 x + 1。

🤝3.第三次握手(客户端→服务器)
  • ACK 标志位:被置为 1,表示客户端对服务器发送的 SYN + ACK 报文进行确认。
  • 确认号(ack):其值为服务器初始序列号 y 加 1,即 ack = y + 1 。这意味着客户端已经成功收到了服务器的 SYN + ACK 报文,并且期望服务器下一次发送的数据从序列号 y + 1 开始。
  • 序列号(seq):其值为客户端在第一次握手时发送的初始序列号 x 加 1,即 seq = x + 1 ,这是因为在第一次握手时客户端发送的 SYN 报文也占用了一个序列号

第三次握手时,客户端发送的报文段主要是一个仅包含 ACK 标志位的确认报文,以及对服务器的确认号 y + 1 和自己的序列号 x + 1。

总结

通过这三次握手,客户端和服务器双方都确认了彼此的收发能力正常, 并且就各自的初始序列号达成了一致,从而建立起一个可靠的 TCP 连接,为后续的数据传输做好了准备。

2.2 TCP的四次挥手🌈

❄️一、【核心逻辑】四次挥手的 “灵魂”

为什么需要四次挥手?因为 TCP 是全双工通信(双方可以同时发数据),所以断开连接时:

  1. 客户端 → 服务器:"我要关了(FIN)"
  2. 服务器 → 客户端:"收到,等我发完剩余数据(ACK)"
  3. 服务器 → 客户端:"我也关了(FIN)"
  4. 客户端 → 服务器:"收到,确认关闭(ACK)"
❄️二、【逐次拆解】四次挥手的报文细节
🤝1. 第一次挥手(客户端 → 服务器):“我没数据要发了,准备关”
  • 行为:客户端主动发起断开,发送 FIN 报文。
  • 关键字段
    • FIN 标志位:置为 1 → 告诉服务器 “我没数据要发了,准备关闭连接”。
    • 序列号(seq):填 u → 表示 “这是我最后发的字节流的序列号”(u 是客户端当前已发数据的最后一个序列号 + 1)。
    • 确认号(ack):填 v → 表示 “我确认收到你之前发的序列号到 v - 1 的数据”(v 是服务器最后一次 ACK 的确认号)。
  • 类比:你打电话说 “我这边说完了,准备挂了”,并告诉对方 “我最后说的内容是第 u 字节”。
🤝2. 第二次挥手(服务器 → 客户端):“收到关闭请求,等我处理完剩余数据”
  • 行为:服务器收到 FIN 后,先回复 ACK 确认 “收到关闭请求”,但不立即关闭(可能还有数据没发完)。
  • 关键字段
    • ACK 标志位:置为 1 → 告诉客户端 “我收到你的关闭请求了”。
    • 序列号(seq):填 v → 表示 “这是我当前要发的字节流的序列号”(v 是服务器已发数据的最后一个序列号 + 1)。
    • 确认号(ack):填 u + 1 → 表示 “我确认收到你 seq = uFIN 报文,期望你后续(如果有)从 u + 1 开始发”(但客户端已经没数据发了)。
  • 类比:对方说 “好的,我知道你要挂了,等我把最后几句话说完”,并确认 “你最后说的是第 u 字节,我记住了”。
🤝3. 第三次挥手(服务器 → 客户端):“我也没数据发了,你可以关了”
  • 行为:服务器处理完所有剩余数据后,主动发送 FIN 报文,告诉客户端 “我也没数据了,现在可以关连接了”。
  • 关键字段
    • FIN 标志位:置为 1 → 告诉客户端 “我也没数据要发了,准备关闭”。
    • 序列号(seq):填 w → 表示 “这是我最后发的字节流的序列号”(w 是服务器处理完剩余数据后的最后一个序列号 + 1)。
    • 确认号(ack):填 u + 1 → 同第二次挥手,继续确认客户端的 FIN 报文。
  • 类比:对方说 “我说完了,你可以挂了”,并告诉客户端 “我最后说的内容是第 w 字节”。
🤝4. 第四次挥手(客户端 → 服务器):“收到关闭请求,确认关闭”
  • 行为:客户端收到服务器的 FIN 后,回复 ACK 确认 “收到关闭请求”,并等待 2MSL 时间(确保服务器收到 ACK,避免服务器重发 FIN)后关闭连接。
  • 关键字段
    • ACK 标志位:置为 1 → 告诉服务器 “我收到你的关闭请求了”。
    • 序列号(seq):填 u + 1 → 表示 “这是我回应你的 ACK 报文的序列号”(客户端已无数据发,序列号延续之前的逻辑)。
    • 确认号(ack):填 w + 1 → 表示 “我确认收到你 seq = wFIN 报文,期望你后续(如果有)从 w + 1 开始发”(但服务器也没数据发了)。
  • 类比:你说 “好的,我知道你说完了,现在彻底挂了”,并确认 “你最后说的是第 w 字节,我收到了”。

完美撒花~

Linux的常见命令:Linux常见的命令(超实用!!!!)-CSDN博客

Linux中jar包脚本:在Linux环境安装JDK17(保姆级教程)_linux安装jdk17-CSDN博客

在Docker里面装PostgreSQL:在Docker里面装PostgreSQL(保姆级别)_docker安装postgresql,设置时区,日志挂载出来,配置文件挂载出来-CSDN博客

在Docker中下载Redis和配置:在Docker中下载Redis和配置(保姆级别)_docker 下载redis-CSDN博客

在Docker中下载MySql和配置:在Docker中下载MySql和配置(超详细!!!)_mysql docker镜像下载-CSDN博客

在Linux系统中安装Docker:在Linux系统中安装Docker(保姆级别)_linux安装docker csdn-CSDN博客

阿里云服务器的购买以及远程连接:阿里云服务器入门教程:购买,配置,远程连接(保姆级别)-CSDN博客

在Linux环境安装JDK17:在Linux环境安装JDK17(保姆级教程)_linux安装jdk17-CSDN博客

在Linux环境安装Redis:在Linux环境安装Redis(保姆级教程)_linux 安装最新版redis-CSDN博客

java中的stream流:Java中的Stream流(保姆级别!!)_流(streams)java,可以定时嘛-CSDN博客

保姆级别idea关联数据库的方式:保姆级别IDEA关联数据库方式、在IDEA中进行数据库的可视化操作(包含图解过程)-CSDN博客

Linux的访问权限:Linux的访问权限(保姆级别)-CSDN博客

如何优雅删除Docker镜像和容器:如何优雅删除Docker镜像和容器(保姆级别)-CSDN博客

最实用的vim指令:最实用的Vi/Vim指令汇总(上手超快!!!)_实用vim-CSDN博客

Git、Gitee、GitHub、GitLab完整讲解:从基础到进阶:

Git、Gitee、GitHub、GitLab完整讲解:从基础到进阶-CSDN博客

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

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

相关文章

2024年测绘程序设计比赛--空间探索性分析(数据为2025年第三次模拟数据)

想要在2026年参加这个比赛的&#xff0c;可以加入小编和其它大佬所建的群242845175一起来备赛&#xff0c;为2026年的比赛打基础&#xff0c;也可以私信小编&#xff0c;为你答疑解惑一、读写文件 internal class Read {public static List<Point> pts new List<Poin…

力扣 hot100 Day68

84. 柱状图中最大的矩形 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。 求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 class Solution { public:int largestRectangleArea(vector<int>&…

生成式AI时代,Data+AI下一代数智平台建设指南

DataAI下一代数智平台建设指南一、生成式AI时代的五大数据挑战二、驱动DataAI平台建设的核心要素主动选择&#xff1a;构建竞争壁垒被动应对&#xff1a;解决现有痛点三、DataAI平台的六大关键能力四、腾讯云DataAI产品方案与实践1. 数据与AI协同层2. 开发与治理层3. 存储与计算…

FPGA学习笔记——SPI通讯协议简介

目录 一、SPI通讯协议简介 二、SPI物理层 三、SPI协议层 1.通讯模式 &#xff08;一&#xff09;模式零 &#xff08;二&#xff09;模式一 &#xff08;三&#xff09;模式二 &#xff08;四&#xff09;模式三 2.通讯流程 一、SPI通讯协议简介 SPI&#xff08;Seria…

JavaScript核心概念解析:从基础语法到对象应用

导语&#xff1a;本文系统梳理JavaScript的核心知识框架&#xff0c;适用于编程入门学习者。内容涵盖基础语法、数据类型、函数应用及内置对象&#xff0c;帮助读者构建清晰的JS知识体系。一、语言基础与执行原理浏览器执行机制渲染引擎&#xff1a;解析HTML/CSS&#xff08;如…

在 Kotlin 中使用函数类型和 lambda 表达式

参考官方文档: https://developer.android.google.cn/codelabs/basic-android-kotlin-compose-function-types-and-lambda?hl=zh-cn#0 1、 将函数存储在变量中 作为一种一级结构,函数也属于数据类型,因此,可以将函数存储在变量中、将函数传递到函数,以及从函数返回函数…

计算机硬件组成原理

&#x1f9e0; 一、计算机的硬件组成&#xff1a;五大核心部件 根据“冯诺依曼体系结构”&#xff0c;现代计算机主要由这 5大部分组成&#xff1a;部件作用通俗解释1️⃣ 运算器&#xff08;ALU&#xff09;负责算术和逻辑运算会加减乘除和做判断的“计算工厂”2️⃣ 控制器&a…

告别 window.open,拥抱全新浮窗体验!

深入了解 Document Picture-in-Picture API&#xff0c;并对比 Modal 的最佳使用场景在前端开发中&#xff0c;我们经常会遇到这样的需求&#xff1a;弹出一个浮动窗口来显示一些实时信息、工具栏或视频内容。过去我们会用 window.open()&#xff0c;后来越来越多的开发者倾向于…

Python爬虫实战:研究weiboSpider技术,构建新浪微博数据采集系统

1. 引言 1.1 研究背景 在信息时代,社交媒体已成为人们获取信息、表达观点的重要渠道。微博作为其中的典型代表,拥有庞大的用户群体和活跃的内容生态。截至 2023 年底,微博月活跃用户数已超过 5.8 亿,日均发博量达数千万条,数据涵盖社会热点、公众情绪、消费偏好等多维度…

HashMap初始化容量为10,还未添加数据时,它的实际容量是多少?

在Java中&#xff0c;当使用 new HashMap<>(10) 初始化一个容量为10的 HashMap 但尚未添加任何数据时&#xff0c;其实际容量&#xff08;底层数组的长度&#xff09;不是10&#xff0c;而是16。原因如下&#xff1a;关键机制解析&#xff1a;容量必须是2的幂HashMap要求…

前端开发:CSS(2)—— 选择器

前面我们初步学习了CSS&#xff0c;对其有了基本的认识。下面我们来具体学习CSS中的选择器。 目录 选择器的种类 1.基础选择器 &#xff08;1&#xff09;标签选择器 &#xff08;2&#xff09;类选择器 &#xff08;3&#xff09;id选择器 &#xff08;4&#xff09;通…

人工智能2.0时代的人才培养和通识教育

目录引言&#xff1a;从"机器模仿"到"智能协同"的时代跨越一、人工智能2.0的技术演进&#xff1a;从规则到大模型的三次跃迁1. 人工智能0.0&#xff08;1956-2006&#xff09;&#xff1a;规则驱动的"专家系统时代"2. 人工智能1.0&#xff08;20…

管理索引常用的API

二.管理索引常用的API 1.查看现有索引信息 查看所有索引信息列表&#xff1a;curl -X GET http://elk101.k8s.com:9200/_cat/indices?v查看某个索引的详细信息:curl -x GET http://elk101.k8s.com:9200/linux-2020-10-2温馨提示: (1)"?v"表示输出表头信息&#xff…

当文档包含表格时,如何结合大模型和OCR提取数据?

在AI应用极速发展的当下&#xff0c;LLM&#xff08;大语言模型&#xff09;与RAG&#xff08;检索增强生成&#xff09;系统已成为构建智能问答、知识管理等高阶应用的核心引擎。 然而&#xff0c;许多团队在项目落地时遭遇了现实的挑战&#xff1a;模型的实际表现——无论是回…

机器学习工程化 3.0:从“实验科学”到“持续交付”的 7 个关卡

一、背景&#xff1a;为什么 90% 的 ML 项目死在了实验台&#xff1f; Gartner 2024 报告显示&#xff0c;87% 的企业机器学习项目未能走出实验室。原因并非算法落后&#xff0c;而是缺少“工程化骨骼”&#xff1a;数据漂移无人发现&#xff0c;模型上线一周就失效&#xff1b…

BGP笔记整理

一、BGP 基础概念1. 产生背景BGP&#xff08;Border Gateway Protocol&#xff09;是自治系统&#xff08;AS&#xff09;间的动态路由协议&#xff0c;属于外部网关协议&#xff08;EGP&#xff09;&#xff0c;用于在不同 AS 之间传递路由信息。2. 自治系统&#xff08;AS&am…

Mysql-MVCC机制

1. MVCC机制详解 在Read Uncommitted级别下&#xff0c;事务总是读取到最新的数据&#xff0c;因此根本用不到历史版本&#xff0c;所以MVCC不在该级别下工作。 在Serializable级别下&#xff0c;事务总是顺序执行。写会加写锁&#xff0c;读会加读锁&#xff0c;完全用不到MVC…

MySQL面试题及详细答案 155道(061-080)

《前后端面试题》专栏集合了前后端各个知识模块的面试题&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

大数据中需要知道的监控页面端口号都有哪些

以下是一些大数据中常见组件监控页面的端口号&#xff1a;1. Hadoop&#xff1a;HDFS Web UI在Hadoop2.x版本中默认端口为50070&#xff0c;在Hadoop3.x版本中为9870&#xff0c;用于查看集群文件及目录&#xff1b;YARN Web UI端口为8088&#xff0c;可查看MR执行情况&…

时隔六年!OpenAI 首发 GPT-OSS 120B / 20B 开源模型:性能、安全与授权细节全解

为什么这次开放值得关注&#xff1f; OpenAI 时隔六年再次“放权重”&#xff0c;一次性公布 gpt-oss-120b 与 gpt-oss-20b 两个尺寸&#xff0c;并允许商业化二次开发 —— 采用 Apache 2.0 许可且可直接在 Hugging Face 下载(WIRED)。官方表示&#xff0c;开放旨在 降低门槛…