TCP/UDP 的区别及优缺点

news/2024/5/17 18:51:16 标签: 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.niftyadmin.cn/n/5258801.html

相关文章

2024年网络安全(黑客)——自学

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高; 二、则是发展相对成熟…

Jenkins项目部署CICD

目录 什么是CI/CD 常用 CI/CD 工具 主要步骤 1、点击新建任务 2、构建自由风格项目 3、填写内容 ①、General 1)描述 2)丢弃旧的构建 ②、源码管理 1)Repository URL 2)Credentials 3)Branches to build…

stm32F4环境的配置固件库的安装与Jlink驱动的下载)与模板工程的创建

01-stm32F4环境的配置与模板工程的创建 使用开发板为stm32F407VET6,为单片机课程设计时的课程学习内容。本章节主要包括stm32F4环境的配置(固件库的安装与Jlink驱动的下载)与stm32模板工程的创建 模板工程可到我的gitee上进行下载–模板工程下…

公众号怎么提高2个限制

一般可以申请多少个公众号?许多用户在申请公众号时可能会遇到“公众号显示主体已达上限”的问题。这是因为在2018年11月16日对公众号申请数量进行了调整,具体调整如下:1、个人主体申请公众号数量上限从2个调整为1个。2、企业主体申请公众号数…

面试必备的Linux常用命令

「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 Linux常用命令 1、文件及内容2、网络3、进程服务4、…

前端处理跨域问题

处理跨域问题 由于发起ajax请求的域为http://localhost:5173, 而后台服务器的域为http://localhost:8080, 所以浏览器会限制该请求的发送, 这种问题称为跨域问题, 跨域问题可以在服务器端解决, 也可以在浏览器端解决, 咱们这一块通过配置代理的方式解决request.js中配置统一前…

SpringBoot--入门使用

目录 SpringBoot简介 什么是SpringBoot 相比Spring,SpringBoot的有哪些特点 SpringBoot入门使用 创建SpringBoot项目 配置项目名称 启动SpringBoot SpringBoot整合依赖,配置开发环境 SpringBoot整合jdbc SpringBoot整合mybatis 配置开启log日志…

vue 集成行政区域选择插件region和数据回显

故事:最近,项目需要进行行政区域围栏的绘制,由于老旧项目是利用js保存全国行政区域地址和编码,在选择器select进行匹配显示,但此方法复杂,因此选择集成区域插件region 步骤一:用命令安装region…