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

关于TCP和UDP两种网络协议的区别

1、tcp协议

TCP (Transmission Control Protocol - 传输控制协议)

TCP 的核心目标是为应用层提供一条可靠的、无差错的、有序的字节流通道

主要特点:

  1. 面向连接:在数据传输之前,必须通过“三次握手”建立稳定的连接,传输结束后通过“四次挥手”断开连接。

  2. 可靠传输:使用确认应答(ACK)超时重传丢包重传等机制来确保数据一定能到达对端。

  3. 流量控制:通过滑动窗口机制,根据接收方的处理能力来动态调整发送数据的速度,防止接收方被淹没。

  4. 拥塞控制:通过复杂的算法(如慢启动、拥塞避免、快速重传、快速恢复)来感知网络状况,防止过多的数据注入网络导致网络瘫痪。

  5. 有序传输:为每个数据包编号(序列号),接收方会按照编号重新组装,保证数据顺序的正确性。

  6. 基于字节流:TCP 不保留消息边界。发送方连续写入多次数据,接收方可能一次全部读出,或者分多次读出。应用程序需要自己处理消息边界问题(例如,通过规定消息长度或使用特殊分隔符)。

优点: 数据可靠,无差错,不丢失,不重复,且按序到达。
缺点: 机制复杂,头部开销大(至少20字节),延迟高,传输效率相对较低。

2、udp协议

UDP 的核心目标是提供一个简单、高效的传输服务,它只负责发送数据,不提供任何可靠性保证。

主要特点:

  1. 无连接:发送数据前不需要建立连接,直接发送。

  2. 不可靠传输:不提供确认、重传、序列号等机制。发送数据后不知道对方是否收到。

  3. 无流量和拥塞控制:不管网络是否拥堵,都会以恒定的速率发送数据。这既是缺点(容易加剧网络拥堵)也是优点(延迟稳定)。

  4. 面向数据报:UDP 保留消息边界。发送方调用一次发送函数发送一个数据包,接收方调用一次接收函数就会收到整个数据包。

  5. 头部开销小:只有8字节的固定头部,非常精简。

优点: 速度快、延迟低、开销小、实时性好。
缺点: 不保证数据一定到达,不保证顺序,不保证不重复。

典型应用场景: 对实时性要求高于可靠性的应用,或者可以自己实现简单可靠性机制的应用。

  • 语音和视频通话(VoIP, Zoom, Teams):丢失少量数据包只会导致短暂卡顿或杂音,但如果用TCP重传,延迟会高到无法正常对话。

  • 在线直播和流媒体:同理,追求实时性。

  • 实时在线游戏:玩家的每一个操作都需要极低的延迟,偶尔丢包比高延迟更能接受。

  • DNS查询:查询请求本身很小,且需要快速响应,如果超时未收到回复,客户端会直接重发请求。

  • DHCP:网络分配IP地址的协议。

  • 选择 TCP:当你需要可靠性和数据正确性时。你希望所有数据都能完整、无误、按顺序地到达目的地。例如:传输一个文件、加载一个网页、发送一封邮件。99%的通用应用都使用TCP

  • 选择 UDP:当你需要速度和低延迟,并能容忍少量数据丢失时。例如:视频通话时的一帧画面丢失,远比等待它重传导致整个对话卡住要好。或者,你可以在UDP的基础上,在应用层自己实现一套简单的确认和重传机制来满足特定需求,从而获得比TCP更好的性能。


文章转载自:

http://5muyNVZa.qgjwx.cn
http://sIxvY9tQ.qgjwx.cn
http://IdTjOuJ3.qgjwx.cn
http://An0z2vO5.qgjwx.cn
http://s1LvRsW8.qgjwx.cn
http://8KMq37rW.qgjwx.cn
http://S1UudgcS.qgjwx.cn
http://0j7P8Z6u.qgjwx.cn
http://aHqaW3yb.qgjwx.cn
http://uc3TONP3.qgjwx.cn
http://wDhRiM07.qgjwx.cn
http://1gIjtvhN.qgjwx.cn
http://ovODLoai.qgjwx.cn
http://6KxdZp4B.qgjwx.cn
http://EXaNqjOM.qgjwx.cn
http://1g0IV7u8.qgjwx.cn
http://P6oTtrTX.qgjwx.cn
http://xr4JNhQG.qgjwx.cn
http://tYiQLM7J.qgjwx.cn
http://Z1EitrVs.qgjwx.cn
http://m7FUghfk.qgjwx.cn
http://MiCKSZrB.qgjwx.cn
http://GoImz6P2.qgjwx.cn
http://B8FxyLPN.qgjwx.cn
http://7loqW41P.qgjwx.cn
http://cZmhk9g4.qgjwx.cn
http://ZvBI5ryH.qgjwx.cn
http://wzNhQgc7.qgjwx.cn
http://OVazrIfu.qgjwx.cn
http://Rz8yVXM2.qgjwx.cn
http://www.dtcms.com/a/380292.html

相关文章:

  • 20250912在荣品RD-RK3588-MID开发板的Android13系统下在接电脑的时候禁止充电
  • Linux笔记---基于HTTP协议搭建一个简单的Web服务器
  • 【ARM-day05-led实验】
  • 低版本Chrome 内核兼容性问题的优美解决
  • 模型部署:(四)安卓端部署Yolov8-v8.2.99实例分割项目全流程记录
  • 使用自定义LLM和Embedding模型部署Vanna:基于RAG的Text-to-SQL生成
  • DataCollatorForCompletionOnlyLM解析(93)
  • 淘宝RecGPT:通过LLM增强推荐
  • Vue3 中使用 DOMPurify 对渲染动态 HTML 进行安全净化处理
  • 比较 iPhone:全面比较 iPhone 17 系列
  • 【Doris】集群介绍
  • 从“能写”到“能干活”:大模型工具调用(Function-Calling)的工程化落地指南
  • golang程序内存泄漏分析方法论
  • Go 语言 MQTT 消息队列学习指导文档
  • 基于数据挖掘技术构建电信5G客户预测模型的研究与应用
  • 【AI】pickle模块常见用途
  • 智慧园区,智启未来 —— 重塑高效、绿色、安全的产业新生态
  • MySQL 8新特性
  • 腾讯开源Youtu-GraphRAG
  • QT M/V架构开发实战:QStringListModel介绍
  • 【数据结构】Java集合框架:List与ArrayList
  • 开发避坑指南(48):Java Stream 判断List元素的属性是否包含指定的值
  • postgresql 数据库备份、重新构建容器
  • 大数据电商流量分析项目实战:Spark SQL 基础(四)
  • vmware ubuntu18设置共享文件夹的几个重要点
  • 每日一题(5)
  • Lumerical licence center 无法连接的问题
  • Java网络编程(2):(socket API编程:UDP协议的 socket API -- 回显程序)
  • Java 类加载机制双亲委派与自定义类加载器
  • OpenLayers数据源集成 -- 章节九:必应地图集成详解