【面试】TCP 与 UDP区别

一、TCP 与 UDP 对比

  1. TCP

传输控制协议 TCP(Transmission Control Protocol),是面向连接的【3次握手,4次挥手】,提供可靠交付,具有错误恢复机制(如超时重传、校验和等),有流量控制,拥塞控制,提供全双工通信,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块),每一条 TCP 连接只能是点对点的(一对一)。

开销:

由于其复杂性,开销较大,需要更多的处理时间和资源。

报文结构:

TCP段,包含序列号、确认号、窗口大小等控制信息。

用途:

常用于需要可靠传输的应用,如网页浏览(HTTP)、文件传输(FTP)、邮件传输(SMTP)等。

适用于数据完整性至关重要的应用,如金融交易、电子邮件等。

  1. UDP

用户数据报协议 UDP(User Datagram Protocol),是无连接的,尽最大可能交付(可能发生数据丢失或乱序),没有错误恢复机制,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部),支持一对一、一对多、多对一和多对多的交互通信。

开销:
开销较小,使用较少的处理时间和资源。

报文结构:

UDP数据报,包含源端口、目的端口、数据长度等信息。

用途:

常用于对实时性要求高的应用,如在线游戏、实时视频会议、DNS查询、VoIP等。

适用于可以容忍一定数据丢失的应用,或者实时性要求高,对延迟敏感的应用。

二、TCP的 3次握手,4次挥手

TCP(传输控制协议)的三次握手(Three-way Handshake)过程是建立一个可靠的连接所必需的。

  1. 第一次握手 :客户端发送一个SYN(同步序列编号)报文到服务器以开始一个连接。这个报文指明了客户端的初始序列号(ISN, Initial Sequence Number)。

  2. 第二次握手 :服务器接收到这个SYN报文后,需要确认客户端的序列号,因此会发送一个SYN-ACK(同步-确认)报文。这个报文包含了服务器自己的初始序列号,并且对客户端的SYN报文中的序列号进行确认(即ACK, Acknowledgement number)。

  3. 第三次握手 :客户端接收到服务器的SYN-ACK报文后,会发送一个ACK报文到服务器端进行最后的确认。这个ACK报文对服务器的SYN报文中的序列号进行确认。

这个过程确保了双方都可以接收和发送数据,从而建立了一个全双工的通信连接。

至于"四次挥手",这通常是指TCP连接的终止过程:

  1. 第一次挥手 :当通信的一方准备关闭连接时,发送一个FIN(结束)报文,用来关闭主动方到被动方的数据传输。

  2. 第二次挥手 :接收方接收到FIN报文后,发送一个ACK报文确认,并告知对方可以关闭其到发送方的数据传输。

  3. 第三次挥手 :接收方发送一个FIN报文给发送方,请求关闭其数据传输。

  4. 第四次挥手 :发送方接收到这个FIN报文后,发送一个ACK报文进行确认,完成连接的关闭。

四次挥手过程中,双方都可以独立地开始关闭连接的过程,因此可能出现一方已经准备好关闭连接,而另一方还需要一些时间来完成数据传输的情况。这就是为什么需要四次挥手来确保双方都能独立地关闭连接。

相关推荐
YangYang9YangYan33 分钟前
2027 届秋招求职|金融科技背景,反欺诈岗位面试案例题考点拆解
科技·面试·金融
隐擎fox1 小时前
深入网络风控底层:解密 IP 信誉评分模型、ASN 属性判定与多租户原生网络隔离架构
网络·爬虫·网络协议·tcp/ip·架构·跨境电商·指纹浏览器
积跬步以至千里1 小时前
Agent 工程师学习线路 — 核心知识点总结
面试
Zooproxy全球IP代理4 小时前
海外代理IP纯净度评估:指标、检测与调度实践
网络协议·tcp/ip·php
Zelman5 小时前
测试层级与测试类型
后端·面试·测试
考研保研资料分享5 小时前
自动化控制保研经验合辑:上交夏令营、北工大预推免与跨专业面试复盘(2025)
运维·面试·自动化
怕浪猫8 小时前
Agent 工程化面试:从开发到部署的 5 个关键问题
面试·架构·github
用户6919026813399 小时前
LangChain 与 LangGraph:从「链」到「图」,一次讲清它们是什么、什么关系
面试·架构·设计
CoderYanger9 小时前
A.每日一题:856. 括号的分数
java·程序人生·算法·leetcode·面试·职场和发展·学习方法
YumiProxy10 小时前
代理IP自动切换避坑指南:会话保持、请求头与错误处理实战
网络·网络协议·tcp/ip·代理模式·ip