TCP/UDP 的区别及优缺点

1.TCP协议

        传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP协议通过建立连接、数据确认(编段号和确认号)和数据重传等机制,保证了数据的可靠性和顺序性。另外,TCP 还提供三次握手协议、拥塞控制机制,有助于流量控制、错误控制和拥塞控制,这使得TCP高度可靠。TCP适合传输对数据完整性和稳定性要求较高的数据。 常见协议有HTTP、HTTPS、FTP、SMTP。

1.1 功能

  • 寻址/多路复用。TCP 端口决定了更高层的应用程序进程。较高层主要多路复用从各个进程接收的数据。此外,它在底层网络层协议的帮助下发送多路复用数据。
  • 建立、管理和终止连接。不同网络上想要通信的设备必须遵循一组过程来设置它们之间的连接。通过这种连接,数据可以从一台设备传输到另一台设备。TCP 协议进一步管理已建立的连接。通信完成后,协议将终止此连接。
  • 处理和包装数据TCP 协议从更高层接收数据并将其打包到消息中,以进一步将其发送到目标 TCP 软件。驻留在接收端的软件解包数据并将其提供给目标计算机上的应用程序。
  • 传输数据。打包的数据按照分层原则传输到其他设备上运行的 TCP 进程。
  • 提供可靠性和传输质量服务。TCP 提供的服务允许应用程序将协议视为传输数据的可靠媒介。
  • 提供流量控制和拥塞避免功能。该协议控制两个设备之间的数据流并处理拥塞。

1.2 特点

  • 面向连接。TCP 要求在通信前先建立连接,并在通信结束后关闭连接。建立连接的方法是“三次握手”,关闭连接的方法是“四次挥手”,这种连接方式提供了可靠的通信机制,保证了数据传输的可靠性。
  • 可靠传输。TCP 通过数据确认(编段号和确认号)和重传机制来保证数据传输的可靠性。当接收方收到数据包后,它会向发送方发送一个确认ACK信号。如果发送方在合理的往返时延(RTT,Round-Trip Time)内未收到确认信号,发送方会重传数据包。这种机制确保了数据无丢失、无重复和无损坏。
  • 顺序控制。TCP 使用序列号对数据包进行标识,以便接收方按正确顺序重新组合数据流。TCP为了保证报文传输的可靠性,会给每个报文添加一个编段号,编段号保证了接收方按序接收组合数据。当接收方接收到数据包后,它会向发送方发送一个对应的确认号,告知发送发已收到这段报文。如果接收到的数据包序列号不正确,接收方将通知发送方重新发送数据包。
  • 流量控制。TCP 使用滑动窗口机制进行流量控制。发送方窗口的大小决定了它可以同时发送的数据量,接收方窗口的大小决定了它可以同时接收的数据量。通过调整发送方的发送速率,以适应接收方的接收效率,防止接收方缓冲区溢出,这种机制可以避免网络拥塞并确保通信的稳定性。
  • 拥塞控制。TCP 通过拥塞控制机制来防止网络拥塞。当网络出现拥塞时,TCP会通过降低发送速率来减轻网络负担,从而缓解拥塞,保持整体网络的稳定性。它使用一系列算法(如慢启动、拥塞避免、快重传和快恢复)来动态地调整发送速率,以避免网络拥塞并确保通信质量。
  • 点对点连接。每条TCP传输连接只能有两个端点,只能进行点对点的数据传输,不支持多播和广播传输方式。
  • 面向字节流。TCP 是面向字节流的协议,不像UDP那样每个报文单独传输,而是在不保留报文边界的情况下以字节流的方式进行传输。发送方将数据划分为小的数据块,接收方接收到数据后再根据需要重组这些数据块。所谓字节流指的是以传输过程中流入进程和流出进程的字节序列,虽然传输过程中是一个一个数据报,但这只是为了方便传输,接收方接收到数据后会重新装配这些数据。   
  • 全双工通信。TCP 支持全双工通信,允许双方在连接建立后可同时发送和接收数据。TCP 连接的两端都设有发送缓存和接受缓存,用来临时存放双向通信的数据。当然,TCP可以立即发送一个数据段,也可以缓存一段时间以便一次发送更多的数据段(最大的数据段大小取决于MSS)。

