版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TCP高频面试题及详细答案(实战向)一、TCP基础认知类1、简单说下TCP和UDP的核心区别?TCP是面向连接、可靠的传输层协议;UDP是无连接、不可靠的传输层协议,二者核心差异集中在四点:1.连接性:TCP通信前必须通过三次握手建立连接,通信结束四次挥手断开连接;UDP无需建立连接,直接发送数据包。2.可靠性:TCP具备确认应答、超时重传、序号排序、去重、流量控制、拥塞控制机制,保证数据完整、有序、无重复到达;UDP无任何可靠机制,数据包可能丢失、乱序、重复。3.传输效率:TCP机制复杂,头部开销大(20-60字节),传输速度慢、开销高;UDP头部固定8字节,开销极小,传输延迟低、效率高。4.适用场景:TCP用于文件传输、网页访问、邮件等对可靠性要求极高的场景;UDP用于直播、语音通话、游戏、视频传输等容忍少量丢包、追求低延迟的场景。2、TCP头部核心字段有哪些?各自作用是什么?TCP头部固定20字节,可选扩展字段最多40字节,核心关键字段如下:1.源端口/目的端口:各16位,标识通信双方的应用进程,实现端口到端口的传输。2.序列号(SEQ):32位,标记当前发送数据包的字节序号,用于数据排序、去重,保证流式数据有序接收。3.确认号(ACK):32位,告知对方下次期望接收的字节序号,确认号=对方最后收到的序列号+1。4.窗口大小(Window):16位,告知对方自己的接收缓冲区剩余容量,用于流量控制。5.标志位(6位核心):URG紧急、ACK确认、PSH推送、RST重置、SYN同步、FIN结束,是三次握手、四次挥手、异常断开的核心标识。6.校验和:校验数据包完整性,防止传输过程中数据出错。3、为什么TCP是面向字节流的协议?TCP没有严格的数据包边界,它将应用层下发的数据视作一串连续的字节流,无报文分段限制。发送方会根据MSS、滑动窗口、拥塞状态灵活拆分字节流发送,接收方按字节序号有序接收、缓存数据,再一次性交付给应用层。这也是TCP会出现粘包、拆包问题的根本原因,而UDP是面向报文的,一次发送一个完整报文,不会出现粘包问题。二、三次握手、四次挥手核心考点4、详细说下TCP三次握手过程?为什么需要三次,不能两次?三次握手完整过程:1.第一次握手(SYN):客户端向服务端发送SYN报文,携带客户端初始序列号,客户端进入SYN_SENT状态,请求建立连接。2.第二次握手(SYN+ACK):服务端收到SYN报文后,返回SYN+ACK报文,ACK确认客户端请求,同时携带服务端初始序列号,服务端进入SYN_RCVD状态。3.第三次握手(ACK):客户端收到SYN+ACK报文后,返回ACK确认报文,告知服务端连接就绪,客户端、服务端同时进入ESTABLISHED连接建立状态,双方可正常传输数据。为什么不能两次握手:两次握手只能保证客户端发送能力、服务端接收能力正常,无法验证服务端发送能力、客户端接收能力正常。最经典场景:客户端延迟的SYN报文到达服务端,两次握手会让服务端直接建立连接、占用资源,而客户端早已放弃请求,造成服务端资源浪费。三次握手可以彻底规避这种无效连接问题。5、详细说下TCP四次挥手过程?为什么挥手需要四次?四次挥手完整过程:TCP连接是全双工的,双方都可独立关闭读写通道,因此需要四次交互。3.第三次挥手(FIN):被动方数据发送完毕后,发送FIN报文,申请关闭己方写通道,进入LAST_ACK状态。为什么需要四次:握手时SYN和ACK可以合并为一个报文,而挥手时,被动方收到关闭请求后,可能还有未传输完的数据,不能直接关闭连接,必须先应答确认,等数据发完再发送关闭请求,因此必须拆分两次报文交互,总共四次挥手。2.清空网络残留报文:等待2MSL可以让本次连接所有延迟、滞留的数据包彻底在网络中失效,避免新连接建立后,旧连接的残留报文干扰新数据传输。补充:MSL是TCP报文在网络中的最大存活时间,2MSL是一个报文往返的最大耗时。原因:被动方收到客户端FIN关闭请求后,业务代码没有主动调用close关闭文件描述符,只返回了ACK,未发送FIN,导致连接一直挂起。核心是代码bug,而非网络问题。解决方案:排查代码,确保连接使用完毕后及时关闭,处理IO异常、超时场景的连接回收。三、TCP可靠性机制核心考点8、TCP靠哪些机制保证传输可靠性?TCP全套可靠机制共6点,层层兜底保障数据无丢失、无乱序、无重复:1.序列号与确认应答:字节按序编号,接收方应答确认,保证数据有序、不重复。2.超时重传:发送方发送数据后启动计时器,超时未收到ACK,自动重传数据包,解决数据丢失、ACK丢失问题。3.滑动窗口机制:动态调整发送速率,匹配接收方缓冲区能力,避免数据溢出。4.流量控制:基于接收方窗口大小,控制发送方发送速度,防止接收缓冲区满、数据丢失。5.拥塞控制:基于网络拥堵状态控制发送速率,避免网络过载、批量丢包。6.校验和校验:检测传输过程中的数据损坏,出错则丢弃报文、触发重传。9、详细说说TCP超时重传机制?TCP每发送一个报文段,就会开启一个重传计时器:1.若在超时时间内收到对应ACK,关闭计时器,正常发送后续数据;2.若超时未收到ACK,判定报文丢失或ACK丢失,自动重传该报文段;3.超时时间并非固定值,会根据网络往返时间(RTT)动态自适应调整,网络波动大时超时时间自动拉长,避免无效重传。核心解决两个问题:数据包丢失、确认应答报文丢失。10、TCP流量控制和拥塞控制的区别?很多面试会混淆两者,核心区别:控制对象不一样流量控制针对端到端,解决「发送方发太快,接收方接不住」的问题。依靠接收方返回的窗口大小,限制发送方的最大发送量,避免接收缓冲区溢出、数据丢失。拥塞控制针对整个网络链路,解决「发送方发太快,网络扛不住」的问题。网络中间设备(路由器、交换机)带宽、缓存有限,发送数据过多会导致网络拥堵、批量丢包。TCP通过拥塞窗口动态调整发送速率,适配网络状态。总结:流量控制管接收端缓冲区,拥塞控制管整体网络链路。最终发送窗口=min(接收窗口,拥塞窗口)。11、TCP拥塞控制的四个阶段?主流TCP拥塞控制分为四个阶段:慢启动、拥塞避免、快重传、快恢复。1.慢启动:连接刚建立、网络空闲时,拥塞窗口从小到大指数增长,先少量试探,避免一次性发包过多导致网络拥堵。2.拥塞避免:拥塞窗口达到慢启动阈值后,停止指数增长,改为线性缓慢增长,平稳试探网络上限。3.快重传:收到3次重复ACK,判定报文丢失,不等待超时,立即重传丢失报文,减少延迟。4.快恢复:触发快重传后,不直接退回慢启动状态,而是降低拥塞窗口后进入拥塞避免阶段,兼顾稳定性和传输效率。四、TCP粘包拆包实战考点12、什么是TCP粘包、拆包?产生原因是什么?现象说明拆包:发送方一次发送的完整数据,被TCP拆分成多个小包传输,接收方多次接收才能拿到完整数据。粘包:发送方多次发送的独立数据,被TCP合并成一个数据包传输,接收方一次接收多条数据,无法区分边界。产生原因1.TCP是字节流协议,无报文边界;2.发送端缓冲区缓存数据,会合并小数据包统一发送;3.链路MSS限制,大数据包会被自动拆分;4.接收端缓冲区缓存数据,未及时读取,多次数据堆积粘连。13、TCP粘包拆包的解决方案?核心思路:人为定义报文边界,让应用层可以区分每条独立数据,四种主流方案:1.固定长度报文:每条数据统一固定字节长度,接收方按固定长度读取,不足则等待下一次接收。缺点是灵活性差、浪费带宽。2.尾部分隔符:每条数据末尾添加自定义分隔符(如换行符、特殊字符),接收方根据分隔符切割数据。缺点是数据内容不能包含分隔符。3.头部长度字段(最常用):报文头部固定位置存放数据体长度,接收方先读取头部长度,再精准读取对应字节数的数据,完美解决粘包拆包,灵活性最高。4.应用层协议封装:直接使用成熟协议,如HTTP、Netty自定义协议、Protobuf,底层已封装好边界解析逻辑。五、TCP高频疑难面试题14、为什么三次握手不能携带数据?四次挥手可以携带数据?1.三次握手前两次握手绝对不能携带数据:第一次SYN、第二次SYN+ACK阶段,连接未完全建立,若允许携带数据,恶意攻击者可大量发送带数据的SYN报文,服务端会直接缓存数据,极易造成内存耗尽、DOS攻击。第三次握手的ACK报文可以携带数据,此时连接已建立,双方状态正常。2.四次挥手全程可以携带数据:挥手只是关闭写通道,全双工连接关闭过程中,读通道仍可正常传输剩余数据,因此被动关闭方可以在挥手阶段继续发送残留业务数据,保证数据不丢失。15、SYN洪水攻击原理及解决方案?攻击原理:攻击者伪造大量虚假IP,向服务端发送SYN连接请求,服务端返回SYN+ACK后,无法收到对方的第三次ACK确认,会持续处于SYN_RCVD状态,占用半连接队列资源,耗尽服务端端口和内存,导致正常用户无法建立连接。解决方案:1.开启SYN缓存、缩短SYN超时时间,快速释放无效半连接;2.开启SYNCookie,不占用半连接队列,通过算法校验合法连接;3.防火墙拦截异常SYN请求、限制单IP连接频率。16、TCP长连接和短连接的区别、适用场景?短连接每次请求都新建TCP连接,请求结束立即断开。优点:资源占用低,闲置不占连接;缺点:每次通信都要握手挥手,耗时耗性能。适用:接口请求、网页访问、单次低频交互场景。长连接连接建立后长期保持,多次数据传输复用同一个连接,空闲时通过心跳包保活。优点:省去握手挥手开销,传输效率高;缺点:长期占用连接资源,需要处理连接超时、断线重连。适用:即时通讯、游戏、数据库连接、高频交互场景。17、TCP心跳机制的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年轴承钢钢球行业洞察报告及未来五至十年发展趋势报告
- 阿Q正传简介教学课件
- 施工项目应急预案封皮(3篇)
- 智能通道系统施工方案(3篇)
- 条纹造型混凝土施工方案(3篇)
- 桥梁墩基坑施工方案(3篇)
- 水塔抛石基础施工方案(3篇)
- 2026-2027学年初中数学七年级上册(新教材)沪科版(新教材)综合与实践 珍惜水资源课时诊断卷
- 安全应急宣教
- 初中二年级语文《敬畏自然》中反问句表达效果分析教案
- 2026年二建水利实务电子版真题及答案
- 关键工序和特殊过程的管理程序文件
- 2025年软考《网络规划设计师》历年真题
- 风力发电项目施工现场安全生产管理制度
- 脊髓炎诊疗中国指南(2026 版)
- 南京市2025江苏南京技师学院招聘工作人员26人笔试历年参考题库典型考点附带答案详解
- 阿尔兹海默病研究新进展2026
- 贝壳卖房委托书
- 2026成人手术后疼痛评估与护理培训课件
- 病案首页填写培训课件
- 雨课堂学堂在线学堂云English for Presentations at International Medical Conferences(首都医科大学)单元测试考核答案
评论
0/150
提交评论