TCP协议和UDP协议的区别

TCP 与 UDP 的 区别

有连接与无连接  

有链接:像打电话

需要双方建立连接后才能进行通话

比如说:现在我们要打电话给某个朋友。
输入号码,按下手机拨号键。
手机开始发出 嘟嘟嘟 声音,开始等待对方接听,

而且,我们拨号之后,并不是马上就能接通的!
必须要等待 对方接听之后,我们才能与其交流。

之所以说:有连接 就像 打电话一样,是因为 打电话,必须要接通了之后,才能交流;没有接通,双方就无法交流。
有连接的意思:就是在两者确认建立联系后,就可以开始交互了。

无连接:发微信

不需要接通,直接就能发数据。


发微信,我们都知道:发送信息的时候,是不需要对方在线或者回复,按下回车,立马就能加个信息发送出去,不过 对方 看没看见这条消息,我们是不确定的 。
这种情况,就叫做无连接。

TCP,就是要求双发先建立连接,连接好了,才能进行传数据。
而 UDP,直接传输数据,不需要双方建立连接。

 可靠传输与不可靠传输 

可靠传输:发送方 知道 接收方 有没有接收到数据

🔔注意!不要理解错了。
可靠传输,不是说数据发送之后,对方100% 就能收到。

而是说我数据发送之后,发送方知道对方收没收到我发的消息

比如钉钉在你向别人发送完数据后,如果对方收到了——就会显示已读,如果没收到——就还是未读状态。

🔔这里还有个坑,这里可靠和安全可没有半毛钱关系。

安全,指的是 数据在传输过程,不容易被黑客窃取,不容易被篡改。
可靠,指的是 数据发给对方,发送方能知道接收方有没有收到数据。

 不可靠传输:发送方 不知道 接收方有没有接收到数据

 面向字节流和面向数据报

面向字节流:数据是以字节为单位,进行传输的。

这个就非常类似于 文件操作中的文件内容相关的操作中的字节流。
网络传输也是一样!
假设,现有100个字节的数据。
我们可以一直发完。
也可以 一次发 10个字节,发送十次。
也可以 一次发 2 个字节,发送50次。

面向数据报:以数据报为单位,进行传输。

一个数据报都会明确大小。
一次 发送/接收 必须是 一个 完整的数据报。
不能是半个,也不能是一个半,必须是整数个。

在代码中,这两者的区别是非常明显的!

 全双工和半全双工

UDP

UDP协议是一种无连接、不可靠的传输层协议,其设计目标是尽可能地简单、快速、高效,因此不支持对数据包进行确认、重传等机制来保证数据的可靠传输。UDP协议的通信方式可以是单向,也可以是双向,但是由于其无连接的特点,通信双方需要通过协商协议自己来保证通信的顺序、可靠性等问题,因此通常被认为是一种半双工通信协议。

TCP

而TCP协议是一种全双工通信协议,支持双向同时通信,即通信双方可以同时发送和接收数据,实现全双工通信。这是因为TCP协议在建立连接时会进行三次握手,建立可靠的连接,通过确认、重传等机制保障数据的可靠传输,因此可以实现全双工通信。

TCP和UDP使用场景

TCP和UDP是两种不同的传输协议,它们在不同的场景下有不同的使用。

TCP协议:

可靠传输:TCP协议能够保证数据的可靠传输,通过TCP连接,数据包会被分段传输,每一个数据段都有一个序号,接收端会对数据段进行排序和检验,确保数据的正确性和完整性。

面向连接:TCP协议是一种面向连接的协议,在数据传输之前必须建立连接,然后才能进行数据传输。连接的建立需要进行三次握手,即发送方向接收方发送SYN报文,接收方回应ACK报文,发送方再回应ACK报文。

适用于长连接:TCP协议适用于长时间连接,例如HTTP、FTP等协议的传输,因为它能够保证数据的可靠传输,而且连接建立时需要消耗一定的时间。

UDP协议:

不可靠传输:UDP协议是一种不可靠传输的协议,发送方发送数据后就不管了,不会确认数据是否被接收方接收到。

无连接:UDP协议是一种无连接的协议,发送方发送数据时不需要建立连接,因此UDP的传输速度比TCP快。

适用于短连接:UDP协议适用于短时间连接,例如DNS解析、视频流传输等,因为它传输速度快,但不保证数据传输的可靠性。

综上所述,TCP协议适用于需要数据可靠传输、长时间连接的场景,UDP协议适用于需要传输速度快、短时间连接的场景。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

成都百洲文化传媒有限公司电商服务的新锐力量

在数字化浪潮席卷全球的今天,电商行业以其独特的魅力和巨大的市场潜力,成为了经济增长的新引擎。而在这一变革的浪潮中,成都百洲文化传媒有限公司以其专业的电商服务,成为了行业内的佼佼者。 一、电商服务特色 成都百洲文化传媒有…

vue h5使用postcss-pxtorem

1、安装我们所需要的依赖 npm install lib-flexiblenpm install postcss-pxtorem 2、在main.js中引入lib-flexible import lib-flexible/flexible 3、在项目根目录中创建文件 postcss.config.js module.exports {plugins: {autoprefixer: {},"postcss-pxtorem": …

kubernetes-Pod基于污点、容忍度、亲和性的多种调度策略(二)

Pod调度策略 一.污点-Taint二.容忍度-Tolerations三.Pod常见状态和重启策略1.Pod常见状态2.Pod的重启策略2.1测试Always重启策略2.2测试Never重启策略2.3测试OnFailure重启策略(生产环境中常用) 一.污点-Taint 在 Kubernetes 中,污点&#x…

Data-driven ADP schemes for non-zero-sum games of unknown DT nonlinear systems

Data-driven adaptive dynamic programming schemes for non-zero-sum games of unknown discrete-time nonlinear systems,2018, He Jiang, Huaguang Zhang∗, Kun Zhang, Xiaohong Cui 博弈论、最优控制和强化学习解决离散时间 multi-player 非零和博…

【Qt】QDialog对话框

目录 一、概念 二、对话框的分类 2.1 模态对话框 2.2 非模态对话框 2.3 混合属性对话框 三、消息对话框QMessageBox 四、颜色对话框QColorDialog 五、文件对话框QFileDialog 六、字体对话框QFontDialog 七、输入对话框QInputDialog 一、概念 对话框是GUI程序中不可或…

Django 评论楼创建

Django 评论楼创建 【零】最终效果预览 【一】介绍 (1)情况说明 在Django模型层中有这么个字段 parent models.ForeignKey(toself, on_deletemodels.CASCADE, verbose_name"父评论ID", nullTrue, blankTrue)这个字段是一对多的外键字段 其…

Redis入门到实战-第十九弹

Redis实战热身Count-min-sketch篇 完整命令参考官网 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://redis.io/Redis概述 Redis是一个开源的(采用BSD许可证),用作数据库、缓存、…

验证码demo(简单实现)

前言 我们注意到我们登录网站的时候经常会用到网络验证码,今天我们就简单实现一个验证码的前后端交互问题,做一个小demo 准备 我们这里并不需要依靠原生的java来实现,而是只需要引入一个maven依赖,使用现成的封装好的即可,这是我使用的是hutool工具包 网址:Hutool🍬…

MySQL 8:GROUP BY 问题解决 —— 怎么关闭ONLY_FULL_GROUP_BY (详细教程)

在使用 GROUP BY 时,我们可能会遇到以下报错: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column …… 这是因为我们在select语句中所查询的列并不被group by后面接的列所包含。 对于GROUP BY聚合操作&#xf…

油缸位置传感器871D-DW2NP524-N4

概述 油缸位置传感器是一种使用电感原理来检测物体接近的开关装置。它通过感应物体的电磁场来判断物体的位置,并将信号转化为电信号输出。当物体靠近或远离电感式接近开关时,物体的电磁场会改变,从而使接近开关产生不同的信号输出。电感式接…

Go —— defer

defer defer 语句用于延迟函数的调用,常用于关闭文件描述符、释放锁等资源释放场景。但 defer 关键字只能作用于函数或函数调用。 defer func(){ // 函数fmt.Print("Hello,World!") }()defer fmt.Print("Hello,World!&…

如何在CentOS安装可视化Docker容器管理工具Portainer并无公网IP远程管理

文章目录 前言1. 部署Portainer2. 本地访问Portainer3. Linux 安装cpolar4. 配置Portainer 公网访问地址5. 公网远程访问Portainer6. 固定Portainer公网地址 前言 Portainer 是一个轻量级的容器管理工具,可以通过 Web 界面对 Docker 容器进行管理和监控。它提供了可…

智慧公厕,为智慧城市建设注入了新的活力

随着智慧城市的快速发展,公共厕所不再是简单的功能设施,而是成为了提升城市形象、改善民生服务的重要一环。智慧公厕作为新形态的公共厕所,通过精准监测公厕内部的人体活动状态、人体存在状态、空气质量情况、环境变化情况、设施设备运行状态…

Occupancy 后处理

文章目录 bev坐标与自车坐标转换如何创建旋转矩阵 (R_veh) 偏航3D Voxel -> 2D Grid 在进行占据空间(occupancy)后处理时,需要将不同感知模块的输出进行综合融合,以实现更精确的空间占据和环境感知。以下是针对您提到的几个方面…

Java代码基础算法练习-求一个三位数的各位数字之和-2024.03.27

任务描述&#xff1a; 输入一个正整数n&#xff08;取值范围&#xff1a;100<n<1000&#xff09;&#xff0c;然后输出每位数字之和 任务要求&#xff1a; 代码示例&#xff1a; package M0317_0331;import java.util.Scanner;public class m240327 {public static voi…

LangChain入门:2.OpenAPI调用ChatGPT模型

引言 在本文中&#xff0c;我们将带您深入探索如何通过OpenAPI与ChatGPT模型进行高效交互&#xff0c;实现智能文本问答功能。通过LangChain库的实践&#xff0c;您将学习构建一个能够与用户进行自然语言对话的系统的关键步骤。 准备步骤 在动手编码之前&#xff0c;请确保您…

Linux之进程控制进程终止进程等待进程的程序替换替换函数实现简易shell

文章目录 一、进程创建1.1 fork的使用 二、进程终止2.1 终止是在做什么&#xff1f;2.2 终止的3种情况&&退出码的理解2.3 进程常见退出方法 三、进程等待3.1 为什么要进行进程等待&#xff1f;3.2 取子进程退出信息status3.3 宏WIFEXITED和WEXITSTATUS&#xff08;获取…

从零开始的软件开发实战:互联网医院APP搭建详解

今天&#xff0c;笔者将以“从零开始的软件开发实战&#xff1a;互联网医院APP搭建详解”为主题&#xff0c;深入探讨互联网医院APP的开发过程和关键技术。 第一步&#xff1a;需求分析和规划 互联网医院APP的主要功能包括在线挂号、医生预约、医疗咨询、健康档案管理等。我们…

2024河北煤炭装备展览会|河北采煤装备展会|河北煤博会

2024中国&#xff08;石家庄&#xff09;国际煤炭装备及矿山设备博览会 时间&#xff1a;2024年7月4-6日 地点&#xff1a;石家庄国际会展中心.正定在快速发展的科技时代&#xff0c;能源行业始终是国家发展的重要支柱。作为传统的能源巨头&#xff0c;煤炭产业在面临转型升…

jdk8中的Arrays.sort

jdk8中Arrays.sort 这里可以看到根据传入数组类型的不同&#xff0c;排序的算法是由区别的。 拆分解析 我们在平时引用的时候&#xff0c;一般只会传入一个数组&#xff0c;但是真正调用的时候&#xff0c;参数会进行补全。 public static void sort(int[] a) {DualPivotQui…