1.3 优缺点

优点:

  • 面向连接,稳定性强、可靠性高、顺序性强
  • 流量控制和拥塞控制,避免接收方过载和网络拥塞;

缺点:

  • 传输速度慢、效率低。TCP在传输数据之前,需要进行三次握手建立连接,传输完成后还要进行四次挥手断开连接,因此传输速度相对较慢。而且在传输过程中,还要考虑确认机制,重传机制和拥塞机制等,这都会消耗一定时间,使得传输效率略低,所以TCP不适合实时性要求高的场景;
  • 只能点对点通信,不支持多播和广播;
  • 占用系统资源高。传输过程中,TCP协议需要维护连接状态和传输控制信息,会消耗部分系统资源;
  • 易被攻击。因为TCP有确认机制、三次握手机制,这些也导致TCP容易被利用,实现DOS、DDOS、CC等攻击;
  • 不适合大规模数据传输。TCP协议在传输大规模数据时,容易导致网络拥塞和数据丢失。

1.4 适用场景

        适用于对数据传输可靠性要求较高的场景,如网页浏览、文件传输、收发邮件、远程登录、数据库访问等。

2.UDP协议

        用户数据报协议(UDP,User Datagram Protocol)是 TCP/IP 模型传输层的无连接协议,提供面向事务的简单而不可靠信息传送服务。它只是一个包装器协议,便于给应用程序提供一种无需建立连接就可以发送封装的 IP 数据包的方法。它既不建立连接,也不检查目标计算机是否已准备好接收,只负责将数据发送给目标计算机,UDP能传输的数据报最大是64K(包含UDP首部)。所以UDP既不保证数据的传递(可能会丢包),也不重传丢失的数据包,相对不太可靠,但是,与TCP相比,它传输数据的速度更快,常用于传输音频、视频、多媒体数据流等数据,常用于音频和多媒体应用。常见协议有NTP、DHCP、TFTP、DNS。

2.1 特点

  • 面向无连接。UDP 协议在通信之前不需要建立连接,也不需要维护连接(发送结束时没有连接可释放),数据报直接发送给目标主机,并且不会对数据报文进行任何拆分和拼接操作,从而降低了通信的延迟;
  • 不可靠传输。UDP 协议不保证数据传输的可靠性、完整性和顺序性,也不提供重传机制,数据报在传输过程中可能会丢失、重复、乱序等,容易导致网络拥塞;
  • 支持多播和广播。UDP协议不仅支持一对一的传输方式,还支持将数据报同时发送给多个主机,可以用于多播和广播。
  • 面向报文。UDP 协议对应用程序传递给它的数据既不合并,也不拆分,而是保留这些报文的边界,将每条数据封装成独立的数据报进行传输,每个数据报都是独立的实体,不会进行拆分和重组。
  • 快速高效。UDP 协议相对简单,头部开销小(仅8个字节),没有建立连接和维护连接的开销,UDP会尽最大努力去传输和接受数据,传输效率较高。

2.2 优缺点

优点:

  • 传输速度快、实时性高。由于UPD无需建立连接,且不提供可靠性保证,所以UDP传输速度相对较快;
  • 漏洞少,相对安全;
  • 开销小。UDP不需要维护连接状态和数据确认,占用较少的网络资源。

缺点:

  • 传输不可靠、稳定性差;
  • 顺序性差。

2.3 适用场景

        由于UDP协议的简单性,开销相对较小,传输效率较高,所以常用于一些对数据传输的实时性要求较高,但对数据完整性要求不严格的应用场景。如实时通信(音频、视频会议/通话和实时游戏)、流媒体(音频、视频实时播放)、DNS解析、多播和广播。

3.TCP&UDP的区别

