TCP和UDP对比的优势和劣势

简介: TCP和UDP都是传输层协议。TCP最核心的是提供了可靠性,而UDP核心是灵活性高。HTTP1.0和2.0用的是TCP,到了HTTP3.0用的就是UDP了。UDP应用数据传输、网络控制、音视频、Web技术应用较多。UDP,目标是在传输层提供直接发送报文的能力,Datagram是数据传输的最小单位,UDP协议不会帮助拆分数据,它的目标只有一个,就是发送报文。UDP的报文格式,只有五个部分组成。

TCP和UDP都是传输层协议。TCP最核心的是提供了可靠性,而UDP核心是灵活性高。HTTP1.0和2.0用的是TCP,到了HTTP3.0用的就是UDP了。

UDP应用数据传输、网络控制、音视频、Web技术应用较多。

UDP,目标是在传输层提供直接发送报文的能力,Datagram是数据传输的最小单位,UDP协议不会帮助拆分数据,它的目标只有一个,就是发送报文。

UDP的报文格式,只有五个部分组成。
image.png

Source Port是源端口号,因为UDP协议的特性(不需要ACK),因此这个字段是可以省略的,但有时候对于防火墙、代理来说,SourcePort有很重要的意义,它们需要用这个字段行过滤和路由。

Destination Port是目标端口号(这个字段不可以省略)

Length是消息体长度。

Checksum是校验和,作用是检查封包是否出错。

Data octets就是一个字节一个字节的数据,Octet是8位。

对于UDP协议来说,它的可靠性保证仅仅是靠Checksum一种方式。

校验和(Checksum)机制,这个机制一般在很多网络协议中都会存在,如果发送方用一种方式计算出Checksum,并将数据和Checksum一起发送给接收方,接收方就可以用同样的算法再计算一遍,这样就可以确定数据有没有发生损坏(变化)。

TCP和UDP的区别:

1、目的差异

首先,这两个协议的目的不同,TCP协议的核心目标是提供可靠的网络传输,而UDP的目标是在提供报文交换能力基础上尽可能的简化协议。

2、可靠性差异

TCP核心是为了保证可靠性提供更好的服务,TCP会有握手的过程,需要建立连接,保证双方同时在线。而且TCP有时间窗口持续收集无序的数据,直到这一批数据都可以合理地排序组成连续的结果。

UDP并不具备这些特点,它只管发送数据封包,而且UDP不需要ACK,这意味消息发送出去成功与否UDP都不管。

3、连接和无连接

TCP是一个面向连接的协议,传输数据必须先建立连接。UDP是一个无连接协议,数据随时都可以发送,只提供发送封包的能力。

4、流控技术

TCP使用了流控技术来确保发送方不会因为一次发送过多的数据包而使接收方接收不过来。TCP在发送缓冲区中存储数据,并在接收缓冲区中接收数据。当应用程序准备就绪时,它将从接收缓冲区读取数据。如果接收缓冲区已满,接收方将无法处理更多数据,并将其丢弃,UDP没有这样的能力。

5、传输速度

UDP协议简化、封包小,没有连接、可靠性检查等,因此单纯从传输速度上讲,UDP更快。

6、场景差异

TCP每个数据封包都需要确认,因此不适合高速数据传输场景,比如看视频、网络游戏等。

第一类:TCP场景

远程控制(SSH)

File Transfer Protocol(FTP)

邮件(SMTP、IMAP)等

点对点文件传输(微信等)

第二类:UDP场景

网络游戏

音视频传输

DNS

Ping

直播

第三类:模糊地带

HTTP(目前以TCP为主)

文件传输

总之,UDP的核心是灵活、轻量,构造了最小版本的传输层协议。在这个之上,还可以实现连接(Connection),实现会话(Session),实现可靠性(Reliability)。TCP的核心是封装好一套解决可靠性的方案。

