TCP与UDP
问题来源
今天学习尚硅谷关于网络的视频的时候,并且发现现在很多网络编程基于TCP/UDP协议,在面试的时候也会被问题。所以,理解TCP/UDP协议,并且弄清楚它的使用场景是有意义的一件事情。
TCP协议的定义
TCP协议,全中文名为传输控制协议,它和UDP协议都属于TCP/IP协议簇,http就是基于TCP/IP协议的,且TCP/UDP协议都运行在数据的传输层。
UDP协议的定义
UDP协议,用户数据报协议
区别
连接性
TCP是面向连接的协议,收发数据前必须和对方建立可靠的连接,数据传输前建立连接的3次握手、数据传输后断开连接的4次挥手【这可以在后面做深入研究,代码层面】,为数据传输打下可靠基础,其会监听端口;
UDP是面向无连接的协议,数据传输前,源端和终端不建立连接,发送端尽可能快的将数据扔到网络上,接收端从队列中读取消息段。
可靠性
TCP提供了可靠交互的服务,传输过程中采用许多方法保证连接上提供可靠的传输服务,如编号确认、流量控制、计时器等,确保数据无差错,不丢失,不重复,且按序到达;
UDP提供尽可能最快的交付,但不保证可靠交付。
报文传输
TCP面向字节流,将应用层传过来的报文看成一串无结构的字节流,分解成多个TCP报文传输后,在目的站重新装配;
UDP协议面向报文,不拆分应用报文,只保留报文边界,一次发送一个报文,接收方除去报文头部后,原封不动将报文交给上层应用。
吞吐控制
TCP阻塞控制、流量控制、重传机制、滑动窗口等机制保证传输质量;
UDP没有
双工性
TCP只能点对点双工通信
UDP支持一对一、一对多、多对多交互通信
以下是TCP/UDP编程步骤
从TCP和UDP的编程步骤可以总结出以下:
UDP不需要调用监听(listen)和接收(accept)客户端连接,而客户端也不需要连接服务器端,UDP中任何一方只要建立socket就可以用sendto发送数据、用recvfrom接收数据,并不关心对方是否存在,是否发送了数据。
TCP/UDP的使用场景
TCP:万维网(www)、文件传输(FTP)、电子邮件(SMTP)
UDP:实时通信
PS:有一个问题,就是直播,用的是TCP还是UDP协议呢?查了一下资料,发现是使用基于TCP的框架包的,但是从原理来讲,好像UDP更加的适合
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】