Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >TCP 和 UDP 有什么区别?

TCP 和 UDP 有什么区别?

作者头像
前端西瓜哥
发布于 2022-12-21 11:42:05
发布于 2022-12-21 11:42:05
5380
举报

大家好,我是前端西瓜哥,今天来聊聊 TCPUDP 的区别。

TCP 和 UDP 都是 TCP/IP 协议簇中的比较有代表性的 传输层协议。这里的传输层负责为应用程序提供端对端的通信服务。

TCP,全称 Transmission Control Protocol,中文为传输控制协议,是一种 面向连接的、可靠的、基于字节流的传输层通信协议

TCP 需要先在端到端进行正式的连接后,才开始传输真正的数据,且有重传等机制保证数据能够可靠地收发。

UDP,全称 User Datagram Protocol,中文为用户数据报协议,它是一种无连接的面向数据报的协议。

是否面向连接

TCP 是面向连接的,在发送真正的数据前,需要先建立 TCP 链接,即我们常说的 TCP 三次握手。这时数据就可以在两端之间进行任意方向的传输。如果要断开连接,也要进行 TCP 四次挥手。

关于建立和断开 TCP 连接,具体可以看我的这两篇文章:

  1. 你需要知道的 TCP 三次握手
  2. 你需要知道的 TCP 四次挥手

UDP 则是无连接的,知道 IP 地址后,直接就将数据发送过去了,也不做数据报文的拆分和拼接。

是否可靠

TCP 是可靠的连接,会给每个 TCP 包设置序号,来确保消息发送的 顺序正确

接收端接受数据后会返回 ACK 确认,客户端如果一段时间没收到 ACK,会认为数据可能丢包了,就会进行重传,这样就能 确保数据是完整的

TCP 头部还有一个校验和(checksum)来确定数据是否因为信号突变产生出错,如果出错就丢掉。UDP 也可以使用校验和,不过它是可选的。

UDP 不需要额外建立连接。因为没有重传机制,所以不保证消息能成功地发送给对方。发送端发出 UDP 数据后,数据不会进行备份,因为 UDP 不会重发。

UDP 不保证发送的数据的顺序,基本上是乱序的。

速度

TCP 需要建立连接,并带有校验和重传机制,所以速度会相对较慢。

UDP 很快,因为它是自由的。

是否支持广播

广播(broadcast)是指将信息数据包发往指定网络范围内的所有设备。

TCP 不支持广播,只能在固定的两端进行收发。

UDP 支持广播。

传输方式

TCP 面向字节流的。所谓字节流,就是应用层的一个完整的消息,会被 TCP 拆分和组合,放到 TCP 包里进行发送。

相邻两个数据的边界需要应用层自己来确定。比如 HTTP/1 通过换行来切割头字段,并通过 Content-Length 来确定请求主体的长度,来确定截断边界。

UDP 是面向报文的,不会对应用层完整的消息进行拆分,直接放到 UDP 包里。一个 UDP 就是一个完整的数据。

场景

UDP 的优点是快,不需要做额外的建立连接工作,且减少了额外开销,所以适合实时性强的场景。常见的场景有

  1. 流媒体(当然也有些流媒体实时性要求不高)
  2. 高实时性的多人竞技游戏
  3. 音视频通话
  4. DNS 查询

TCP 的优点是数据可靠,适合要求质量的场景。绝大多应用软件都使用 HTTP 请求,而 HTTP 是基于 TCP 的。

结尾

TCP 可靠,UDP 快,这是它们最大的不同。

