TCP与UDP差异对比分析

TCP与UDP调试助手:网络编程必备工具 传输控制协议(TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它为两台计算机提供了全双工的数据通信服务,并确保数据能够准确无误地在网络中传输。TCP通过序列号和确认应答来实现可靠性,确保每个字节都能被正确送达且顺序正确。TCP调试助手作为一款强大的网络诊断工具,对于IT行业从业者来说是不可或缺的。它不仅能协助开发者更好地理解TCP协议的工作原理,还能在实际应用中发挥重要的故障诊断与性能优化的作用。 阅读详情

TCP与UDP差异对比分析

写在前面:

公司在做智能硬件方向,所以使用了 TCP、UDP 协议来做通信。过几天我会整理一下两种协议在 Android 上的使用,不过在此之前,还是想先了解一下这两种协议有哪些异同,又有哪些值得注意的地方。本文通过对比分析 TCP 和 UDP 有哪些区别,来帮助这些比较基础的知识点,遇到相应的问题,便可以快速地解决。

建立连接方式

TCP:
说到 TCP 建立连接,相信大多数人脑海里肯定可以浮现出一个词,没错就是–“三次握手”。TCP 通过“三次握手”来建立连接,再通过“四次挥手”断开一个连接。在每次挥手中 TCP 做了哪些操作呢?继续往下看:

TCP的三次握手和四次挥手

上图就从客户端和服务端的角度,清楚的展示了 TCP 的三次握手和四次挥手。

可以看到,当 TCP 试图建立连接时,三次握手指的是客户端主动触发了两次,服务端触发了一次。

我们可以先明确一下 TCP 建立连接并且初始化的目标是什么呢?1. 初始化资源 2. 告诉对方我的序列号。
所以三次握手的次序是这样子的:

1)client端首先发送一个SYN包告诉Server端我的初始序列号是X。

2)Server端收到SYN包后回复给client一个ACK确认包,告诉client说我收到了。

3)接着Server端也需要告诉client端自己的初始序列号,于是Server也发送一个SYN包告诉client我的初始序列号是Y。

4)Client收到后,回复Server一个ACK确认包说我知道了。

其中的 2 、3 步骤可以简化为一步,也就是说将 ACK 确认包和 SYN 序列化包一同发送给 Client 端。到此我们就比较简单的解释了 TCP 建立连接的“三次握手”。

UDP:
我们都知道 TCP 是面向连接的、可靠的、有序的传输层协议,而 UDP 是面向数据报的、不可靠的、无序的传输协议,所以 UDP 压根不会建立什么连接。

就好比发短信一样,UDP 只需要知道对方的 ip 地址,将数据报一份一份的发送过去就可以了,其他的作为发送方,都不需要关心。

数据发送

关于 TCP、UDP 之间数据发送的差异,可以体现二者最大的不同之处:

TCP:
由于 TCP 是建立在两端连接之上的协议,所以理论上发送的数据流不存在大小的限制。但是由于缓冲区有大小限制,所以你如果用 TCP 发送一段很大的数据,可能会截断成好几段,接收方依次的接收。

UDP:
由于 UDP 本身发送的就是一份一份的数据报,所以自然而然的就有一个上限的大小,这个每次 UDP 发送的数据报大小由哪些因素共同决定呢?

  1. UDP协议本身,UDP协议中有16位的UDP报文长度,那么UDP报文长度不能超过2^16=65536。

  2. 以太网(Ethernet)数据帧的长度,数据链路层的MTU(最大传输单元)。

  3. socket的UDP发送缓存区大小

先来看第一个因素,UDP 本身协议的报文长度为 2^16 - 1,UDP 包头占 8 个字节,IP 协议本身封装后包头占 20 个字节,所以最终长度为: 2^16 - 1 - 20 - 8 = 65507 字节。

只看第一个因素有点理想化了,因为 UDP 属于不可靠协议,我们应该尽量避免在传输过程中,数据包被分割。所以这里有一个非常重要的概念 MTU – 也就是最大传输单元。

在 Internet 下 MTU 的值为 576 字节,所以在 internet 下使用 UDP 协议,每个数据报最大的字节数为: 576 - 20 - 8 = 548

