版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TCP高频面试题及详细答案(实战版)一、TCP基础概念类1、简单说下TCP是什么,核心特点有哪些?TCP是传输层的面向连接、可靠的字节流协议,是互联网最核心的传输协议之一,主要用于对数据完整性、有序性要求高的场景,比如HTTP、数据库传输、文件传输等。核心特点可以总结为四点:1.面向连接:传输数据前必须通过三次握手建立专属连接,传输结束后通过四次挥手断开连接,不会无连接直接发数据。2.可靠传输:通过确认应答、超时重传、序号校验、去重等机制,保证数据百分百送达、不丢失、不重复。3.面向字节流:TCP没有报文边界,会把应用层数据当成连续的字节流处理,发送和接收的数据是流式的,可能出现粘包、拆包问题。4.拥塞控制+流量控制:可以根据网络状况和接收方接收能力,动态调整发送速率,避免网络拥堵和接收方缓冲区溢出。2、TCP和UDP的核心区别?面试常用对比1.连接特性:TCP面向连接,需要握手建连;UDP无连接,无需建连,直接发送数据包。2.可靠性:TCP可靠,保证数据有序、不丢、不重;UDP不可靠,可能丢包、乱序,无重传机制。3.控制机制:TCP有序号、ACK、超时重传、流量控制、拥塞控制;UDP无任何额外控制机制,结构极简。4.传输效率:TCP头部开销大(20-60字节)、流程多,速度稍慢;UDP头部仅8字节,开销小、传输延迟低、速度快。5.适用场景:TCP用于文件传输、网页、接口请求、数据库访问;UDP用于直播、游戏、语音视频、DNS查询。3、TCP头部核心字段有哪些?各自作用?重点掌握面试常问的关键字段:1.源端口、目的端口:标识两端应用进程,实现端到端传输。2.序列号(SEQ):对发送的字节数据编号,保证数据有序,同时用于去重。3.确认号(ACK):接收方告知发送方,当前已经收到了多少字节数据,下次需要接收的起始序号。4.数据偏移:标识TCP头部长度,因为头部有可选字段,长度不固定。5.6个标志位:URG、ACK、PSH、RST、SYN、FIN,用于控制连接状态、数据传输和连接断开。6.窗口大小:流量控制核心,告知对方自己的接收缓冲区剩余容量,限制对方发送速度。7.校验和:校验报文完整性,检测传输过程中的数据错误。二、三次握手、四次挥手核心面试题1、详细讲一下TCP三次握手过程?为什么是三次而不是两次?三次握手完整过程:1.第一次握手(SYN):客户端向服务端发送SYN报文,携带客户端初始序列号,请求建立连接,客户端进入SYN_SENT状态。2.第二次握手(SYN+ACK):服务端收到SYN报文后,回复SYN+ACK报文。其中SYN代表服务端同意建连,ACK是对客户端报文的确认,服务端进入SYN_RCVD状态。3.第三次握手(ACK):客户端收到服务端报文后,发送ACK确认报文,告知服务端连接已就绪。客户端、服务端双双进入ESTABLISHED状态,连接建立完成。为什么不能两次握手?核心原因是无法确认服务端接收能力,会造成资源浪费。如果只有两次握手,客户端发完SYN、收到服务端SYN+ACK就直接建连。此时如果网络延迟导致旧的SYN报文到达服务端,服务端会直接建立连接并占用端口资源,但客户端早已失效不会传输数据,会造成服务端大量无效连接占用资源。三次握手可以通过最后一次ACK,确保双方的发送、接收能力都正常,同时过滤掉过期、延迟的无效连接请求。2、TCP四次挥手详细过程?为什么断开连接需要四次?四次挥手完整过程:3.第三次挥手(FIN):被动关闭方数据全部发送完毕后,发送FIN报文,请求关闭自身写通道,进入LAST_ACK状态。为什么需要四次?因为TCP连接是全双工的,读写通道相互独立。握手时SYN和ACK可以合并发送,所以三次即可;但挥手时,主动方关闭写通道后,被动方可能还有残留数据需要发送,不能直接关闭连接,必须先确认关闭对方的写通道,等自身数据发完再关闭自己的写通道,因此需要四次交互。1.保证最后一次ACK报文可靠送达:如果最后一次ACK丢失,被动关闭方会重发FIN报文。主动方在2MSL内可以收到重传的FIN,并重发ACK,避免被动方一直处于LAST_ACK状态、无法释放资源。2.等待网络中残留的过期报文消失:网络中可能存在本次连接延迟的数据包,2MSL足够让所有残留报文在网络中失效、丢弃,避免新建立的连接收到旧连接的无效数据,保证新连接的数据纯净性。简单理解:MSL是报文最大生存时间,2MSL就是最坏情况下,往返报文的最大存活时间,足以清空所有残留数据。4、什么是SYN洪水攻击?原理和简单防护思路SYN洪水攻击是常见的DDOS攻击方式。攻击原理:攻击者伪造大量虚假IP,向服务端发送SYN建连请求。服务端收到后回复SYN+ACK,进入SYN_RCVD状态并占用连接资源,但虚假IP不会回复第三次ACK。服务端会一直重试等待,大量半连接堆积,耗尽端口和内存资源,导致正常用户无法建连。基础防护思路:开启SYN缓存、缩短SYN超时重试时间、过滤异常IP、开启防火墙限流、使用SYNCookie机制。三、TCP可靠性机制核心题1、TCP靠哪些机制保证可靠传输?TCP可靠性由五大核心机制共同保障:1.序列号+确认应答(ACK):每个字节有序列号,接收方按序接收、返回确认号,保证数据有序、不重复、送达可感知。2.超时重传:发送方发送数据后启动计时器,超时未收到ACK,自动重传对应数据,解决网络丢包问题。3.校验和:传输前后校验报文完整性,出错则丢弃报文,等待重传。4.重复去重:利用序列号识别重复数据包,自动丢弃重复数据。5.流量控制+拥塞控制:避免接收方缓冲区溢出、网络拥堵导致的丢包,从源头减少数据传输失败的情况。2、超时重传的原理?为什么重传不会导致数据重复错乱?发送方每发送一段报文,都会记录对应的序列号并开启超时计时器。如果在超时时间内收到对应ACK,就关闭计时器;如果超时未收到,就判定报文丢失或ACK丢失,自动重传该序列号对应的字节数据。不会错乱重复的核心原因是序列号唯一标识每一个字节。接收方收到重复序号的报文,会直接丢弃,只保留首次接收的数据,同时返回对应的ACK,保证数据最终一致。3、流量控制和拥塞控制的区别?很多面试会混淆核心区别:控制对象不一样1.流量控制:针对接收方,解决“接收方处理太慢、缓冲区满了”的问题。通过滑动窗口机制,接收方实时告知发送方自己的剩余接收窗口,限制发送方发送速率,防止接收缓冲区溢出。2.拥塞控制:针对整个网络,解决“网络拥堵、链路带宽不足”的问题。发送方通过检测网络丢包、延迟,动态调整拥塞窗口,控制整体发送量,避免网络链路被塞满、大面积丢包。简单总结:流量控制管对端接收能力,拥塞控制管网络传输状态。四、粘包拆包高频面试题1、什么是TCP粘包、拆包?为什么会出现?TCP是字节流协议,没有报文边界,操作系统会根据缓冲区大小、网络MTU自动整合或拆分数据,就会产生粘包拆包。拆包:应用层发送的一段完整数据,太大超过链路MTU或TCP缓冲区上限,被TCP拆分成多个小包分次发送,接收方需要多次接收才能拿到完整数据。粘包:应用层多次发送的小段数据,TCP会合并成一个大包发送,接收方一次读取到多条数据,无法区分数据边界。核心根源:TCP无消息边界、流式传输。2、TCP粘包拆包的解决方案?工程常用方案工程中四种主流解决方案,面试按优先级回答即可:1.固定长度报文:每次传输的数据长度固定,接收方每次读取固定字节数,简单粗暴,适合数据长度统一的场景。2.首尾分隔符:每条数据首尾添加特殊分隔符(如换行、特定字符),接收方根据分隔符切割数据,适合文本类数据。3.长度头+数据体(最常用):报文头部预留4字节/2字节存储数据体长度,接收方先读取长度头,再根据长度读取对应数据体,适配绝大多数业务场景,稳定性最高。4.数据包合并控制:关闭Nagle算法,禁止系统合并小包,适合低延迟交互场景。五、TCP滑动窗口、拥塞控制进阶题1、什么是滑动窗口?作用是什么?滑动窗口是TCP实现流量控制、可靠传输的核心机制,本质是发送方和接收方各自维护的一段缓冲区区间。窗口内的数据是允许发送/接收的有效数据,窗口外的数据要么已经传输完成,要么暂时不能传输。随着ACK持续确认,窗口会向后滑动,实现流式、连续的数据传输,不需要每发一段数据就等待一次确认,大幅提升传输效率。2、TCP拥塞控制四个阶段?1.慢启动:连接刚建立时,拥塞窗口很小,从1开始指数增长,快速探测网络带宽,提升传输速度。2.拥塞避免:窗口增长到慢启动阈值后,停止指数增长,改为线性缓慢增长,避免快速撑满网络带宽。3.快重传:连续收到3次重复ACK,判定为局部丢包,不等待超时,直接重传丢失报文,减少延迟。4.快恢复:触发快重传后,不直接将窗口重置为最小值,而是减半调整窗口大小,快速恢复传输速度,避免性能大幅下降。六、TCP面试实战故障题1、客户端连接服务器,端口可以连通但是数据偶尔传不过去,可能的原因?1.网络不稳定,出现间歇性丢包、延迟过高,TCP超时重传频繁导致阻塞;2.服务端接收缓冲区满,流量控制窗口缩为0,客户端停止发送数据;3.防火墙、安全组拦截部分报文,放行握手但拦截部分数据报文;4.应用层读取数据不及时,TCP缓冲区积
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 粮食经纪人基础综合评优考核试卷含答案
- 丙烷脱氢装置操作工岗前新工艺考核试卷含答案
- 环丁砜装置操作工岗中基础晋升考核试卷含答案
- 2026年一次性使用血液灌流器行业洞察报告及未来五至十年发展趋势报告
- 2025-2026山东版初一语文期末测试卷
- 山东版小学五年级语文下学期期末测试卷
- 2026年心理咨询师专项突破模拟卷
- 2026年七年级上册第6章 平面图形的初步认识 第2套 基础巩固
- 2026年信息技术安全试题及答案
- 2026年物流配送优化管理实施试题及答案
- 《远洋渔船电子渔捞日志规范》
- 北京化工大学《工程计算方法》2025-2026学年期末试卷
- 铁路劳务工岗位培训制度
- 2025年长期股权投资权益法核算试题及答案
- 青少年礼仪培训课件
- 德佑购房合同范本
- IEC31010-2019风险管理 风险评估技术(2024)(可编辑!)
- (正式版)DB3302∕T 1180-2025 《高速公路建设韧性指标体系》
- 脊柱骨折中医护理方案
- 患者风险评估管理制度
- YY/T 0866-2024医用防护口罩总泄漏率测试方法
评论
0/150
提交评论