当前位置: 首页 > news >正文

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 使用滑动窗口机制进行流量控制。发送方窗口的大小决定了它可以同时发送的数据量,接收方窗口的大小决定了它可以同时接收的数据量。通过调整发送方的发送速率,以适应接收方的接收效率,防止接收方缓冲区(Receive Buffer)溢出,这种机制可以避免网络拥塞并确保通信的稳定性。
  • 拥塞控制。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字节
数据顺序保证有序不保证有序
流量控制
拥塞控制

相关文章:

TCP/UDP 的特点、区别及优缺点

1.TCP协议 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP协议通过建立连接、数据确认(编段号和确认号)和数据重传等机制,保证了数据的可靠性…...

使用 Python 使用贝叶斯神经网络从理论到实践

一、说明 在本文中,我们了解了如何构建一个机器学习模型,该模型结合了神经网络的强大功能,并且仍然保持概率方法进行预测。为了做到这一点,我们可以构建所谓的贝叶斯神经网络。 这个想法不是优化神经网络的损失&#xff0…...

Linux 中的网站服务管理

目录 1.安装服务 2.启动服务 3.停止服务 4.重启服务 5.开机自启 6.案例 1.安装服务 网址服务程序 yum insatll httpd -y 查看所有服务 systemctl list-unit-files 2.启动服务 systemctl start httpd 查看服务进程,确认是否启动 ps -ef|grep httpd 3.停止…...

阿里云cdn设置相同的域名路径访问不同的oss目录

1.设置回源配置,添加回源URL改写 2.设置跨域,cdn的跨域优先oss 3.回源设置...

提示(Prompt)工程中提示词的开发优化基础概念学习总结

本文对学习过程进行总结,仅对基本思路进行说明,结果在不同的模型上会有差异。 提示与提示工程 提示:指的是向大语言模型输入的特定短语或文本,用于引导模型产生特定的输出,以便模型能够生成符合用户需求的回应。 提示…...

C#基础——语法学习

C#的基本语法 在介绍基本语法之前我们先来大概讲一下创建好的这些文件都是做什么的 .sln文件:将项目和解决方案项结合到一起 .vs文件夹:用来存储当前解决方案中关于用户的设置和自定义项,比如断点,主题等。(一般都将其…...

vue-实现高德地图-省级行政区地块显示+悬浮显示+标签显示

<template><div><div id"container" /><div click"showFn">显示</div><div click"removeFn">移除</div></div> </template><script> import AMapLoader from amap/amap-jsapi-load…...

flutter ‘Gradle Libs‘ was added by build file ‘app/build.gradle‘

相关问题解释文章 How to prefer settings.gradle repositories over build.gradle repositoriesMode 解释 问题描述 此问题是&#xff0c;直接创建的flutter项目&#xff0c;需要配置其他的maven仓库地址&#xff0c;和第三方module&#xff0c;结果始终都是无法成功 错误…...

Java中的链式编程风格与应用案例

引言 链式编程是一种在编程中经常使用的风格&#xff0c;它可以使代码更加简洁、易读和易于维护。在Java中&#xff0c;链式编程可以通过方法链的方式来实现。本文将介绍Java中的链式编程风格&#xff0c;并通过几个应用案例来说明其实际应用。 一、链式编程的概念与特点 链式…...

MTK Android P Sensor架构(一)

需求场景&#xff1a; 本来如果只是给传感器写个驱动并提供能读取温湿度数据的节点&#xff0c;是一件比较轻松的事情&#xff0c;但是最近上层应用的同事要求我们按照安卓标准的流程来&#xff0c;这样他们就能通过注册一个服务直接读取传感器事件数据了。这样做的好处就是第…...

低代码开发与传统软件开发:未来趋势与竞争格局

近年来&#xff0c;低代码开发平台的快速发展引起了各行各业的广泛关注。低代码开发平台简化了软件开发的复杂性&#xff0c;提供了更快速、更灵活的开发方式。于是&#xff0c;许多人开始产生一个疑问&#xff1a;未来低代码开发是否会取代传统软件开发&#xff1f;今天这篇文…...

leetcode 股票问题全序列

1 只允许一次交易&#xff0c;121题&#xff0c;买卖股票的最佳时机 class Solution {/*给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票…...

SpringBoot中日志的使用log4j2

SpringBoot中日志的使用log4j2 1、log4j2介绍 Apache Log4j2 是对 Log4j 的升级&#xff0c;它比其前身 Log4j 1.x 提供了重大改进&#xff0c;并提供了 Logback 中可用的许多改 进&#xff0c;同时修复了 Logback 架构中的一些问题&#xff0c;主要有&#xff1a; 异常处理…...