我是前端西瓜哥,欢迎关注我,学习更多前端知识。


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端西瓜哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
tcp和udp的区别和使用场景_TCP跟UDP有什么不同
TCP 是一种面向有连接的传输层协议,能够对自己提供的连接实施控制。适用于要求可靠传输的应用,例如文件传输。面向字节流,传输慢
全栈程序员站长
2022/11/05
9000
tcp和udp的区别和使用场景_TCP跟UDP有什么不同
网络传输协议:TCP和UDP的区别
1. 定义 : TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
神的孩子都在歌唱
2025/03/05
1670
网络传输协议:TCP和UDP的区别
TCP和UDP的区别
我们都知道TCP和UDP作为传输协议,被广泛应用于网络通信。这些基础的网络知识也是需要了解,既然两种传输协议都可以用于通信,那它们两者又有何区别。本文将以下面5个点进行对比:
WahFung
2022/05/11
7020
TCP和UDP的区别
TCP和UDP详解
经历了上面的三次握手过程,客户端和服务端都确认了自己的接收、发送能力是正常的。之后就可以正常通信了。 每次都是接收到数据包的一方可以得到一些结论,发送的一方其实没有任何头绪。我虽然有发包的动作,但是我怎么知道我有没有发出去,而对方有没有接收到呢? 而从上面的过程可以看到,最少是需要三次握手过程的。两次达不到让双方都得出自己、对方的接收、发送能力都正常的结论。 其实每次收到网络包的一方至少是可以得到:对方的发送、我方的接收是正常的。而每一步都是有关联的,下一次的“响应”是由于第一次的“请求”触发,因此每次握手其实是可以得到额外的结论的。 比如第三次握手时,服务端收到数据包,表明看服务端只能得到客户端的发送能力、服务端的接收能力是正常的,但是结合第二次,说明服务端在第二次发送的响应包,客户端接收到了,并且作出了响应,从而得到额外的结论:客户端的接收、服务端的发送是正常的。
是阿超
2021/12/30
1.1K0
网络编程之快速搞懂TCP和UDP的区别
网络协议是每个搞网络通信应用开发(比如IM、推送、网关等等)的程序员都必须要掌握的基础知识,TCP/IP协议簇中有两个最具有代表性的传输层协议——分别是 TCP 和 UDP。
大忽悠爱学习
2022/05/06
5670
网络编程之快速搞懂TCP和UDP的区别
TCP/IP协议之传输层:TCP/UDP协议详解(一)
在TCP/IP网络体系结构中,TCP(传输控制协议,Transport Controll Protocol、UDP(用户数据报协议,User Data Protocol)是传输层最重要的两种协议,为上层用户提供级别的通信可靠性。
用户7557625
2020/07/15
3.5K0
TCP/IP协议之传输层:TCP/UDP协议详解(一)
TCP 和 UDP 的区别:解析网络传输协议
在开始之前,推荐大家阅读一篇文章《好技能 | Chromium 是如何解决队头阻塞问题的》https://cloud.tencent.com/developer/article/2470234,该文章介绍了 Chromium 为解决队头阻塞问题,从 2013 年起多次迭代重构底层消息机制的过程,有兴趣的朋友可以去了解下。
一杯茶Ja
2024/11/23
1.8K0
网络编程懒人入门(十三):一泡尿的时间,快速搞懂TCP和UDP的区别
本文引用了作者Fundebug的“一文搞懂TCP与UDP的区别”一文的内容,感谢无私分享。
JackJiang
2021/12/29
4510
网络编程懒人入门(十三):一泡尿的时间,快速搞懂TCP和UDP的区别
详解TCP和UDP协议的原理和区别?
TCP和UDP是网络通信协议中两个常见的传输层协议,它们具有不同的特点和适用场景。本文将详细介绍TCP和UDP协议的原理和区别。
用户1289394
2023/08/22
1K0
详解TCP和UDP协议的原理和区别?
TCP 和 UDP 的区别及流量控制,拥塞控制,快重传,快恢复算法详解
在上一则文章中,对 TCP 的三次握手建立连接和四次挥手释放连接进行了详细地阐述,本节教程针对于 TCP 的其他内容进行讲解,首先是同处于传输层协议的UDP协议,这两者有什么区别与联系呢?
wenzid
2021/08/13
2K0
TCP 和 UDP 的区别及流量控制,拥塞控制,快重传,快恢复算法详解
每日一题:三次握手与四次挥手上篇
今天来聊聊面试频率特别高的一个题目:TCP 协议中的三次握手与四次挥手。涉及到的知识点有:
用户7685359
2020/08/24
4140
每日一题:三次握手与四次挥手上篇
TCP与UDP异同
TCP/IP模型的运输层有两个不同的协议:UDP用户数据报协议与TCP传输控制协议
WindRunnerMax
2020/08/27
6360
网络基础
应用层协议定义的是应用进程间的通信和交互的规则,常见有HTTP、DNS、SMTP、POP3
晚上没宵夜
2022/05/09
6010
网络基础
简简单单的UDP
上一篇了解了TCP的三次握手过程,目的、以及如何保证可靠性、序列号与ACK的作用,最后离开的时候四次挥手的内容,这还只是TCP内容中的冰山一角,是不是觉得TCP这个协议非常复杂,这一篇我们来了解下传输层另外一个协议UDP。
网络之路一天
2024/01/08
1870
简简单单的UDP
你真的懂接口测试基础之TCP、UDP和TCP/IP协议组吗?
TCP 是面向连接的,UDP 是面向无连接的 UDP程序结构较简单 TCP 是面向字节流的,UDP 是基于数据报的 TCP 保证数据正确性,UDP 可能丢包 TCP 保证数据顺序,UDP 不保证
软测小生
2020/10/10
1.4K0
你真的懂接口测试基础之TCP、UDP和TCP/IP协议组吗?
抓包分析UDP,TCP和UDP的区别说不上五条就进来看看吧
使用了 Wireshark 进行抓包,用两个最常用的 curl 和 ping 命令来演示抓包情况,开启抓包。
阿甘的码路
2020/08/17
2.9K0
抓包分析UDP,TCP和UDP的区别说不上五条就进来看看吧
计算机网络之传输层
  从信息处理得角度上去看,传输层主要是给上面得应用层提供通信服务得。我们平时再对网络进行编程得时候,我们很多时候都是直接对接得传输层,也就是我们使用传输层所提供得接口来进行网络编程,所以我们常说传输层是用户功能得最底层,是面向通信部份得最高层。   传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题;包含的主要协议:TCP协议(Transmission Control Protocol,传输控制协议)、UDP协议(User Datagram Protocol,用户数据报协议)。
程序员波特
2024/01/19
2430
计算机网络之传输层
TCP/UDP协议基本概念
TCP和UDP协议是TCP/IP协议的核心。 TCP 传输协议:TCP 协议是一TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送;而UDP则不为IP提供可靠性、流控或差错恢复功能。一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。
Lansonli
2021/10/09
6530
TCP协议:报文基础+三次握手+四次挥手
TCP是TCP/IP协议族中一个最核心的协议,它向下使用网络层IP协议,向上为应用层HTTP、FTP、SMTP、POP3、SSH、Telnet等协议提供支持。
通往ICT之路
2024/04/09
2.5K0
TCP协议:报文基础+三次握手+四次挥手
tcp和udp的面试题_adp转化为amp
TCP(Transmission Control Protocol,传输控制协议)提供的是面向连接,可靠的字节流服务。即客户和服务器交换数据前,必须现在双方之间建立一个TCP连接,之后才能传输数据。并且提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
全栈程序员站长
2022/09/30
4290
tcp和udp的面试题_adp转化为amp
推荐阅读
相关推荐
tcp和udp的区别和使用场景_TCP跟UDP有什么不同
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档