大家好我是程序员二叉。简介本文聚焦计算机网络传输层两大核心协议TCP、UDP完整梳理协议区别、适用场景、TCP可靠原理、三次握手、四次挥手、SYN攻击、流量与拥塞控制、粘包、报文头部字段以及UDP特性附带拓展QUIC协议内容为后端、运维、计算机面试高频考点条理精简便于背诵复习。欢迎点赞收藏关注。一、TCP 与 UDP 区别、适用场景核心区别对比对比项TCPUDP连接性面向连接必须先建立连接再通信无连接无需建连直接发送数据可靠性可靠传输无丢包、无乱序、无重复不可靠传输可能丢包、乱序、不重传传输形式面向字节流无数据边界面向数据报保留报文边界头部开销20~60 字节字段复杂固定8 字节开销极小控制机制流量控制、拥塞控制、超时重传无任何控制机制传输效率低握手重传控制极高无建连、无确认适用场景TCP要求数据绝对完整可靠如 HTTP/HTTPS、文件传输、邮件、数据库连接、远程登录UDP要求低延迟、实时性容忍少量丢包如 直播、视频通话、网络游戏、DNS 查询二、TCP 为什么可靠可靠传输四大机制TCP 依靠4 大核心机制保证数据可靠交付序列号 确认应答ACK每个字节数据分配唯一序号接收方回复 ACK 确认收到保证数据有序、不丢失。超时重传发送数据后启动计时器超时未收到 ACK 自动重传数据包。去重机制接收方根据序列号丢弃重复数据包避免数据重复。连接管理 校验和三次握手/四次挥手保证连接合法校验和验证数据未被篡改。三、TCP 三次握手全过程、为什么三次不是两次三次握手完整流程第一次握手C → S客户端发送SYN报文携带初始序列号请求建立连接。第二次握手S → C服务端回复SYN ACK确认客户端请求并发送自己的初始序列号。第三次握手C → S客户端回复ACK双方进入已连接状态ESTABLISHED。为什么必须是三次不能是两次防止失效的连接请求建立无效连接旧的延迟 SYN 包到达服务器两次握手会让服务器直接建立连接浪费资源。双向确认收发能力三次握手可以验证客户端能发能收、服务端能发能收两次无法完成双向验证。四、什么是 SYN 泛洪攻击SYN FloodSYN 泛洪是一种DOS 拒绝服务攻击攻击者伪造大量虚假 IP 向服务器发送SYN握手包服务器回复SYNACK进入半连接状态并占用资源虚假 IP 永远不会回复第三次ACK服务器半连接队列被占满正常用户无法建立连接防御方案SYN Cookie、限制半连接数量、IP 黑名单五、TCP 四次挥手全过程、为什么四次四次挥手完整流程第一次挥手C → S客户端发送FIN表示不再发送数据。第二次挥手S → C服务端回复ACK确认关闭请求此时服务端仍可发送剩余数据。第三次挥手S → C服务端数据发送完毕发送FIN请求关闭。第四次挥手C → S客户端回复ACK等待 2MSL 后彻底断开连接。为什么断开需要四次TCP 是全双工通信两个方向独立关闭一方发送FIN 本方停止发送对方必须先回复ACK等自己数据发完再发FIN→ACK 和 FIN 无法合并因此必须四次。六、为什么建立连接三次断开连接四次建立连接三次服务端可以把SYN和ACK合并发送减少一次交互。断开连接四次TCP 全双工两个方向必须分别关闭ACK 与 FIN 无法合并。七、TCP 滑动窗口原理、流量控制滑动窗口发送/接收方维护一个窗口大小批量发送/接收数据窗口随 ACK 确认向前滑动已确认的数据移出窗口无需每发一个包就等待确认大幅提升传输效率流量控制接收方在 ACK 中告知自己的缓冲区大小发送方严格按照接收方能力发送数据防止发送过快导致接收缓冲区溢出丢包八、TCP 拥塞控制慢启动、拥塞避免、快重传、快恢复慢启动连接建立后拥塞窗口从 1 开始指数增长快速提升发送速度。拥塞避免达到阈值后窗口线性缓慢增长防止网络拥堵。快重传连续收到 3 个重复 ACK立即重传丢失包不等待超时。快恢复快重传后不回到慢启动直接进入拥塞避免保证传输效率。九、TCP 粘包问题产生原因、解决方案产生原因TCP 是字节流协议无数据边界发送方使用 Nagle 算法合并小数据包发送接收方读取不及时多个包在缓冲区粘连解决方案自定义协议头在数据前加长度字段按长度拆包固定报文长度使用分隔符区分数据包关闭 Nagle 算法十、TCP 头部重要字段序号SEQ当前报文第一个字节的编号确认号ACK期望收到的下一个字节编号标志位SYN建立连接ACK确认应答FIN关闭连接RST强制断开连接十一、UDP 特点无连接不用握手直接发送不可靠不保证送达、不保证有序面向数据报保留数据包边界开销小、延迟低无流量控制、无拥塞控制十二、拓展什么是 QUICQUIC 是基于UDP开发的新一代可靠传输协议HTTP3 底层0-RTT/1-RTT 快速握手连接速度远超 TCP多路复用一个流丢包不阻塞其他流解决 TCP 队头阻塞内置 TLS 加密更安全连接迁移切换 Wi‑Fi/流量 IP 变了也不断连兼具UDP 低延迟TCP 可靠性总结TCP面向连接可靠、UDP无连接低延迟依据业务对可靠性和实时性的要求选型使用。TCP依靠序号应答、超时重传、去重、校验四大机制实现可靠传输三次握手校验双向通信能力四次挥手适配全双工双向关闭特性。滑动窗口实现流量控制防止接收溢出四种拥塞控制算法平衡传输速率与网络拥堵字节流特性带来粘包问题依靠应用层自定义协议解决。SYN泛洪利用半连接队列漏洞攻击服务器主流防御依靠SYN Cookie等方案。QUIC基于UDP实现可靠传输融合TCP与UDP优势是HTTP3底层标准解决TCP固有队头阻塞缺陷。
【计算机网络】面试必考|TCP/UDP全考点精讲
大家好我是程序员二叉。简介本文聚焦计算机网络传输层两大核心协议TCP、UDP完整梳理协议区别、适用场景、TCP可靠原理、三次握手、四次挥手、SYN攻击、流量与拥塞控制、粘包、报文头部字段以及UDP特性附带拓展QUIC协议内容为后端、运维、计算机面试高频考点条理精简便于背诵复习。欢迎点赞收藏关注。一、TCP 与 UDP 区别、适用场景核心区别对比对比项TCPUDP连接性面向连接必须先建立连接再通信无连接无需建连直接发送数据可靠性可靠传输无丢包、无乱序、无重复不可靠传输可能丢包、乱序、不重传传输形式面向字节流无数据边界面向数据报保留报文边界头部开销20~60 字节字段复杂固定8 字节开销极小控制机制流量控制、拥塞控制、超时重传无任何控制机制传输效率低握手重传控制极高无建连、无确认适用场景TCP要求数据绝对完整可靠如 HTTP/HTTPS、文件传输、邮件、数据库连接、远程登录UDP要求低延迟、实时性容忍少量丢包如 直播、视频通话、网络游戏、DNS 查询二、TCP 为什么可靠可靠传输四大机制TCP 依靠4 大核心机制保证数据可靠交付序列号 确认应答ACK每个字节数据分配唯一序号接收方回复 ACK 确认收到保证数据有序、不丢失。超时重传发送数据后启动计时器超时未收到 ACK 自动重传数据包。去重机制接收方根据序列号丢弃重复数据包避免数据重复。连接管理 校验和三次握手/四次挥手保证连接合法校验和验证数据未被篡改。三、TCP 三次握手全过程、为什么三次不是两次三次握手完整流程第一次握手C → S客户端发送SYN报文携带初始序列号请求建立连接。第二次握手S → C服务端回复SYN ACK确认客户端请求并发送自己的初始序列号。第三次握手C → S客户端回复ACK双方进入已连接状态ESTABLISHED。为什么必须是三次不能是两次防止失效的连接请求建立无效连接旧的延迟 SYN 包到达服务器两次握手会让服务器直接建立连接浪费资源。双向确认收发能力三次握手可以验证客户端能发能收、服务端能发能收两次无法完成双向验证。四、什么是 SYN 泛洪攻击SYN FloodSYN 泛洪是一种DOS 拒绝服务攻击攻击者伪造大量虚假 IP 向服务器发送SYN握手包服务器回复SYNACK进入半连接状态并占用资源虚假 IP 永远不会回复第三次ACK服务器半连接队列被占满正常用户无法建立连接防御方案SYN Cookie、限制半连接数量、IP 黑名单五、TCP 四次挥手全过程、为什么四次四次挥手完整流程第一次挥手C → S客户端发送FIN表示不再发送数据。第二次挥手S → C服务端回复ACK确认关闭请求此时服务端仍可发送剩余数据。第三次挥手S → C服务端数据发送完毕发送FIN请求关闭。第四次挥手C → S客户端回复ACK等待 2MSL 后彻底断开连接。为什么断开需要四次TCP 是全双工通信两个方向独立关闭一方发送FIN 本方停止发送对方必须先回复ACK等自己数据发完再发FIN→ACK 和 FIN 无法合并因此必须四次。六、为什么建立连接三次断开连接四次建立连接三次服务端可以把SYN和ACK合并发送减少一次交互。断开连接四次TCP 全双工两个方向必须分别关闭ACK 与 FIN 无法合并。七、TCP 滑动窗口原理、流量控制滑动窗口发送/接收方维护一个窗口大小批量发送/接收数据窗口随 ACK 确认向前滑动已确认的数据移出窗口无需每发一个包就等待确认大幅提升传输效率流量控制接收方在 ACK 中告知自己的缓冲区大小发送方严格按照接收方能力发送数据防止发送过快导致接收缓冲区溢出丢包八、TCP 拥塞控制慢启动、拥塞避免、快重传、快恢复慢启动连接建立后拥塞窗口从 1 开始指数增长快速提升发送速度。拥塞避免达到阈值后窗口线性缓慢增长防止网络拥堵。快重传连续收到 3 个重复 ACK立即重传丢失包不等待超时。快恢复快重传后不回到慢启动直接进入拥塞避免保证传输效率。九、TCP 粘包问题产生原因、解决方案产生原因TCP 是字节流协议无数据边界发送方使用 Nagle 算法合并小数据包发送接收方读取不及时多个包在缓冲区粘连解决方案自定义协议头在数据前加长度字段按长度拆包固定报文长度使用分隔符区分数据包关闭 Nagle 算法十、TCP 头部重要字段序号SEQ当前报文第一个字节的编号确认号ACK期望收到的下一个字节编号标志位SYN建立连接ACK确认应答FIN关闭连接RST强制断开连接十一、UDP 特点无连接不用握手直接发送不可靠不保证送达、不保证有序面向数据报保留数据包边界开销小、延迟低无流量控制、无拥塞控制十二、拓展什么是 QUICQUIC 是基于UDP开发的新一代可靠传输协议HTTP3 底层0-RTT/1-RTT 快速握手连接速度远超 TCP多路复用一个流丢包不阻塞其他流解决 TCP 队头阻塞内置 TLS 加密更安全连接迁移切换 Wi‑Fi/流量 IP 变了也不断连兼具UDP 低延迟TCP 可靠性总结TCP面向连接可靠、UDP无连接低延迟依据业务对可靠性和实时性的要求选型使用。TCP依靠序号应答、超时重传、去重、校验四大机制实现可靠传输三次握手校验双向通信能力四次挥手适配全双工双向关闭特性。滑动窗口实现流量控制防止接收溢出四种拥塞控制算法平衡传输速率与网络拥堵字节流特性带来粘包问题依靠应用层自定义协议解决。SYN泛洪利用半连接队列漏洞攻击服务器主流防御依靠SYN Cookie等方案。QUIC基于UDP实现可靠传输融合TCP与UDP优势是HTTP3底层标准解决TCP固有队头阻塞缺陷。