机械设备企业网站建设的效果如何

机械设备涵盖的类目比较广&#xff0c;其市场需求也是稳增不减&#xff0c;也因此无论大小企业都有增长的机会&#xff0c;当然这也需要靠谱的工具及正确的决策。 对机械设备企业来说&#xff0c;产品品质自然是首位&#xff0c;而向外打造品牌、扩展信息及拓客转化自然也是非…...

设计模式之结构型设计模式(二):工厂模式 抽象工厂模式 建造者模式

工厂模式 Factory 1、什么是工厂模式 工厂模式旨在提供一种统一的接口来创建对象&#xff0c;而将具体的对象实例化的过程延迟到子类或者具体实现中。有助于降低客户端代码与被创建对象之间的耦合度&#xff0c;提高代码的灵活性和可维护性。 定义了一个创建对象的接口&…...

算法模板之单链表图文讲解

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;算法模板、数据结构 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. ⛳️使用数组模拟单链表讲解1.1 &#x1f514;为什么我们要使用数组去模拟单链表…...

【强化学习-读书笔记】表格型问题的 Model-Free 方法

参考 Reinforcement Learning, Second Edition An Introduction By Richard S. Sutton and Andrew G. Barto无模型方法 在前面的文章中&#xff0c;我们介绍的是有模型方法&#xff08;Model-Based&#xff09;。在强化学习中&#xff0c;"Model"可以理解为算法…...

【手撕算法系列】k-means

k-means k-means算法介绍 k-means算法介绍 K-means算法是一种用于聚类的迭代算法&#xff0c;它将数据集划分为K个簇&#xff0c;其中每个数据点属于与其最近的簇的中心。这个算法的目标是最小化簇内的平方和误差&#xff08;簇内数据点与簇中心的距离的平方和&#xff09;。 …...

D33|动态规划!启程!

1.动态规划五部曲&#xff1a; 1&#xff09;确定dp数组&#xff08;dp table&#xff09;以及下标的含义 2&#xff09;确定递推公式 3&#xff09;dp数组如何初始化 4&#xff09;确定遍历顺序 5&#xff09;举例推导dp数组 2.动态规划应该如何debug 找问题的最好方式就是把…...

C语言----文件操作(二)

在上一篇文章中我们简单介绍了在C语言中文件是什么以及文件的打开和关闭操作&#xff0c;在实际工作中&#xff0c;我们不仅仅是要打开和关闭文件&#xff0c;二是需要对文件进行增删改写。本文将详细介绍如果对文件进行安全读写。 一&#xff0c;以字符形式读写文件&#xff…...

oracle 10046事件跟踪

10046事件是一个很好的排查sql语句执行缓慢的内部事件&#xff0c;具体设置方式如下&#xff1a; 根据10046事件跟踪SQL语句 1、 alter session set events 10046 trace name context forever,level 12; 2、执行SQL语句 3、关闭10046事件 alter session set events 10046 trace…...

微软自带浏览器Edge,无法关闭“保存历史记录网站的屏幕截图”解决方案

微软自带浏览器Edge&#xff0c;无法关闭“保存历史记录网站的屏幕截图”解决方案 吐槽1&#xff1a;Windows自带的Chrome内核版本的浏览器Microsofg Edge刚发布时可谓一股清流&#xff0c;启动速度快&#xff0c;占用内存较小&#xff0c;相信很多人也开始抛弃正代Chrome&…...

讲座 | 颠覆传统摄像方式乃至计算机视觉的“脉冲视觉”

传统相机拍摄视频时其实是以一定帧率进行采样&#xff0c;视频其实还是一串图片的集合&#xff0c;因此低帧率时会觉得视频卡&#xff0c;拍摄高速运动物体时会有运动模糊等等问题。然而你能想象这一切都可以被“脉冲视觉”这一前沿技术改变吗&#xff1f; 今天下午听了北京大学…...

uniGUI学习之UniHTMLMemo1富文本编辑器

1]系统自带的富文本编辑器 2]jQueryBootstarp富文本编辑器插件summernote.js 1]系统自带的富文本编辑器 1、末尾增加<p> 2、增加字体 3、解决滚屏问题 4、输入长度限制问题 5、显示 并 编辑 HTML源代码(主要是图片处理) 1、末尾增加<p> UniHTMLMemo1.Lines…...

详细教程 - 从零开发 鸿蒙harmonyOS应用 第四节 (鸿蒙Stage模型 登录页面 ArkTS版 推荐使用)