TCPUDP
连接方式面向连接无连接
传输方式面向字节流传输面向报文传输
传输效率速度相对略慢、效率略低快速
传输可靠性可靠传输不可靠传输
连接数量只能一对一通信支持一对一、一对多、多对一和多对多交互通信
报文大小首部最小20字节,最大60字节首部开销小,仅8字节
数据顺序保证有序不保证有序
流量控制
拥塞控制

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

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

相关文章

​secrets --- 生成管理密码的安全随机数​

3.6 新版功能. 源代码: Lib/secrets.py secrets 模块用于生成高度加密的随机数,适于管理密码、账户验证、安全凭据及机密数据。 最好用 secrets 替代 random 模块的默认伪随机数生成器,该生成器适用于建模和模拟,不宜用于安全与加密。 参见…

Orange Comet利用Sui Kiosk进行游戏道具和知识产权保护

Orange Comet与AMC合作开发基于《行尸走肉》系列的NFT和游戏,首要关注的问题就是保护AMC的知识产权。利用Sui的Kiosk原语不仅让Orange Comet向AMC保证其资产安全,而且为即将推出的《行尸走肉大陆》游戏打开了无限的可能性。 Kiosk是Sui上的一个原语&…

记录一次chatGPT人机协同实战辅助科研——根据词库自动进行情感分析

有一个Excel中的一列,读取文本判断文本包含积极情感词.txt和消极情感词.txt的个数,分别生成两列统计数据 请将 ‘your_file.xlsx’ 替换为你的Excel文件名,Your Text Column’替换为包含文本的列名。 这个程序首先读取了积极和消极情感词&…

mac 环境下 goframe安装GF开发工具 gf-cli(安装包方式安装)

mac 环境下 goframe安装GF开发工具 gf-cli(安装包方式安装) 安装包网址 链接: link 终端输入命令进行安装 ./gf_darwin_amd64 但是产生如下报错,无法安装 使用一下命令给安装权限 chmod 0777 gf_darwin_amd64 && ./gf_darwin_a…

SAP ABAP excel文件模板上传下载

一:事物码smw0 二:上传步骤 程序源码: l_filename XX.xls.l_muban z123. *&---下载模板PERFORM frm_get_fullpath CHANGING gv_fullpath gv_path gv_name. *&---路径为空则退出IF gv_fullpath IS INITIAL.MESSAGE 用户取消操作 T…

鸿蒙开发 - ohpm安装第三方库

前端开发难免使用第三方库,鸿蒙亦是如此,在使用 DevEco Studio 开发工具时,如何引入第三方库呢?操作步骤如下,假设你使用的是MacOS,假设你已经创建了了一个项目: 一、配置 HTTP Proxy 在打开了…

实时云渲染技术下的虚拟汽车展厅 为什么越来越受青睐?

虚拟汽车展厅正成为各大车企展示和推广汽车的热门选择。这一趋势背后,反映了汽车行业对数字化转型和消费者需求变化的灵敏应对。 虚拟汽车展厅通常需要大量的3D建模和渲染技术来展示汽车的逼真效果。而点量实时云渲染技术可以通过云端计算来实现实时渲染&#xff0…

​hashlib --- 安全哈希与消息摘要​