TCP:
我们再来谈谈数据的有序性。

对于 TCP 来说,本身 TCP 有着超时重传、错误重传、还有等等一系列复杂的算法保证了 TCP 的数据是有序的,假设你发送了数据 1、2、3,则只要发送端和接收端保持连接时,接收端收到的数据始终都是 1、2、3。

UDP:

而 UDP 协议则要奔放的多,无论 server 端无论缓冲池的大小有多大,接收 client 端发来的消息总是一个一个的接收。并且由于 UDP 本身的不可靠性以及无序性,如果 client 发送了 1、2、3 这三个数据报过来,server 端接收到的可能是任意顺序、任意个数三个数据报的排列组合。

可靠性

其实大家都知道 TCP 本身是可靠的协议,而 UDP 是不可靠的协议。

TCP:

TCP 内部的很多算法机制让他保持连接的过程中是很可靠的。比如:TCP 的超时重传、错误重传、TCP 的流量控制、阻塞控制、慢热启动算法、拥塞避免算法、快速恢复算法 等等。

所以 TCP 是一个内部原理复杂,但是使用起来比较简单的这么一个协议。

UDP:
UDP 是一个面向非连接的协议,UDP 发送的每个数据报带有自己的 IP 地址和接收方的 IP 地址,它本身对这个数据报是否出错,是否到达不关心,只要发出去了就好了。所以来研究下,什么情况会导致 UDP 丢包:

  • 数据报分片重组丢失:
    在文章之前我们就说过,UDP 的每个数据报大小多少最合适,事实上 UDP 协议本身规定的大小是 64kb,但是在数据链路层有 MTU 的限制,大小大概在 5kb,所以当你发送一个很大的 UDP 包的时候,这个包会在 IP 层进行分片,然后重组。这个过程就有可能导致分片的包丢失。UDP 本身有 CRC 检测机制,会抛弃掉丢失的 UDP 包。

  • UDP 缓冲区填满
    当 UDP 的缓冲区已经被填满的时候,接收方还没有处理这部分的 UDP 数据报,这个时候再过来的数据报就没有地方可以存了,自然就都被丢弃了。

使用场景

在文章最后的一部分,聊聊 TCP、UDP 使用场景。
先来说 UDP 的吧,有很多人都会觉得 UDP 与 TCP 相比,在性能速度上是占优势的。因为 UDP 并不用保持一个持续的连接,也不需要对收发包进行确认。但事实上经过这么多年的发展 TCP 已经拥有足够多的算法和优化,在网络状态不错的情况下,TCP 的整体性能是优于 UDP 的。

那在什么时候我们非用 UDP 不可呢?

  • 对实时性要求高
    比如实时会议,实时视频这种情况下,如果使用 TCP,当网络不好发生重传时,画面肯定会有延时,甚至越堆越多。如果使用 UDP 的话,即使偶尔丢了几个包,但是也不会影响什么,这种情况下使用 UDP 比较好。

  • 多点通信
    TCP 需要保持一个长连接,那么在涉及多点通讯的时候,肯定需要和多个通信节点建立其双向连接,然后有时在NAT环境下,两个通信节点建立其直接的 TCP 连接不是一个容易的事情,而 UDP 可以无需保持连接,直接发就可以了,所以成本会很低,而且穿透性好。这种情况下使用 UDP 也是没错的。

以上我们说了 UDP 的使用场景,在此之外的其他情况,使用 TCP 准没错。毕竟有一句话嘛。

when in doubt,use TCP.

写在后面:
本文主要是介绍概念,未来会从 Android 的角度来总结 TCP 和 UDP 的使用。

VSCode插件全攻略:5分钟搞定Mermaid流程图实时预览(含常见报错解决) 本文提供了一份详细的VSCode插件实战指南,帮助开发者快速配置Mermaid流程图实时预览环境。文章涵盖核心插件选择、高效工作流搭建,并重点解决了图表渲染失败、样式异常等常见报错问题,旨在提升技术文档的编写效率与可视化质量。 阅读详情

相关推荐

UR机械臂正逆运动学解析:从DH参数到8组解的完整求解策略