目录
相关文章
|
23天前
|
网络协议 算法 网络性能优化
|
11天前
|
网络协议 SEO
TCP连接管理与UDP协议IP协议与ethernet协议
TCP、UDP、IP和Ethernet协议是网络通信的基石,各自负责不同的功能和层次。TCP通过三次握手和四次挥手实现可靠的连接管理,适用于需要数据完整性的场景;UDP提供不可靠的传输服务,适用于低延迟要求的实时通信;IP协议负责数据包的寻址和路由,是网络层的重要协议;Ethernet协议定义了局域网的数据帧传输方式,广泛应用于局域网设备之间的通信。理解这些协议的工作原理和应用场景,有助于设计和维护高效可靠的网络系统。
24 4
|
17天前
|
缓存 负载均衡 网络协议
面试:TCP、UDP如何解决丢包问题
TCP、UDP如何解决丢包问题。TCP:基于数据块传输/数据分片、对失序数据包重新排序以及去重、流量控制(滑动窗口)、拥塞控制、自主重传ARQ;UDP:程序执行后马上开始监听、控制报文大小、每个分割块的长度小于MTU
|
1月前
|
网络协议 前端开发 物联网
TCP和UDP区别?
本文首发于微信公众号“前端徐徐”,详细介绍了TCP和UDP两种传输层协议的核心概念、连接性和握手过程、数据传输和可靠性、延迟和效率、应用场景及头部开销。TCP面向连接、可靠、有序,适用于网页浏览、文件传输等;UDP无连接、低延迟、高效,适用于实时音视频传输、在线游戏等。
45 1
TCP和UDP区别?
|
25天前
|
Web App开发 缓存 网络协议
不为人知的网络编程(十八):UDP比TCP高效?还真不一定!
熟悉网络编程的(尤其搞实时音视频聊天技术的)同学们都有个约定俗成的主观论调,一提起UDP和TCP,马上想到的是UDP没有TCP可靠,但UDP肯定比TCP高效。说到UDP比TCP高效,理由是什么呢?事实真是这样吗?跟着本文咱们一探究竟!
49 10
|
1月前
|
网络协议 网络性能优化 C#
C# 一分钟浅谈:UDP 与 TCP 协议区别
【10月更文挑战第8天】在网络编程中,传输层协议的选择对应用程序的性能和可靠性至关重要。本文介绍了 TCP 和 UDP 两种常用协议的基础概念、区别及应用场景,并通过 C# 代码示例详细说明了如何处理常见的问题和易错点。TCP 适用于需要可靠传输和顺序保证的场景,而 UDP 适用于对延迟敏感且可以容忍一定数据丢失的实时应用。
32 1
|
1月前
|
网络协议 Linux 网络性能优化
Linux C/C++之TCP / UDP通信
这篇文章详细介绍了Linux下C/C++语言实现TCP和UDP通信的方法,包括网络基础、通信模型、编程示例以及TCP和UDP的优缺点比较。
37 0
Linux C/C++之TCP / UDP通信
|
1月前
|
存储 网络协议 Java
【网络】UDP和TCP之间的差别和回显服务器
【网络】UDP和TCP之间的差别和回显服务器
65 1
|
1月前
|
存储 网络协议 算法
更深层次理解传输层两协议【UDP | TCP】【UDP 缓冲区 | TCP 8种策略 | 三次握手四次挥手】
UDP和TCP各有所长,UDP以其低延迟、轻量级的特点适用于对实时性要求极高的应用,而TCP凭借其强大的错误检测、流量控制和拥塞控制机制,确保了数据的可靠传输,适用于文件传输、网页浏览等场景。理解它们的工作原理,特别是UDP的缓冲区管理和TCP的8种策略,对于优化网络应用的性能、确保数据的高效和可靠传输至关重要。开发者在选择传输层协议时,应根据实际需求权衡利弊,合理利用这两项关键技术。
66 5
|
1月前
|
网络协议 IDE 开发工具
主动信息搜集:Scapy完成基于TCP、UDP的主机发现
主动信息搜集:Scapy完成基于TCP、UDP的主机发现