TCP和UDP的区别(面试必问)
一---导读
UDP和TCP作为运输层的两大协议,大家可以把它两形象的比喻成为进程提供服务的管家,UDP是不靠谱的一个管家,而TCP是靠谱的管家。
二---UDP和TCP的不同点
A:通信即时性的不同
使用UDP通信协议的双方随时可以进行通信,而使用TCP协议的双方,必须要经过三次握手之后才能进行通信,并且在通信完成后要经历四次挥手断开连接。
B:面向(或者说操作的)对象不同
UDP是面向应用报文的:
使用UDP协议的发送方,收到来自应用进程的报文后,加上UDP首部(源端口,目的端口,长度,检验和),UDP接收收到报文后,拆除首部,然后将数据部分交给相应的进程(根据首部的目的端口号)。
TCP是面向字节流的(这是实现可靠传输,流量控制,拥塞控制的基础):
使用TCP协议的发送方,把应用进程发下来的报文看做字节流,然后对其一个个编号装到发送缓存中,根据发送规则,提取一定的字节,将其打包成TCP报文段进行发送(想象一下寄快递过程)。接收方接收到报文段,然后取出其中的数据载荷部分(把打包的盒子拆开),存到接收缓存中。一部分交付给应用进程
C:通信的双方数量不同
UDP支持单播,多播,广播(一对一,一对多,一对全的通信)。
TCP之间仅支持单播(一对一)。
D:对数据的责任感不同
IP协议向上(运输层)提供的是无连接,不可靠的传输服务。
若传输层使用UDP协议,那向上提供的也是无连接,不可靠的传输服务,发送方发送的UDP数据报,若接收方根据数据报首部中的校验和字段的值,检查出误码,但仅仅丢弃该数据报,其它什么也不做(不负责任),若经过路由器的时候数据报丢失,UDP接收方也是什么都不做,仅仅是丢弃改数据报。(IP电话,视频会议)
若用TCP协议,通信双方不会出现误码,丢失,乱序,重复等情况(文件传输)
E:首部对比
UDP的首部仅仅包含源端口,目的端口,长度,检验和,每个占2个字节,首部也就是8个字节。
而TCP因为提供的是可靠的,面向连接的,具有流量控制和拥塞控制,于是TCP的首部要复杂的多,如下图所示。
posted on 2021-01-03 20:31 Love&Share 阅读(605) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~