本文深入解析UR机械臂的正逆运动学求解策略,从DH参数原理到完整的8组解求解方法。详细介绍了正运动学的坐标变换过程,以及逆运动学中Atan2函数和三角恒等变换的应用,并揭示了8组解的产生机制。通过实际案例和调试技巧,帮助工程师掌握UR机械臂运动学求解的核心技术。

weixin_29094775的博客 414

java面试问题总结——UDP和ICP的区别

1.UDP协议和ICP协议 TCP协议和IDP协议均是网络协议的通信规则,其是网络间传输协议的基本约束和规则 TCP协议(Transmission Control Protocol)中文名是传输控制协议,它是一种面向连接的、可靠的、基于字节流的传输层通信协议。 举例:打电话,需要双方都接通,才能进行对话 特点:效率低,数据传输比较安全 UDP协议(User Datagram Protocol)的中文名是数据报协议,它是一种面向无连接的传输层通信协议。 举例:发短信,不需要双方建立连接,But,数

lydon1314的博客 1167

SikuliX实战:5分钟搞定游戏挂机脚本(附防检测思路与Python集成技巧)

本文详细介绍了如何使用SikuliX快速开发游戏挂机脚本,包括环境配置、基础原理、防检测策略及Python集成技巧。通过实战案例展示如何实现自动化任务、高级防检测方案,并结合Python提升脚本性能与智能度,帮助玩家高效完成重复性游戏操作。

weixin_33228769的博客 336

TCP/IP、Http的区别

  TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也...

weixin_34375054的博客 428

【大模型推理】工作负载的弹性伸缩

推荐采用 并发请求数(Concurrency) 或 队列深度(Queue Size) 结合GPU监控指标(显存/算力利用率),并依托Knative KPA、Fluid缓存、优先级调度等技术实现高效弹性伸缩[citation:6][citation:7][citation:8]。QPS无法体现这种资源消耗累积效应[citation:6]。并发数的本质:是实时反映资源占用的瞬时状态量,而非速率指标,尤其适合单次请求资源消耗大、处理时间长的业务(如LLM推理)[citation:1][citation:6]。

王尚权 qq:2515162716 1185

5分钟搞定!用FunASR在本地快速部署达摩院Paraformer语音识别模型(附常见问题解决)

本文详细介绍了如何在本地快速部署阿里达摩院开源的Paraformer语音识别模型。通过FunASR工具包,用户可在5分钟内完成环境配置、模型下载与基础识别,并掌握批量处理、性能调优及构建API服务等进阶技巧。文章重点解析了Paraformer的非自回归架构带来的速度优势,并提供了音频格式转换、依赖冲突、显存不足等常见问题的实战解决方案,助力开发者实现高效、离线的语音转写应用。

p1q2r的博客 705

网络编程懒人入门(三):快速理解TCP协议一篇就够

网络编程懒人入门(三):快速理解TCP协议一篇就够   TCP 协议简介   TCP 是互联网核心协议之一,本文介绍它的基础知识。 一、TCP 协议的作用 互联网由一整套协议构成。TCP 只是其中的一层,有着自己的分工。 (图片说明:TCP 是以太网协议和 IP 协议的上层协议,也是应用层协议的下层协议。) 最底层的以太网协议(Ethernet)规定了电子信号如何组成数据包...

zam183的博客 390

锁定放大器

锁定放大器

qq_46757048的博客 4706

三次握手四次挥手

三次握手 三次握手(Three-Way Handshake)是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。 第一次握手客户端将标志位 SYN 置为1,随机产生一个值 seq=s ,并将该数据包发送给服务端,客户端进入 SYN_SENT 状态,等待服务端确认。 第二次握手服务端收到数据包后由标志位 SYN=1 知道客户端请求建立连接,服务端将标志位 SYN 和 ACK 都置为1,ack=s+1,随机产生一个值 seq=k ,并将该数据包发送给客户端以确认连接请求,服务端进入 SY

weixin_44733494的博客 1513

AMBA-CHI协议详解(十五)

Write transactions事务描述以及请求属性,cache line状态转换。

Crazzy_M的博客 651

基于YOLOv8的端面小目标计数解决方案: 多头检测器+小缺陷到大缺陷一网打尽的GiraffeDet+Wasserstein Distance Loss | 助力工业小目标缺陷检测