在鸿蒙OS中&#xff0c;Ability是应用程序提供的抽象功能&#xff0c;可以理解为一种功能。在应用程序中&#xff0c;一个页面即一种能力&#xff0c;如登录页面&#xff0c;即具有登录功能的能力。以下是对鸿蒙新建项目的登录代码功能的详细解读和工作流程的描述&#xff1a; …...

uniapp怎么实现授权登录

在Uniapp中实现授权登录通常涉及以下几个步骤&#xff1a; 创建登录按钮&#xff1a;在页面中创建一个按钮&#xff0c;用于触发登录操作。 获取用户授权&#xff1a;当用户点击登录按钮时&#xff0c;调用uni.login或uni.getUserInfo等API获取用户授权。 处理授权回调&#…...

从零开始:前端架构师的基础建设和架构设计之路

文章目录 一、引言二、前端架构师的职责三、基础建设四、架构设计思想五、总结《前端架构师&#xff1a;基础建设与架构设计思想》编辑推荐内容简介作者简介目录获取方式 一、引言 在现代软件开发中&#xff0c;前端开发已经成为了一个不可或缺的部分。随着互联网的普及和移动…...

椋鸟C语言笔记#26:数据在内存中的存储(大小端字节序)、浮点数的存储(IEEE754)

萌新的学习笔记&#xff0c;写错了恳请斧正。 目录 大小端字节序 什么是大小端 写一个判断大小端的程序 浮点数在内存中的存储&#xff08;IEEE 754规则&#xff09; 引入 存储规则解释 读取规则解释 1.阶码不全为0或全为1&#xff08;规格化数&#xff09; 2.阶码全为…...

设计模式——组合模式(结构型)

引言 组合模式是一种结构型设计模式&#xff0c; 你可以使用它将对象组合成树状结构&#xff0c; 并且能像使用独立对象一样使用它们。 问题 如果应用的核心模型能用树状结构表示&#xff0c; 在应用中使用组合模式才有价值。 例如&#xff0c; 你有两类对象&#xff1a; ​…...

鸿蒙小车之多任务调度实验

说到鸿蒙我们都会想到华为mate60&#xff1a;遥遥领先&#xff01;我们一直领先&#xff01; 我们这个小车也是采用的是鸿蒙操作系统&#xff0c;学习鸿蒙小车&#xff0c;让你遥遥领先于你的同学。 文章目录 前言一、什么是任务&#xff1f;为什么要有任务二、任务的状态三、任…...

去菲律宾做网站/重庆seo快速优化

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.1文档来源为:从网络收集整理.word版本可编辑.NICE3000调试说明书V 1.00目录1.调试工具使用说明………………………………………………………41.1调试工具……………………………………………………………………………41…...

湘潭九华网站/企业网络推广计划书

centos7安装配置Jboss注&#xff1a;安装Jboss前先安装好jdk1.81、下载Jboss各版本下载链接见如下博客:这里选择下载jboss-eap-6.4.0.zip下载后上传到centos72、安装解压jboss-eap-6.4.0.zip&#xff0c;放到目录/usr/local/3、配置环境变量在文件/etc/profile中添加以下内容&a…...

网站首页是什么/seo推广工具

//这就类似int型实参传值给int型形参&#xff0c;在函数中改变形参的值对实参无影响&#xff0c;此处p传的是p所存储的地址&#xff0c;而非指针p的地址 //二级指针用于存放一级指针地址&#xff0c;在函数内部就可对它的指向进行更改。就像传int型数据地址&#xff0c;用一级指…...

遵义在线网站建设/微博营销成功案例8个

这篇文章解决的问题 作者认为&#xff0c;之前的工作都将源推文独立的建模&#xff0c; 而没有考虑不同节点之间的影响&#xff0c;所以没有很好的表示出不同节点之间的关系 作者如何解决这个问题的 作者提出了一个全局-局部的注意力网络&#xff08;GLAN来检测谣言&#xf…...

淘宝网站优化实例/什么是电商

先上软件效果图 代码如下1.根据Url地址得到网页的html源码 1 public static string GetWebContent(string Url)2 {3 string strResult "";4 try5 {6 HttpWebRequest request (HttpWebRequest)WebReq…...

大数据平台网站建设/软件注册推广平台

1.实现目标&#xff1a; 选择用户角色&#xff0c;自动勾选权限。 2. (1)MySQL数据库的建立 (2)ng-repeat指令显示用户权限 (3)ng-checked指令控制用户权限 3.实例 (1)MySQL数据库的建立 t_role表 id rolename 1 系统管理员 2 总经理 r_right表 id …...