TCP和UDP区别
TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)都是Internet协议套件中的传输层协议,但它们在工作方式、特性和适用场景上有显著区别:
-
连接方式:
- TCP 是面向连接的协议。在数据传输前,TCP会先通过三次握手建立连接,确保双方都准备好进行通信,类似于打电话前需要先拨号接通。
- UDP 是无连接的协议。它不建立正式的连接就可以直接发送数据报,类似于写信并邮寄出去,不确认对方是否在家或能否接收。
-
数据传输可靠性:
- TCP 提供可靠的数据传输服务,确保数据包无差错、不丢失、不重复且按序到达。TCP通过序列号、确认应答、重传机制和流量控制等策略来保证数据的可靠性。
- UDP 不保证数据包的可靠传输,它只是尽可能快地将数据包发送出去,由上层应用负责处理数据完整性、顺序和丢包问题。因此,UDP可能遇到数据丢失、乱序等问题。
-
数据结构:
- TCP 是基于字节流的,它将数据看作一个无界的字节流,并没有明确的数据边界,适合连续数据的传输。【需要对字节流进行分割和组装】
- UDP 是基于数据报的,每个UDP数据报都是一个独立的信息单元,包含完整的源地址、目的地址以及数据,适合一次性传输小块数据。【有明确的数据边界,数据报是独立的实体】
-
资源消耗和延迟:
- TCP 需要维护连接状态和执行复杂的错误检测与恢复机制,因此对系统资源的需求更高,可能导致较高的延迟。
- **UDP 由于无需建立连接和维护连接状态,其头部开销小,处理速度快,延迟较低,更适用于对实时性要求高的应用。
-
应用场景:
- TCP 适用于对数据完整性、顺序和可靠性要求高的应用,如Web浏览器、电子邮件、文件传输(FTP)、远程登录(SSH)等。
- UDP 适用于对实时性要求高、能容忍一定数据丢失的应用,如在线视频、直播、语音通话、在线游戏、DNS查询等。
概念讲解:
错误检查:
假设Alice要通过TCP给Bob发送一连串的数据包,每个数据包都有一个唯一的序列号。
-
发送数据:Alice首先发送数据包1,这个数据包包含了序列号1,表示这是第一个数据包。
-
等待确认:Bob收到数据包1后,他会向Alice发送一个确认应答(ACK),这个ACK中会包含他期望接下来收到的数据包的序列号。既然Bob已经收到了序列号为1的数据包,他的ACK就会声明他下一个期待接收的是序列号为2的数据包。
-
超时重传:如果Alice没有在预期的时间内收到针对数据包1的ACK(可能是因为数据包在网络中丢失了或者ACK在返回途中丢失),Alice会启动一个计时器。当这个计时器到达设定的超时时间后,Alice就会认为数据包1没有成功到达Bob,于是她会重新发送数据包1。
-
接收与排序:一旦Bob收到了重新发送的数据包1,他会再次发送ACK确认收到。这样,即使最初的数据包1丢失了,通过重传机制,Bob最终还是能够完整无误地接收到所有数据包,并且按照序列号对它们进行排序。
重传机制:
假设Alice要通过TCP给Bob发送一连串的数据包,每个数据包都有一个唯一的序列号。
-
发送数据:Alice首先发送数据包1,这个数据包包含了序列号1,表示这是第一个数据包。
-
等待确认:Bob收到数据包1后,他会向Alice发送一个确认应答(ACK),这个ACK中会包含他期望接下来收到的数据包的序列号。既然Bob已经收到了序列号为1的数据包,他的ACK就会声明他下一个期待接收的是序列号为2的数据包。
-
超时重传:如果Alice没有在预期的时间内收到针对数据包1的ACK(可能是因为数据包在网络中丢失了或者ACK在返回途中丢失),Alice会启动一个计时器。当这个计时器到达设定的超时时间后,Alice就会认为数据包1没有成功到达Bob,于是她会重新发送数据包1。
-
接收与排序:一旦Bob收到了重新发送的数据包1,他会再次发送ACK确认收到。这样,即使最初的数据包1丢失了,通过重传机制,Bob最终还是能够完整无误地接收到所有数据包,并且按照序列号对它们进行排序。
重传类型包括:
-
超时重传:TCP为每个发送的数据段设置一个定时器(称为重传定时器或RTO,Retransmission TimeOut)。如果在预期的时间内没有收到对方确认该数据段的ACK(Acknowledgment)报文,就认为数据段丢失或者网络中存在严重延迟,这时会触发超时重传。发送方会重新发送未被确认的数据段。
-
快速重传:这是对超时重传的一种补充。当接收方检测到数据包的顺序混乱(比如收到了序列号更高的数据包但期待的是更低序列号的数据包),它会立即发送重复的ACK,告知发送方某个特定序列号的数据包未到达。如果发送方短时间内收到多个重复确认同一个序列号的ACK,不用等待重传定时器超时,TCP会快速反应并重传被认为丢失的数据包,这样可以更快地恢复数据流,减少延迟。
-
选择性确认(SACK,Selective Acknowledgment):在某些情况下,接收方可能已经收到了数据流中的某些数据包,而另外一些则丢失了。选择性确认允许接收方在ACK中具体指出哪些数据片段已经正确接收到,这样发送方就可以只重传那些确实丢失的数据包,而不是从最后一个确认的数据包开始全部重传,提高了效率。
相关文章:
TCP和UDP区别
TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议)都是Internet协议套件中的传输层协议,但它们在工作方式、特性和适用场景上有显著区别ÿ…...
[Shell编程学习路线]——编制第一个shell脚本入门篇
🏡作者主页:点击! 🛠️Shell编程专栏:点击! ⏰️创作时间:2024年6月12日10点23分 🀄️文章质量:93分 目录 ——前言—— 💥常用的几种shell Bash Sh …...
python数据处理分析库(一)
目录 一、NumPy 二、Pandas 三、Matplotlib and Seaborn 一、NumPy 场景:处理大规模数组和矩阵运算,可以用于科学计算、数据预处理简单示例: import numpy as npdata np.array([1, 2, 3, 4, 5]) mean np.mean(data) std_dev np.std(da…...
使用Transformer进行抄袭检测
动机 在许多行业中,尤其是在学术界,抄袭是一个重大问题。随着互联网和开放信息的兴起,这种现象甚至变得更加严重,任何人都可以通过点击访问特定主题的任何信息。 基于这一观察,研究人员一直在尝试使用不同的文本分析…...
基于深度学习的电池健康状态预测(Python)
电池的故障预测和健康管理PHM是为了保障设备或系统的稳定运行,提供参考的电池健康管理信息,从而提醒决策者及时更换电源设备。不难发现,PHM的核心问题就是确定电池的健康状态,并预测电池剩余使用寿命。但是锂电池的退化过程影响因…...
【吊打面试官系列-Mysql面试题】MySQL 如何优化 DISTINCT?
大家好,我是锋哥。今天分享关于 【MySQL 如何优化 DISTINCT?】面试题,希望对大家有帮助; MySQL 如何优化 DISTINCT? DISTINCT 在所有列上转换为 GROUP BY,并与 ORDER BY 子句结合使用。 SELECT DISTINCT t…...
企业IT运维管理体系-总体规划
企业IT运维管理体系-总体规划 企业IT运维管理体系的总体规划通过科学的调研、分析、设计和建设,提升管理成熟度、增强服务能力、实现技术创新和优化资源配置。重点在于建立组织保障体系、制定运维制度、构建运维平台和完善度量指标。通过明确运维治理模式和外包管理…...
RabbitMQ-Stream(高级详解)
文章目录 什么是流何时使用 RabbitMQ Stream?在 RabbitMQ 中使用流的其他方式基本使用Offset参数chunk Stream 插件服务端消息偏移量追踪示例 示例应用程序RabbitMQ 流 Java API概述环境创建具有所有默认值的环境使用 URI 创建环境创建具有多个 URI 的环境 启用 TLS…...
Web前端图片并排显示的艺术与技巧
Web前端图片并排显示的艺术与技巧 在Web前端开发中,图片并排显示是一种常见的布局需求。然而,实现这一目标并非易事,需要掌握一定的技巧和艺术。本文将从四个方面、五个方面、六个方面和七个方面深入探讨Web前端图片并排显示的奥秘。 四个方…...
豆瓣电影信息爬虫【2024年6月】教程
豆瓣电影信息爬虫【2024年6月】教程,赋完整代码 在本教程中,我们将使用以下技术栈来构建一个爬虫,用于爬取豆瓣电影列表页面的信息: 完整代码放到最后 ; 完整代码放到最后 ; 完整代码放到最后 ;…...
Flutter- AutomaticKeepAliveClientMixin 实现Widget保持活跃状态
前言 在 Flutter 中,AutomaticKeepAliveClientMixin 是一个 mixin,用于给 State 类添加能力,使得当它的内容滚动出屏幕时仍能保持其状态,这对于 TabBarView 或者滚动列表中使用 PageView 时非常有用,因为这些情况下你…...
《计算机组成原理》期末复习题节选
第三章–存储系统 3.1 存储器性能指标 核心公式: 存储容量存储字数*字长 ,存储字数表示存储器的地址空间的大小,字长表示一次存取操作的数据量.数据传输率数据宽度/存储周期 1、设机器字长为32位,一个容量为16MB的存储器&…...
NSSCTF中的popchains、level-up、 What is Web、 Interesting_http、 BabyUpload
目录 [NISACTF 2022]popchains [NISACTF 2022]level-up [HNCTF 2022 Week1]What is Web [HNCTF 2022 Week1]Interesting_http [GXYCTF 2019]BabyUpload 今日总结: [NISACTF 2022]popchains 审计可以构造pop链的代码 <php class Road_is_Long{public $…...
量产维护 | 芯片失效问题解决方案:从根源找到答案
芯片失效分析是指对电子设备中的故障芯片进行检测、诊断和修复的过程。芯片作为电子设备的核心部件,其性能和可靠性直接影响整个设备的性能和稳定性。 随着半导体技术的迅速发展,芯片在各个领域广泛应用,如通信、计算机、汽车电子和航空航天等。 因此,对芯片故障原因进行…...
Linux忘记密码的解决方法
1、进入GRUB页面,选择对应的内核按下‘e’键; 2、进入内核修改信息界面,找到Linux这一行,在这一行的末尾加上 init/bin/sh 按下ctrlx进入单用户模式 3、进入单用户后,重新挂载根目录,使其可写࿱…...
数据结构(DS)学习笔记(二):数据类型与抽象数据类型
参考教材:数据结构C语言版(严蔚敏,杨伟民编著) 工具:XMind、幕布、公式编译器 正在备考,结合自身空闲时间,不定时更新,会在里面加入一些真题帮助理解数据结构 目录 1.1数据…...
【C++进阶】模板与仿函数:C++编程中的泛型与函数式编程思想
📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:栈和队列相关知识 🌹🌹期待您的关注 🌹🌹 ❀模板进阶 🧩<&…...
华安保险:核心系统分布式升级,提升保费规模处理能力2-3倍 | OceanBase企业案例
在3月20日的2024 OceanBase数据库城市行的活动中,安保险信息科技部总经理王在平发表了以“保险行业核心业务系统分布式架构实践”为主题的演讲。本文为该演讲的精彩回顾。 早在2019年,华安保险便开始与OceanBase接触,并着手进行数据库的升级…...
佐西卡在美国InfoComm 2024展会上亮相投影镜头系列
6月12日至14日,2024美国视听显示与系统集成展览会将在拉斯维加斯会议中心盛大开幕。这场北美最具影响力的视听技术盛会,将汇集全球顶尖的视听解决方案,展现专业视听电子系统集成、灯光音响等领域的最新技术动态。 在这场科技盛宴中࿰…...
【权威出版/投稿优惠】2024年智慧城市与信息化教育国际会议(SCIE 2024)
2024 International Conference on Smart Cities and Information Education 2024年智慧城市与信息化教育国际会议 【会议信息】 会议简称:SCIE 2024 大会时间:点击查看 大会地点:中国北京 会议官网:www.iacscie.com 会议邮箱&am…...
Android 应用程序 ANR 问题分析总结
ANR (Application Not Responding) 应用程序无响应。如果应用程序在UI线程被阻塞太长时间,就会出现ANR,通常出现ANR,系统会弹出一个提示提示框,让用户知道,该程序正在被阻塞,是否继续等待还是关闭。 1、AN…...
爬虫案例:建设库JS逆向
爬虫流程 1. 确定目标网址和所需内容 https://www.jiansheku.com/search/enterprise/ 只是个学习案例,所以目标就有我自己来选择,企业名称,法定代表人,注册资本,成立日期 2. 对目标网站,进行分析 动态…...
基于springboot的酒店管理系统源码数据库
时代的发展带来了巨大的生活改变,很多事务从传统手工管理转变为自动管理。自动管理是利用科技的发展开发的新型管理系统,这类管理系统可以帮助人完成基本的繁琐的反复工作。酒店是出门的必需品,无论出差还是旅游都需要酒店的服务。由于在旺季…...
Web前端开发 - 5 - JavaScript基础
JavaScript 一、JavaScript基础1. JavaScript入门2. 语句3. 数据类型4. 函数5. 对象6. 数组 一、JavaScript基础 1. JavaScript入门 <script> </script> <script type"text/javascript" src"xxx.js"> </script>//单行注释 /* 多…...
程序员之路:塑造卓越职业素养的探索与实践
序章 在这个数字时代,程序员作为技术进步的推动者,不仅需要掌握扎实的技术技能,更需具备高尚的职业素养,以应对日益复杂的行业挑战。职业素养,犹如编程中的“算法”,虽无形却决定着个人发展的效率与质量。本…...
C# Winform 在低DPI创建窗体后,在高DPI运行时,窗体会自动拉伸,导致窗体显示不全
C# Winform 在低DPI创建窗体后,在高DPI运行时,窗体会自动拉伸,导致窗体显示不全, 比如在分辨率为100% 的电脑创建C#项目,当运动到分辨率为125%的电脑运行时,后者运行的窗体会自动拉伸,窗体显示…...
JWT攻击手册(非常详细)零基础入门到精通,收藏这一篇就够了
JSON Web Token(JWT)对于渗透测试人员而言可能是一种非常吸引人的攻击途径,因为它们不仅是让你获得无限访问权限的关键,而且还被视为隐藏了通往以下特权的途径:特权升级,信息泄露,SQLiÿ…...
5.所有权
标题 一、概念二、规则三、示例3.1 变量作用域3.2 所有权的移交(深拷贝与浅拷贝)3.3 函数与所有权3.4 返回值与作用域3.5 引用的使用 四、切片(&str) 一、概念 所有权是Rust的核心特性。所有程序在运行时都必须管理它们使用计算机内存的方式。Rust的…...
RabbitMQ-工作模式(Publish模式Routing模式)
文章目录 发布/订阅(Publish/Subscribe)交换机临时队列绑定总体代码示例 路由(Routing)绑定直连交换机多重绑定发送日志订阅总体代码示例 更多相关内容可查看 发布/订阅(Publish/Subscribe) 构建一个简单的…...
【机器学习算法】期望最大化(EM)算法概述
期望最大化(EM)算法是一种迭代算法,用于在有未观测变量的情况下,求解概率模型参数的最大似然估计或最大后验估计。以下是对EM算法的原理与应用进行详细地剖析: EM算法原理 E步 - 期望计算:根据当前估计的模…...
wordpress编辑器字体/推广普通话手抄报内容
【用户功能模块】 (1)登录功能:注册普通账号登录;登录后可以修改用户的基本信息,也可以退出。 (2)浏览资讯:浏览网站管理发布的资讯,可以评论,评论后需要管理员审核和查看。也可以收藏资讯。 (3)关于我们…...
wordpress什么主题好用/品牌营销策划有限公司
Python进行特征提取的示例代码,特征,方差,数据,的是,流水线Python进行特征提取的示例代码易采站长站,站长之家为您整理了Python进行特征提取的示例代码的相关内容。#过滤式特征选择#根据方差进行选择,方差越小,代表该属性识别能力很差&#x…...
wordpress 安装插件 ftp/网购平台推广方案
前提条件 如果没有安装office的话,需要安装引擎 安装了office就不用安装引擎 连接数据库 Dim plMydb As Microsoft.Office.Interop.Access.Dao.DatabaseplMydb DAODBEngine_definst.OpenDatabase(ppDataBase) 备份数据库 AccessDB.CompactDatabase(iMDBFile, iTMPF…...
网页制作一个网站八个页面咋做/如何做品牌营销
郝萌主倾心贡献,尊重作者的劳动成果。请勿转载。假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠Cocos2d-X源代码下载:点我传送游戏官方下载:htt…...
ota平台网站建设/深圳seo优化排名推广
AdaGrad中的Ada是Adaptive之意,即“自适应的”,什么自适应呢,这里是指NN中的学习率,可以自适应的调整,并且是每一个参数有自己专门的调整,不是全体参数的学习率同时调整(共享一个学习率…...
番禺俊才网/seo自学教程推荐
【问题描述】 已知cosx的近似计算公式如下: cosx 1 - x2/2! x4/4! - x6/6! … (-1)nx2n/(2n)! 其中x为弧度,n为大于等于0的整数。编写程序根据用户输入的x和n的值,利用上述近似计算公式计算cosx的近似值,要求输出结果小数点…...