端面小目标计数部署解决方案 | 亲测在工业小目标缺陷涨点明显,原始mAP@0.5 0.936提升至0.955

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1955

Windows网络编程之TCP和UDP的区别联系

TCP和UDP是应用最广泛的两个传输层协议,它们的主要作用是将数据包通过路由器功能传送到目的地址,从而为上层应用和应用层协议(HTTP、FTP、SMTP、TELNST、SNMP、SYSLOG等)提供网络通信服务。 TCP是面向连接的,TCP存在着三握四挥,并且三次握手和四次挥手是对TCP建立的连接有着重要意义的两步。两个主机进行TCP通信可以分为三个阶段,即建立连接阶段,数据传输阶段和断开连接释放资源阶段。TCP连接过程是状态的转换,用户可以通过调用OPEN,SEND,RECEIVE,CLOSE等操作来进

weixin_43777681的博客 433

GEE:面对对象土地利用分类(结合SNIC、GLCM 和机器学习算法)

本文将介绍在Google Earth Engine中结合SNIC、GLCM和机器学习算法的的土地利用/土地覆盖(LULC)分类方法。结果如下图所示,

养乐多的博客 5618

分析udp数据报_TCP与UDP差异对比分析

如何在工作中用好UDP传输点击观看!写在前面:公司在做智能硬件方向,所以使用了 TCP、UDP 协议来做通信。先了解一下这两种协议有哪些异同,又有哪些值得注意的地方。本文通过对比分析 TCP 和 UDP 有哪些区别,来帮助这些比较基础的知识点,遇到相应的问题,便可以快速地解决。建立连接方式TCP: 说到 TCP 建立连接,相信大多数人脑海里肯定可以浮现出一个词,没错就是--“三次握手”。TCP 通...

weixin_32864847的博客 564

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

TCP与UDP深度对比:传输层的两个世界

TCP与UDP深度对比:传输层的两个世界

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

UDP与TCP

UDP的价值:本质是内核提供的一个最小网络传输功能,很多时候,都号称自己用了UDP,但实际上都很忌惮他的丢包问题,所以大部分情况下都会在UDP的基础上做各种不同程度的应用层可靠性保证,某些游戏为了追求低延迟,不同程度使用了UDP,比如王者农药(KCP)当接收窗口变为0时,也就是所谓的0窗口,此时发送端停止发送数据接收方接收到数据之后会不断处理,处理能力也不是一成不变的,有时候处理的快一些就可以多收点数据,处理的慢点,就希望对方能少发点数据,像这种根据自身能力不断调整窗口的机制就是所谓的。

ksn5461378的博客 1014

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

TCP和UDP的区别和优缺点

原文作者: xingguang 原文链接:https://www.tiance.club/post/3905120281.html 1、TCP与UDP区别总结: 1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接 2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付 Tc...

u011063477的博客 202

【知识科普】TCP与UDP这两者之间的对比

TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。它在互联网协议套件(TCP/IP)中负责提供端到端的可靠通信服务。

wendao76的专栏 1356

快速理解TCP和UDP的差异

前言 最头疼的问题莫过于到底该选TCP还是UDP作为传输层协议。通过快速对比分析 TCP 和 UDP 的区别,来帮助即时通讯初学者快速了解这些基础的知识点,从而在IM、消息推送等网络通信应用场景中能准确地选择合适的传输层协议。 建立连接方式的差异 TCP 说到 TCP 建立连接,相信大多数人脑海里肯定可以浮现出一个词,没错就是--“三次握...

weixin_34310369的博客 253

数据传输效率对比:TCP 的确认机制与 UDP 的无 overhead 分析

UDP 更高效场景:实时应用(如 VoIP、在线游戏),其中低延迟优先,包丢失可接受。效率优势在 $T > 0.05$ s 或 $D < 500$ 字节时明显。TCP 适用场景:文件传输、网页浏览,其中可靠性关键,效率损失可容忍(尤其在大包或低 RTT 网络)。优化建议:在需要平衡效率与可靠性的系统中,可结合两者(如 QUIC 协议)。总之,UDP 在纯数据传输效率上优于 TCP,主要归因于无确认开销;但选择协议需综合应用需求。

