TCP与UDP

 


TCP——传输控制协议

  • TCP是面向连接的传输层协议,在使用前要建立TCP连接,在数据传输完毕后要释放连接;
  • 每一条TCP连接只能是点对点的;
  • TCP提供可靠交付的服务,保证数据无差错、不丢失、不重复且按序到达;
  • TCP提供全双工通信;
  • TCP是面向字节流的,TCP把应用层交付下来的数据看成一连串无结构的字节流,根据对方的接收窗口值和当前的拥塞窗口来决定一个报文段应该包含多少字节,因此有可能对应用层交付下来的数据进行切分;

UDP——用户数据报协议

  • UDP是无连接的,双方无需建立与释放连接;
  • UDP不保证可靠交付;
  • UDP是面向报文的,对应用层交付下来的数据,既不合并也不拆分。在发送方,UDP在数据中添加首部后就向下交付给网络层;在接收方,UDP对网络层交上来的数据,在去除首部后就原封不动地交付给应用层。
  • UDP支持一对一、一对多、多对一和多对多的交互通信;
  • UDP没有拥塞控制,比较适合实时应用;
  • UDP首部开销小,仅有8个字节;

 

误区:UDP是无连接的,如何知道它要与谁进行数据传输?

  实际上,应用与应用之间的数据传输过程可分为两个部分:

  • 主机到主机之间的数据传输:由UDP协议底层的网际协议(IP)来负责。也就是说,两台主机的通信是由网络层负责的,由双方IP地址决定谁与谁通信;
  • 主机到应用的数据传输:  UDP首部包含了源端口与目的端口,这样就定位了双方处理数据的具体进程;

  这里的“无连接”只是不用像TCP那样每次建立/释放连接。

 

  

posted @   ˙鲨鱼辣椒ゝ  阅读(47)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示