TCP协议高频面试题及详细答案(实战版)_第1页
TCP协议高频面试题及详细答案(实战版)_第2页
TCP协议高频面试题及详细答案(实战版)_第3页
TCP协议高频面试题及详细答案(实战版)_第4页
TCP协议高频面试题及详细答案(实战版)_第5页
已阅读5页,还剩1页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

TCP协议高频面试题及详细答案(实战版)一、基础概念类(入门必问)1、简单说下TCP协议是什么?有什么特点?TCP是传输层的核心协议,全称传输控制协议,是一种面向连接、可靠的、基于字节流的传输协议,也是互联网数据传输的基础协议之一。核心特点:面向连接:数据传输前必须经过三次握手建立专属连接,传输结束后四次挥手断开连接,不会无连接直接发数据。可靠性传输:通过确认应答、超时重传、滑动窗口、拥塞控制、校验和等机制,保证数据不丢失、不重复、按序到达。字节流传输:TCP没有数据包边界,数据是连续的字节流,发送方和接收方以流的形式读写数据,会出现粘包、拆包问题。全双工通信:连接建立后,双方可以同时互相发送、接收数据,互不干扰。无广播、无多播:仅支持点对点一对一通信。2、TCP和UDP的核心区别?面试高频对比从实际工作和面试核心维度对比,关键区别如下:连接特性:TCP面向连接,需握手建连、挥手断连;UDP无连接,无需建连,直接发送数据包。可靠性:TCP可靠,保证数据完整、有序、无重复;UDP不可靠,尽力传输,可能丢包、乱序。传输方式:TCP字节流,无数据包边界;UDP数据报,保留数据包边界,一次发送一次接收。资源开销:TCP头部20-60字节,机制复杂,开销大、速度稍慢;UDP头部仅8字节,逻辑简单,传输速度快、延迟低。控制机制:TCP有重传、拥塞控制、流量控制、校验和;UDP仅基础校验和,无任何容错、控制机制。适用场景:TCP用于文件传输、网页、邮件、登录支付等对可靠性要求高的场景;UDP用于直播、游戏、语音通话、视频会议等对速度、延迟敏感,可容忍少量丢包的场景。二、核心原理类(面试重点)3、详细说下TCP三次握手的过程?为什么需要三次,不能两次?三次握手完整过程(客户端主动建连,服务端被动监听):第一次握手(SYN):客户端向服务端发送SYN报文,携带客户端初始序列号ISN,客户端进入SYN_SENT状态。目的:验证客户端发送能力正常。第二次握手(SYN+ACK):服务端收到SYN报文后,返回SYN+ACK报文,包含服务端初始序列号ISN,同时携带对客户端报文的确认号。服务端进入SYN_RCVD状态。目的:验证服务端接收、发送能力正常,客户端接收能力正常。第三次握手(ACK):客户端收到报文后,发送ACK确认报文,确认服务端的连接请求,客户端、服务端同时进入ESTABLISHED(连接建立)状态,可正常传输数据。目的:验证服务端的接收能力正常。为什么不能两次握手?两次握手只能保证「客户端发、服务端收」正常,无法验证「服务端发、客户端收」的通道正常。如果网络延迟导致客户端失效的SYN报文延迟到达服务端,两次握手会让服务端直接建立无效连接,占用服务端资源。三次握手可以通过最后一次ACK,过滤掉过期、无效的连接请求,避免资源浪费,同时双向确认通信链路完全正常。4、TCP四次挥手的过程?为什么断开连接需要四次,不能三次?四次挥手完整过程(全双工断开,任意一方可主动断开):第三次挥手(FIN):被动方数据全部发送完成后,向主动方发送FIN报文,请求关闭自己的发送通道,进入LAST_ACK状态。为什么需要四次?因为TCP是全双工通信,读写通道相互独立。主动方发完数据断开写通道后,被动方可能还有残留数据需要发送,不能直接关闭连接。必须先确认关闭主动方的写通道,等被动方数据传输完毕后,再关闭被动方的写通道,两次确认、两次关闭,因此需要四次挥手,无法合并为三次。保证被动方正常关闭连接:第四次挥手的ACK报文可能在网络中丢失,被动方超时后会重发FIN报文。主动方等待2MSL,可及时收到重发的FIN并再次发送ACK,避免被动方一直处于LAST_ACK状态,无法释放资源。防止残留报文干扰新连接:等待2MSL可以让当前连接中所有滞留、延迟的报文全部在网络中失效消散,避免旧连接的过期报文,被新建立的同名连接接收,导致数据错乱。三、可靠性机制类(核心难点)6、TCP靠哪些机制保证传输可靠性?TCP的可靠性由五大核心机制共同保障,是面试必背考点:校验和:收发双方都会对报文数据计算校验和,接收方校验不一致时,直接丢弃报文,保证数据完整性。确认应答(ACK):接收方收到数据后,必须返回ACK确认报文,告知发送方数据已正常接收,未确认的数据会被判定为未送达。超时重传:发送方发送数据后会启动计时器,超时未收到ACK,默认数据丢失或报文延迟,自动重传对应数据,解决丢包问题。有序接收、去重:TCP通过序列号对字节流编号,接收方根据序列号排序,自动丢弃重复的报文,保证数据有序、无重复。流量控制+拥塞控制:流量控制解决「发送方太快,接收方缓冲区溢出」的问题;拥塞控制解决「网络拥堵导致丢包」的问题,从链路层面保障传输稳定。7、TCP流量控制原理?滑动窗口机制怎么工作?核心目的:控制发送方的发送速率,匹配接收方的接收能力,避免接收缓冲区爆满、数据丢失。实现方式:滑动窗口窗口大小由接收方决定,每次ACK报文中会携带「接收窗口大小」,告知发送方自己当前能接收的数据量。发送方严格按照接收窗口大小发送数据,不会超额发送;接收方处理完数据、释放缓冲区后,会通过新的ACK更新窗口大小;窗口随数据发送、接收动态滑动,无需每次建立新连接,传输效率高。如果接收方缓冲区已满,会告知发送方窗口大小为0,发送方停止发送,等待窗口更新,彻底避免接收方过载。8、TCP拥塞控制有哪几个阶段?核心原理是什么?核心目的:控制整体网络的传输速率,避免发送数据过多导致网络拥堵、大面积丢包,区别于针对端设备的流量控制。拥塞控制分为四个阶段,核心依靠拥塞窗口控制发送数据量:慢启动:连接初始化阶段,拥塞窗口从小到大指数增长,初始窗口很小,快速试探网络承载能力,避免一开始大量发包造成拥堵。拥塞避免:当拥塞窗口达到慢启动阈值后,停止指数增长,改为线性缓慢增长,平稳提升传输速率,降低拥堵风险。快重传:如果收到3次重复ACK,判定为局部丢包而非网络拥堵,不等待超时,直接立即重传丢失报文,提升传输效率。快恢复:触发快重传后,不退回初始窗口大小,而是将拥塞窗口减半,进入平稳增长的拥塞避免阶段,避免速率骤降影响传输速度。四、实战问题类(工程面试高频)9、什么是TCP粘包、拆包?产生原因及解决方案?问题本质:TCP是字节流协议,无数据包边界,操作系统会根据缓冲区大小、网络状况合并或拆分数据,导致接收方无法区分完整数据包。拆包:单个完整数据包过大,超过TCP最大报文段长度,被系统拆分成多个小包发送。粘包:多个小包数据间隔时间短、缓冲区未满,系统将多个数据包合并为一个大包发送,接收方一次性收到多条数据,无法拆分。产生原因:TCP无数据边界、操作系统缓冲区机制、网络传输的不确定性。主流解决方案:固定长度报文:统一每个数据包的长度,接收方按固定长度读取数据,简单易用;首尾分隔符:数据包首尾添加特殊分隔符,接收方根据分隔符切割报文;长度头+数据体:最常用方案,报文头部携带数据长度,接收方先读取长度,再读取对应长度的数据,精准拆分,适配所有场景。10、TCP为什么会出现超时重传?重传机制的触发条件?TCP发送每一段数据都会开启超时计时器,出现以下两种情况会触发超时重传:数据包在网络中丢失,接收方未收到,无ACK返回;数据包正常送达,但接收方返回的ACK报文在网络中丢失。超时时间会根据网络延迟动态调整,并非固定值。超时后发送方会重新发送未确认的数据,保证数据最终能送达,是TCP可靠性的核心兜底机制。同时配合快重传机制,可在未超时的情况下快速重传丢包,提升效率。11、TCP头部关键字段有哪些?各自作用?面试重点掌握6个核心字段,无需背诵全部字段:序列号(SEQ):标记字节流的序号,用于数据排序、去重、重传定位;确认号(ACK):告知发送方「当前已接收完毕的最大字节序号」,确认后续数据发送位置;窗口大小:流量控制核心,标识接收方剩余缓冲区大小;标志位(SYN/ACK/FIN/RST):控制连接建立、断开、重置,是握手挥手的核心标识;校验和:校验数据完整性,判断报文是否传输出错;最大报文段长度MSS:告知对方单次可发送的最大数据长度,避免拆包异常。五、拔高面试题(中高级岗位)12、TCP连接可以一直保持吗?长连接的问题怎么解决?TCP连接是逻辑连接,默认无超时关闭机制,理论上可以永久保持,但实际网络环境中会出现问题:中间路由、防火墙会自动清理长期无数据的空闲连接,导致连接假死;一端设备异常掉线,另一端无法感知,一直维持无效连接,占用端口和资源。解决方案:开启TCP保活机制(Keepalive),空闲一段时间后,主动发送探测报文,检测对方是否在线,无响应则判定连接失效,主动断开释放资源。业务层也可自定义心跳包,适配业务场景,比系统保活更灵活。13、简述TCP半连接、全连接队列的作用?溢出会出现什么问题?

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论