2501_93892493的博客 766

UDP和TCP有哪些区别?

这意味着TCP数据的传输是有顺序的,在到应用层之前就排好序了,并且一旦建立连接,TCP会通过设置好的报文字段保证包的有序。除此以外,每个TCP数据段都包含一个校验和,传输中如果被修改,则会丢弃数据包。TCP每个数据包的头部至少20字节,除了包含类似的信息外,还需要包含序列号、确认号、窗口大小、校验和等,增加了更多的开销。物理特性决定了数据帧的长度[46, 1500],在此基础上还会添加帧头帧尾18,实际长度为[46+18, 1500+18],也就是说最大内容为1500字节,以及对实时性要求高的同时。

2301_76622358的博客 1046

网络通讯TCP和UDP的区别

TCP和UDP是两种核心传输层协议,主要区别在于连接方式、可靠性和传输效率。TCP面向连接,通过三次握手建立可靠通信,保证数据不丢失、不重复且按序到达,但效率较低;UDP无连接,直接发送数据报,不保证可靠性,但效率高、延迟低。TCP适用于文件传输、支付等可靠性优先的场景,UDP更适合视频通话、在线游戏等实时性要求高的应用。实际开发中可根据业务需求选择,或基于UDP定制可靠性机制来平衡两者特性。

weixin_66547608的博客 1130

TCP与UDP协议详解:核心差异与应用场景

传输层协议是网络通信的基础设施,TCP和UDP作为两种主要协议各有特点。TCP通过三次握手建立可靠连接,采用序列号确认和重传机制确保数据完整传输,适合文件传输、网页浏览等场景。UDP则提供无连接的轻量级服务,以低延迟和低开销见长,广泛应用于实时音视频、在线游戏等领域。理解滑动窗口、拥塞控制等TCP机制,以及UDP的多播特性,对网络性能优化至关重要。在物联网和工业控制系统中,Modbus TCP等协议展现了TCP的可靠性价值,而QUIC协议则创新性地在UDP上实现了可靠传输。掌握Wireshark抓包分析和i

weixin_32520095的博客 283

【一文了解】TCP协议和UDP协议

本文系统介绍了TCP和UDP两大网络协议的核心特性与区别。TCP是面向连接的可靠协议,通过三次握手建立连接、四次挥手断开连接,保证数据有序可靠传输,适用于账号登录、文件传输等场景。UDP是无连接的轻量协议,传输速度快但不保证可靠性,适用于视频直播、在线游戏等实时性要求高的场景。文章还详细解析了Socket编程接口、协议分类等网络编程基础知识,并对比了两种协议在连接性、可靠性、速度等方面的差异,为开发者根据不同业务需求选择合适的传输协议提供了明确指导。

grapefruit_lyy的博客 747

Linux 传输层协议 UDP 和 TCP

16位UDP长度表示整个数据报(UDP首部+UDP数据的最大长度如果校验和出错,就会直接丢弃UDP传输的过程类似于寄信无连接:知道对端的IP和端口号就直接进行传输不需要建立连接不可靠:没有确认机制没有重传机制;如果因为网络故障该段无法发到对方,UDP 协议层也不会给应用层返回任何错误信息面向数据报: 不能够灵活的控制读写数据的次数和数量,即应用层交给 UDP 多长的报文,UDP原样发送,既不会拆分,也不会合并UDP 没有真正意义上的调用sendto。

2301_79881188的博客 1520

传输层最重要的两种协议——UDP与TCP的区别(TCP可靠但是慢,UDP不可靠但是快)

协议优点缺点TCP可靠、稳定、数据顺序有保障速度慢、延迟高、开销大、易受拥塞影响UDP速度快、延迟低、开销小、效率高不可靠、数据可能丢失或乱序选择TCP还是UDP,取决于应用程序的首要需求:是“数据必须100%正确”,还是“速度高于一切”。

xixixi7777的博客 950
上一篇: RecyclerView 复用错乱通用解法
下一篇: 在 Android 上,一个完整的 UDP 通信模块应该是怎样的?
MeloDev
博客等级 码龄11年 93粉丝 47原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值