UDP协议和TCP协议
UDP协议:
是一种无连接的、简单的传输层通信协议,它在IP协议(网络层)之上提供服务。
特点:
-
无连接:在数据传输前,发送方和接收方之间不需要建立连接,可以直接发送数据。
-
简单:UDP协议头只有8个字节,比TCP协议头简单,因此开销较小。
-
不保证可靠性:UDP不提供数据传输的可靠性保证,数据包可能会丢失、重复或乱序到达。
-
不进行拥塞控制:UDP不进行拥塞控制,即使网络条件不佳,也不会降低发送速率。
-
支持多播和广播:UDP支持发送数据到多个目的地,适用于多播和广播场景。
-
适用场景:由于UDP的简单性和低延迟,它适用于对实时性要求高的应用,如视频会议、在线游戏、实时视频流等。
-
端口号:UDP使用端口号来区分不同的服务或应用程序,每个UDP数据包都包含源端口和目的端口。
-
校验和:UDP提供可选的校验和功能,用于检测数据在传输过程中是否出现错误,但是否使用校验和由应用程序决定。
由于UDP不保证数据的可靠传输,因此在需要可靠传输的应用中,通常需要在应用层实现额外的机制来确保数据的完整性和顺序。例如,可以通过应用层的确认和重传机制来实现可靠性。
TCP协议:
是一种面向连接的、可靠的、基于字节流的传输层通信协议,TCP在IP协议(网络层)之上提供服务。
特点:
-
面向连接:在数据传输前,TCP需要在发送方和接收方之间建立一个连接,这个过程称为三次握手。
-
可靠性:TCP提供数据传输的可靠性保证,确保数据正确、完整地从源传输到目的地。
-
有序传输:TCP保证数据包按照发送顺序到达接收方。
-
拥塞控制:TCP通过滑动窗口机制和拥塞避免算法来控制数据的发送速率,以避免网络拥塞。
-
流量控制:TCP使用窗口大小来控制发送方的发送速率,以匹配接收方的处理能力。
-
数据校验:TCP对每个数据包进行校验和计算,以检测数据在传输过程中是否出现错误。
-
支持全双工通信:TCP允许数据在两个方向上同时传输,即全双工通信。
-
适用场景:由于TCP提供了可靠的数据传输,它适用于需要数据完整性和顺序的应用,如Web浏览、文件传输、电子邮件等。
-
端口号:TCP使用端口号来区分不同的服务或应用程序,每个TCP连接都包含一对端口号(源端口和目的端口)。
-
超时重传:如果TCP数据包在传输过程中丢失,TCP会进行超时重传。
-
数据分段:TCP将数据分割成较小的段进行传输,每个段都包含TCP头部和数据负载。
-
端到端通信:TCP提供端到端的通信,即数据直接从发送方的应用程序传输到接收方的应用程序。
-
状态管理:TCP维护一个复杂的状态机,用于管理连接的建立、数据传输和连接的终止。
由于TCP的这些特性,它通常用于那些对数据传输可靠性要求较高的应用场景。然而,TCP的这些特性也使得它的开销比UDP大,因此在对实时性要求高的应用中,UDP可能是更合适的选择。
UDP协议和TCP协议的区别:
-
连接性:
- TCP:面向连接的协议,数据传输前需要建立连接,通过三次握手过程。
- UDP:无连接的协议,数据传输前不需要建立连接,直接发送数据。
-
可靠性:
- TCP:提供可靠的数据传输服务,确保数据包正确、完整地到达目的地。
- UDP:不保证数据传输的可靠性,数据包可能会丢失、重复或乱序到达。
-
有序性:
- TCP:保证数据包按发送顺序到达。
- UDP:不保证数据包的顺序,接收方可能需要自行处理乱序问题。
-
拥塞控制:
- TCP:具有拥塞控制机制,通过调整发送速率来避免网络拥塞。
- UDP:不进行拥塞控制,发送速率由发送方决定。
-
流量控制:
- TCP:通过窗口大小机制进行流量控制,以匹配接收方的处理能力。
- UDP:不进行流量控制。
-
数据校验:
- TCP:对每个数据包进行校验和计算,以检测数据在传输过程中的错误。
- UDP:提供可选的校验和功能,但是否使用由应用程序决定。
-
数据传输方式:
- TCP:面向字节流的协议,数据被分割成多个段进行传输。
- UDP:面向数据报的协议,每个数据报独立传输。
-
效率:
- TCP:由于需要建立连接、维护连接状态、进行错误检测和重传等,开销较大,效率相对较低。
- UDP:协议头简单,开销小,效率相对较高。
-
适用场景:
- TCP:适用于需要可靠传输的应用,如Web浏览、文件传输、电子邮件等。
- UDP:适用于对实时性要求高的应用,如视频会议、在线游戏、实时视频流等。
-
错误处理:
- TCP:如果数据包丢失,TCP会进行超时重传。
- UDP:如果数据包丢失,通常由应用层处理,UDP本身不进行重传。
-
端口号:
- TCP 和 UDP:都使用端口号来区分不同的服务或应用程序。
-
状态管理:
- TCP:维护复杂的状态机,管理连接的建立、数据传输和连接的终止。
- UDP:没有状态管理,每个数据报独立处理。
总的来说,TCP提供了一个可靠的、面向连接的通信服务,而UDP提供了一个简单、快速但不可靠的通信服务。选择哪种协议取决于应用程序的具体需求。
TCP协议的三次握手和四次挥手:
TCP(传输控制协议)使用三次握手来建立一个连接,以及四次挥手来终止一个连接。这些过程确保了数据的可靠传输和连接的正确释放。
三次握手(建立连接)
-
SYN(同步):
- 客户端发送一个带有SYN(同步序列编号)标志位的TCP段到服务器,以初始化一个连接。这个SYN段还包含客户端的初始序列号(ISN),用于标识从客户端到服务器的数据流。
-
SYN-ACK(同步-确认):
- 服务器收到SYN段后,如果同意建立连接,则会发送一个SYN-ACK段作为响应。这个段包含服务器的初始序列号,并且对客户端的SYN段进行确认(ACK)。
-
ACK(确认):
- 客户端收到服务器的SYN-ACK段后,会发送一个ACK段作为最后的确认。这个ACK段对服务器的SYN段进行确认。
完成这三次握手后,TCP连接就成功建立了,数据可以开始在客户端和服务器之间传输。
四次挥手(终止连接)
-
FIN(结束):
- 当客户端决定关闭连接时,它发送一个带有FIN标志位的TCP段到服务器,表示客户端已经没有数据要发送了。
-
ACK(确认):
- 服务器收到FIN段后,发送一个ACK段作为响应,确认收到了客户端的FIN段。
-
FIN(结束):
- 服务器在发送完所有剩余数据后,也会发送一个带有FIN标志位的TCP段到客户端,表示服务器也没有数据要发送了。
-
ACK(确认):
- 客户端收到服务器的FIN段后,发送一个ACK段作为最后的确认。
完成这四次挥手后,TCP连接就被正确地终止了。需要注意的是,TCP连接是全双工的,因此每个方向的关闭都需要单独的FIN和ACK段。
为什么需要三次握手和四次挥手?
-
三次握手:
- 确保双方的发送和接收能力都是正常的。
- 防止失效的连接请求突然又传送到了服务器端,从而产生错误。
-
四次挥手:
- 确保双方都能完全关闭连接,并且释放所有资源。
- 因为TCP是全双工的,所以每个方向都需要单独关闭。
这些过程确保了TCP连接的可靠性和数据传输的完整性。
相关文章:
UDP协议和TCP协议
UDP协议: 是一种无连接的、简单的传输层通信协议,它在IP协议(网络层)之上提供服务。 特点: 无连接:在数据传输前,发送方和接收方之间不需要建立连接,可以直接发送数据。 简单&…...
算法题总结(十三)—— 动态规划(上)
动态规划 动态规划理论基础 什么是动态规划 动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的ÿ…...
Leetcode - 周赛419
目录 一,3318. 计算子数组的 x-sum I 二,3319. 第 K 大的完美二叉子树的大小 三,3320. 统计能获胜的出招序列数 四,3321. 计算子数组的 x-sum II 一,3318. 计算子数组的 x-sum I 本题数据范围较小,可以…...
C# 的两个list怎么判断是否存在交集
要判断两个 List<string>(dateList 和 LocalDate)是否有交集,可以使用 LINQ(Language Integrated Query)来简化这个过程。以下三种方法来判断两个列表之间是否有交集。 方法 1: 使用 LINQ 的 Any 方法 using S…...
【Python】基础语法
1. 变量 1.1. 变量的创建 变量的定义规则: 变量只能由数字,字母,下划线构成,不能包含特殊符号数字不能作为变量开头变量名不能和 Python 的关键字重复Python 的变量是区分大小写的 除了上述的硬性规则外,还建议变量…...
scala 类的继承
继承的定义 idea实例 语法 重写 重写:在子类中重新定义父类的同名方法 idea实例 多态 多态:传入的对象不同,调用的方法的效果就不同! 原理:参数是父类类型 idea实例 构造器...
穷举vs暴搜vs深搜vs回溯vs剪枝(一)
文章目录 全排列子集找出所有子集的异或总和再求和全排列 II电话号码的字母组合 全排列 题目:全排列 思路 通过深度优先搜索的方式,不断枚举每个数在当前位置的可能性,然后回溯到上一个状态,直到枚举完所有可能性得到正确的结果 r…...
枚举的应用
1.枚举的语法特点 枚举是jdk1.5提供的一个特性 枚举是一个特殊的类,这个类的对象的数量是有限的。在定义枚举类的同时就已经确定了类对象及类对象的数量。 枚举使用enum关键字定义 class A{} enum A{} 在枚举类中的第一行,就需要提供枚举类的对象&a…...
读数据工程之道:设计和构建健壮的数据系统14源系统
1. 源系统中的数据生成 1.1. 数据工程师的工作是从源系统获取数据,对其进行处理,使其有助于为下游用例提供服务 1.2. 数据工程师的角色将在很大程度上转向理解数据源和目的地之间的相互作用 1.3. 数据工程的最基本的数据管道任务——将数据从A移动到B…...
基于SpringBoot+Vue的厨艺交流系统的设计与实现(源码+定制开发)厨艺知识与美食交流系统开发、在线厨艺分享与交流平台开发、智能厨艺交流与分享系统开发
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...
STMicroelectronics 意法半导体芯片选型表
意法半导体作为全球知名的半导体厂商,其产品广泛应用于各个领域,从消费电子到工业控制,从汽车电子到通信设备,都能看到意法半导体芯片的身影。在电子硬件设计领域,芯片的选型至关重要。亿配芯城(ICgoodFind…...
TCP/IP 寻址
TCP/IP 寻址 概述 TCP/IP(传输控制协议/互联网协议)是一组用于数据网络的通信协议。它们定义了数据如何在网络上从一个设备传输到另一个设备。在TCP/IP网络中,每个设备都有一个唯一的地址,称为IP地址,用于标识网络上…...
深入探索 APKTool:Android 应用的反编译与重打包工具
文章目录 一、反编译 APK1.1 解压 APK1.2 DEX 文件转换1.3 资源解码 二、重新打包 APK2.1 资源重新编译2.2 smali 转换为 DEX2.3 打包 APK2.4 签名 APK 三、技术原理3.1 Smali/Baksmali3.1.1 DEX 文件格式3.1.2 Smali 语法3.1.2.1 指令3.1.2.2 寄存器3.1.2.3 操作码3.1.2.4 注释…...
软件测试与软件缺陷的基础知识
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...
【JPCS独立出版,EI检索稳定】第三届能源互联网及电力系统国际学术会议(ICEIPS 2024)
第三届能源互联网及电力系统国际学术会议(ICEIPS 2024) 2024 3rd International Conference on Energy Internet and Power Systems ICEIPS 2024已成功申请JPCS - Journal of Physics: Conference Series (ISSN:1742-6596) ICEIPS 2024独立出版&…...
ssm配置模式
新版 用Java类,全注解demo案例 1. AppConfig.java (Spring主配置类)package com.example.config;import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.cont…...
[MySQL课后作业]人事管理系统的SQL实践
第一题 1.假设某商业集团中有若干公司,人事数据库中有3个基本表: 职工表:EMP(E#.ENAME,AGE, SEX, ECITY)。 其属性分别表示职工工号、姓名、年龄、性别和居住城市。 工作表:WORKS(E#,C#,SALARY)。其属性分别表示职工工号、所在公司的编号和工资。 公司表:COMP(C#,CA…...
【MySQL】增删改查-进阶(二)
目录 🌴新增 🎄查询 🚩聚合查询 🏀聚合函数 🏀group by子句 🏀HAVING 🚩联合查询 🏀内连接 🏀外连接 🏀自连接 🏀子查询 🏀…...
cefsharp79.1.360(Chromium 79.0.3945.130)支持H264视频播放-PDF预览 老版本回顾系列体验
一、关于此版本 版本:Cef 79.1.36/CefSharp 79.1.360/Chromium 79.0.3945.130/支持H264/支持PDF预览 支持PDF预览和H264推荐版本 63/79/84/88/100/111/125 运行环境需要 visual c++ 2015不支持xp/vista/2003/2008默认不支持h264(版权问题)支持打印预览 print preview已知问题…...
【Linux】main函数的参数列表从何而来?
Linux系统进程通过exec系列函数启动新程序时,argc整型 、 argv数组 和 环境变量表 environ 会作为 exec 系列函数的参数,显式传递给新程序的 main 函数。 main函数的参数列表 在C语言中,main函数的标准参数列表通常如下所示: in…...
全国首个!深开鸿与前海供电公司打造的数据中心电鸿变配电室正式投运
不久前,我国首个专为数据中心设计的用户专用电力开源鸿蒙变配电室在深圳前海投入使用。该项目由深开鸿与深圳前海供电公司打造,以电鸿物联操作系统为核心,融合感知终端、电力物联、数字孪生、人工智能四大能力,为前海信息枢纽大厦…...
YOLO-v8.3镜像5分钟快速部署:告别手动配置,一键开启目标检测
YOLO-v8.3镜像5分钟快速部署:告别手动配置,一键开启目标检测 如果你正在寻找一个快速部署YOLOv8目标检测模型的方法,那么这篇文章就是为你准备的。传统的手动部署方式需要花费数小时配置环境、安装依赖和调试问题,而使用YOLO-v8.…...
忍者像素绘卷效果展示:飞雷神之术瞬移轨迹×金色像素残影动态图
忍者像素绘卷效果展示:飞雷神之术瞬移轨迹金色像素残影动态图 1. 作品概览 忍者像素绘卷是基于Z-Image-Turbo深度优化的图像生成工作站,它将传统忍者文化与16-Bit复古游戏美学完美融合。这款工具特别擅长生成具有强烈动态感的忍者动作场景,…...
MIT AI工具一分钟预览高度逼真3D打印成品外观,所见即所得
从电影道具到医疗设备,3D打印正在快速改变我们制造功能原型的方式。然而,大多数打印软件生成的预览只关注结构路径,忽略了颜色、光泽、纹理等外观要素,导致用户常常需要反复试印。根据3D科学谷的市场观察,MIT和普林斯顿…...
SpringBoot集成Flyway:从多数据库适配到生产环境实战
1. 为什么你的微服务需要Flyway? 第一次遇到数据库迁移问题是在2018年,当时我们团队维护着一个需要同时支持MySQL和Oracle的SaaS产品。每次发版前,DBA都要手动执行几十个SQL脚本,经常出现测试环境执行成功但生产环境漏掉某个脚本的…...
终极write-good CLI指南:10个快速提升英语写作质量的命令行技巧
终极write-good CLI指南:10个快速提升英语写作质量的命令行技巧 【免费下载链接】write-good Naive linter for English prose 项目地址: https://gitcode.com/gh_mirrors/wr/write-good write-good是一款专为开发者打造的英语写作质量检查工具,它…...
论文阅读:arxiv 2026 From Assistant to Double Agent: Formalizing and Benchmarking Attacks on OpenClaw for
总目录 大模型安全研究论文整理 2026年版:https://blog.csdn.net/WhiffeYF/article/details/159047894 From Assistant to Double Agent: Formalizing and Benchmarking Attacks on OpenClaw for Personalized Local AI Agent https://arxiv.org/abs/2602.08412 该…...
数据库安全与运维管控(一):MySQL、PG与Oracle原生审计机制对比
在满足等保2.0、SOC2 或金融合规审查时,“开启数据库审计”是硬性指标。合规要求企业必须记录“谁、在什么时间、执行了什么SQL、结果如何”。面对这个需求,开发和运维通常首先想到的是利用数据库引擎自带的原生审计功能。但在海量并发(高 QP…...
告别“权限不足”:手把手教你用CobaltStrike的Bypass UAC功能搞定Windows提权
实战指南:利用CobaltStrike突破Windows权限限制 当你手握一个普通用户权限的Beacon会话,却卡在"请求的操作需要提升"的提示前,这种挫败感每个渗透测试员都深有体会。Windows的用户账户控制(UAC)就像一堵无形的墙,将普通…...
00 | 从零打造Claude Code:AI编程Agent完整解析(一)——引言篇
从零打造Claude Code:AI编程Agent完整解析(一)——引言篇 声明: 📝 作者:甜城瑞庄的核桃(ZMJ) 原创学习笔记,欢迎分享,但请保留作者信息及原文链接哦~ 本系列文章深度解析如何从零开始构建一个类似Claude Code的AI编程助手,涵盖Agent循环、工具系统、提示词工程、权限…...