源码: Lib/hashlib.py 本模块针对许多不同的安全哈希和消息摘要算法实现了一个通用接口。 包括了 FIPS 安全哈希算法 SHA1, SHA224, SHA256, SHA384, SHA512, (定义见 the FIPS 180-4 standard), SHA-3 系列 (定义见 the FIPS 202 standard) 以及 RSA 的 MD5 算法 (…

http 与 websocket

WebSocket 是 HTML5 规范提出的一种协议;目前除了完犊子的 IE 浏览器,其他浏览器都基本支持。他是一种协议,万变不离其宗,也是基于 TCP 协议的;和 HTTP 协议是并存的两种协议。 WebSocket 连接的过程是: 客…

Lua语言

Lua 是一种轻量级、高效、可嵌入的脚本语言,经常用于嵌入到其他应用程序中作为脚本语言使用。它具有以下特点: 轻量级: Lua 的设计非常精简,只包含必要的功能,因此它的大小和内存占用都很小。 可嵌入性: …

如何通过上下滑动实现亮度和音量调节(ArkUI)

场景说明 在音视频应用中通常可以通过上下滑动来调节屏幕亮度和音量大小,本例即为大家介绍如何实现上述UI效果。 说明: 由于当前亮度和音量调节功能仅对系统应用开发,所以本例仅讲解UI效果的实现。 效果呈现 本例效果如下: 当在…

打破空间限制,畅享真实生活

直播已经成为了当今社会中非常流行的一种娱乐方式,也是人们获取信息和互动的重要渠道之一。而无绿幕直播,则是近年来兴起的一种特殊形式,它打破了以往直播的空间限制,让观众们能够更贴近主播,更真实地感受到直播背后的…

2-rabbitmq-发布订阅、发布订阅高级之Routing(按关键字匹配)、发布订阅高级之Topic(按关键字模糊匹配)、基于rabbitmq实现rpc

1 发布订阅 2 发布订阅高级之Routing(按关键字匹配) 2.1 发布订阅高级之Topic(按关键字模糊匹配) 3 基于rabbitmq实现rpc 1 发布订阅 发布者 import pika credentials pika.PlainCredentials("admin","admin") connection pika.BlockingConnection(pik…

昇腾910安装驱动出错,降低Centos7.6的内核版本

零、问题描述: 在安装Atlas800-9000服务器的驱动的时候,可能会出现错误:Dkms install failed, details in : /var/log/ascend_seclog/ascend_install.log 如下所示: [rootlocalhost ~]# ./Ascend-hdk-910-npu-driver_23.0.rc3_l…

Git远程操作

目录 1.远程操作 1.1理解分布式版本控制系统 1.2远程仓库. 1.2.1新建远程仓库 1.2.2克隆远程仓库 1.2.3向远程仓库推送 1.2.4拉取远程仓库 1.3配置Git 1.3.1忽略特殊文件 1.3.2给命令配置别名 2.标签管理 2.1理解标签 2.2创建标签 2.3操作标签 1.远程操作 1.1理…

MacOS上配置Jenkins开机自启动

之前文章有写过,如何在Windows环境下,通过vbsbat脚本的组合拳实现Jenkins的开机自启动,最近换了电脑,又要搭建Jenkins了,顺带整理分享下MacOS上配置Jenkins开机自启动的方法。 具体配置步骤: 打开终端应用…

HTTP深度解析:构建高效与安全网络的关键知识

1. HTTP基础及其组件 我首先想和大家分享的是HTTP的基础知识。HTTP,即超文本传输协议,是互联网上最常用的协议之一。它定义了浏览器和服务器之间数据交换的规则,使得网页内容可以从服务器传输到我们的浏览器上。想象一下,每当你点…

Eclipse 将已有maven工程转为微服务

以下是将已有Maven工程转为微服务的步骤: 将已有的Maven工程中的每个模块作为独立的服务,每个模块都需要有独立的pom.xml文件,以便进行单独的构建和部署。 引入Spring Boot和Spring Cloud的依赖,以便于实现微服务化的相关功能&am…

为 PHP 引入 Python 生态的经验分享

编译安装 phpy 可以作为 PHP 的扩展,也可以作为 Python 的 C 模块。既可以在 PHP 代码中调用 Python 的库,也可以在 Python 中调用 PHP 的类和函数。 作为 Python 模块时依赖 PHP 的 embed SAPI ,检查 PHP 的目录中,确保存在 libphp.so ll /opt/php-8.…

19-数据结构-查找-散列查找

目录 一、散列查找结构思路图 二、哈希函数 三、解决冲突 1.开放地址法 1.1.线性探测法(线性探测再散列法) 1.2.平方探测法(二次探测再散列) 1.3.再散列法(双散列法) 2.拉链法 2.1简介 四、散列查…