最近好几个朋友在准备大厂和中小厂的校招、社招面试,不约而同卡在计算机网络这一块。说复习不知道从哪下手,说背题又觉得八股文太多记不住,笔试里稍微换个问法就懵。计算机网络面试笔试基础知识,听起来像是“背背书就能过”的内容,实际上它考察的是你对整个网络体系结构的理解深度,而不是记住某个端口号、某个状态码的零散记忆。
这篇内容我打算换个方式讲,不给你整篇的“背诵全文”,而是把面试和笔试中真正高频出现的基础知识重新梳理一遍,把考点背后的原理讲清楚,再配合实际的题目场景和回答思路来拆解。适合正在准备校招笔试、社招技术面、或者想系统过一遍网络基础再进项目实战的人。不管你基础怎么样,把这篇吃透,至少你能应付面试里九成以上的基础知识类问题。
1. 别急着背题:先把计算机网络的地图画出来
1.1 一张协议栈地图解决80%的定位问题
计算机网络面试题有个特点,问法千变万化,但考察的落点基本都集中在协议栈上。只要你能在脑子里时刻带着这张地图,遇到任何题目都能快速定位它在哪一层、跟哪些协议相关、上下游是谁。
我建议你用TCP/IP四层模型来记,而不是纠结OSI七层。因为面试官问的大多是TCP/IP语境下的概念,OSI七层虽然也考,但更多是考“哪一层是干嘛的”这种送分题。四层模型里,应用层对应HTTP、DNS、FTP、SMTP这些你能直接感知的协议;传输层就是TCP和UDP的战场,端口、连接、可靠传输都在这一层解决;网络层管IP地址、路由选择,是数据包跨网络传输的核心;网络接口层处理的是MAC地址、帧的封装和物理介质上的实际传输。
实际面试中,超过八成的题目都可以落到这张图上。比如问“你访问一个网站,数据是怎么走的”,其实就是在考你从应用层到链路层的完整封装和解封装过程;“TCP和UDP有什么区别”,本质是传输层两种传输方式的对比;“HTTP在哪一层”,提醒你它本身是应用层协议,但依赖TCP的可靠传输。把这张图刻在脑子里,你就有了一个做题的坐标系。
1.2 面试官到底想通过基础题考察你什么
很多人觉得面试官问网络基础是在“走流程”,其实不是。以我面试别人的经验来说,问这些基础知识主要有三个目的。
第一个目的是考察你的基本功是否扎实。网络是几乎所有后端、运维、客户端岗位的底层基础设施,如果这块不牢,后面聊到分布式、微服务、容器网络、性能调优都会出问题。第二个目的是观察你的思维是否有体系。同样是问“TCP三次握手”,有的人上来就背“SYN、SYN+ACK、ACK”,有的人会先说“这个机制解决的核心问题是确认双方收发能力正常,同时同步初始序列号”,后者一下就能拉开差距。第三个目的是看你会不会把知识串联到实际场景。比如问HTTP状态码,如果只答“200是成功,404是找不到”,那只能算及格;如果能补充“504 Bad Gateway的出现大概率是网关或者上游服务超时,排查时要先看上游服务状态”,这才会被当成一个真正干过活的人。
所以后面每讲一个知识点,我都会在最后补充“面试官视角”,帮你看穿这个考点背后的潜台词。
2. 传输层是兵家必争之地:TCP与UDP的高频考点
2.1 三次握手和四次挥手不只是背流程
TCP的建立和断开连接是计算机网络笔试面试的基础题中的基础题,几乎百分之百会出现。但想拿高分,光知道流程和状态码是不够的。
三次握手的过程大家应该都熟悉:客户端发送SYN包,服务端收到后回复SYN+ACK,客户端再回一个ACK,连接建立。这里面有两个容易被追问的点,第一是为什么不是两次握手,第二是为什么不用四次。两次握手的缺陷在于,如果客户端第一次SYN包在网络中滞留超时,客户端会重发SYN,此时服务端先收到重发的SYN并建立连接,等滞留在网络中的旧SYN再到达服务端时,服务端会再次建立一条无效连接,白白浪费资源。而三次握手由于最后一次ACK是客户端主动发送的,如果服务端收到的SYN是旧的,客户端根本不会回复ACK,服务端就会放弃这个连接。这就是“确认双方收发能力”的含义——第一次握手让服务端确认客户端能发,第二次握手让客户端确认服务端能收能发,第三次握手让服务端确认客户端能收。
四次挥手的重点则在于状态变化和TIME_WAIT。主动关闭方发送FIN进入FIN_WAIT_1,收到ACK进入FIN_WAIT_2,收到对方的FIN后发送ACK并进入TIME_WAIT,等待2MSL后彻底关闭。TIME_WAIT是最容易被深挖的点,它的意义有两个:一是确保最后一个ACK能被对方收到,万一丢了对端会重发FIN,主动方还能再回一次ACK,否则连接会错误关闭;二是让旧连接的数据包在网络中自然消失,防止影响新连接。面试中常见的问题是“服务器上出现大量TIME_WAIT怎么办”,这时候你要能给出实际答案:开启TCP时间戳、调整系统参数复用TIME_WAIT连接、或者从应用层减少连接频繁创建,比如使用连接池。
2.2 滑动窗口与拥塞控制:从背概念到会算题
TCP的可靠传输不止靠确认应答,还依赖滑动窗口机制和拥塞控制算法,这部分笔试中出现频次极高。
滑动窗口的作用是允许发送方在未收到确认的情况下连续发送多个数据包,提升链路利用率。窗口大小由接收方的接收能力决定,也就是接收窗口rwnd。这里有个实际计算题样例:假设发送窗口为1000字节,最大报文段长度为100字节,发送方可以连发10个报文段而无需等待确认。如果每收到一个确认才发下一个,RTT是200ms,那么吞吐量只有100/0.2=500字节每秒,效率极低;而滑动窗口机制下理论上可以做到1000/0.2=5000字节每秒。不少笔试会给你类似参数让你算传输效率,本质就是在考这个。
拥塞控制则是从全局网络状况出发做流量调节,涉及四个经典阶段:慢启动、拥塞避免、快重传、快恢复。慢启动阶段cwnd从1开始指数增长,到达慢启动阈值后进入线性增长的拥塞避免阶段。笔试容易出的是图形题和计算题,比如问你“某时刻cwnd从32降到1,阈值变为16,接下来慢启动到16后进入拥塞避免”,要能根据拥塞事件类型判断阈值变化规则。面试问答则更常考快重传——收到三个重复ACK就立即重传丢失报文段,而不是等待超时,这和快速恢复配合能明显减少重传延迟。
建议复习时重点区分两个“窗口”:滑动窗口是接收方决定、用于流量控制的;拥塞窗口是发送方依据网络状态动态调整的。实际发送窗口取min(rwnd, cwnd),这是答题时最容易忽略的细节,也是面试官用来区分你会不会的关键点。
2.3 TCP与UDP:场景题才是真正的分水岭
TCP和UDP的区别人人都会背,但面试里的分水岭在于场景题。问“视频直播用TCP还是UDP”,你要是回答“直播要求实时性,所以用UDP”,只能算答对一半;如果能补充“但如果网络环境复杂、丢包严重,纯UDP会导致花屏,所以实际方案是UDP加应用层丢包重传和FEC前向纠错”,这就说明你真正理解协议选型的权衡。
我总结了一套场景题的分析框架,套进去基本不会错:一看是否要求可靠有序,二看实时性是否压倒一切,三看数据量大小和连接数量,四看是否支持组播。场景题举例的话:HTTP用TCP,是因为文本数据完整性要求高;DNS用UDP,是因为单次请求响应极短,建立TCP连接的开销反而拖慢速度;在线游戏混合使用,位置同步、操作指令走UDP降低延迟,登录、计费、背包等可靠性要求高的走TCP;日志上报这类允许丢失但追求吞吐的场景,UDP配合应用层缓冲是更经济的选择。
面试官视角:这里考的不是你看没看过协议RFC文档,而是你有没有在实际项目中做过协议选择。即使没做过,通过你的分析思路也能看出你未来的判断力。
3. 应用层高频考点:HTTP/HTTPS与Web基础
3.1 报文格式和状态码:笔试常客,面试敲门砖
应用层里HTTP是绝对的主角。笔试对HTTP的考察很固定,报文结构、请求方法、状态码、常见Header,每一项都有可能出细节题。
先说报文结构,请求报文由请求行、请求头、空行、请求体组成,响应报文是状态行、响应头、空行、响应体。这里的“空行”是很多细节题的出题点,它用于区分头部和正文,不能省略。请求方法里,笔试喜欢考GET和POST的区别,除了常见的“参数在URL里 vs 在Body里”之外,可以补充一个容易忽略的点:GET请求是幂等的,POST不是;GET可以被缓存,POST默认不可以;GET会写在浏览器历史记录里,POST不会。这些都是可以直接写的分。
状态码需要重点记住几个区间的语义:2xx成功,3xx重定向,4xx客户端错误,5xx服务端错误。高频考点包括:301永久重定向和302临时重定向的区别,实际项目中涉及到SEO时这个区别很关键;403禁止访问和401未认证的区别,前者是权限不足,后者是没带凭证;503服务不可用和504网关超时的排查方向差异。面试中如果你能顺手举例说明“遇到过某个状态码,当时怎么排查的”,会非常加分。
3.2 HTTPS加密过程:从背证书到讲清原理
HTTPS在笔试中几乎必考,常见问法包括“HTTPS和HTTP的区别”“HTTPS的加密过程”“为什么HTTPS比HTTP安全”。想答好,你要能完整描述一次HTTPS请求的加密握手流程。
简化版本是这样的:客户端发起HTTPS请求,服务端返回证书,证书里有服务端的公钥和CA的数字签名。客户端先用内置的CA公钥验证证书签名,确认这个证书没有被篡改、确实是该服务器所有。验证通过后,客户端生成一个随机的对称密钥(会话密钥),用服务端公钥加密这个对称密钥传输给服务端。服务端用私钥解密得到对称密钥。之后双方就用这把对称密钥进行密文通信。
这里有两个笔试高频追问:第一,为什么不直接用非对称加密通信?因为非对称加密计算开销大,性能差,对称加密效率高,所以用非对称加密协商出对称密钥,再用对称加密通信,兼顾安全与性能。第二,CA的作用是什么?防止中间人攻击——如果没有CA的签名校验,攻击者可以自己伪造一份公钥替换服务端公钥,从而解密所有通信内容。追问到这一步还能说出“数字签名是对证书内容做哈希后再用CA私钥加密”的,面试官基本就满意了。
3.3 常见Web攻击:基础知识的实际应用方向
除了协议本身,HTTP相关的安全问题也常出现在笔试面试中。高频考点集中在SQL注入、XSS跨站脚本、CSRF跨站请求伪造这三类。
SQL注入的原理是将恶意SQL代码拼接进查询语句。防御思路很常规:预编译参数化查询、对输入做白名单校验、最小权限数据库账号。XSS的核心是未经验证的用户输入被当成了前端代码执行,防御手段包括输出编码、CSP白名单。CSRF则是利用用户已登录的身份发起未经本人授权的请求,常见防御有CSRF Token、SameSite Cookie、校验Origin头。
面试时这些知识点往往不会单独问原理,而是给你一个业务场景,比如“一个搜索框存在什么安全风险”“现在网站被人挂马了,从哪些方向排查”,这时候就是考验你能否把HTTP协议知识和安全问题联系起来。复习时可以拿自己写的项目做一次安全自查,这个环节非常加分。
4. 网络层与链路层:IP与路由的细节不能丢
4.1 IP地址分类与子网划分:必须做到心算
网络层的笔试重点集中在IP地址相关计算上。IPv4地址分类、子网掩码、CIDR、公网和内网地址,每一类都有高频考题。
IPv4地址分A、B、C、D、E五类,A类范围是1.0.0.0到126.255.255.255,B类是128到191开头,C类是192到223。笔试经常考的是私有地址段:10.0.0.0/8、172.16.0.0/12、192.168.0.0/16,还有回环地址127.0.0.0/8,其中常见的是127.0.0.1。子网划分题的核心是算出网络号、主机号、可用主机数以及广播地址。可用主机数等于2的“主机位”次方减2,减掉的全0(网络地址)和全1(广播地址)需要解释清楚,全0代表这个子网本身,全1代表广播。
实际做题遇到192.168.1.0/26这种,/26意味着网络位26位,主机位6位,可用地址62个,子网掩码是255.255.255.192。这种计算没有捷径,必须多练几道到心算熟练的程度,因为笔试中会反复出现,一旦在一个简单计算上卡住,后面的节奏全乱了。
4.2 ARP与DNS:从“翻车”到理解设计逻辑
ARP和DNS在面试中经常放在一起问,因为它们一个是“IP转MAC”,一个是“域名转IP”,都是典型的“查表”类协议,背后有相似的本地缓存优化逻辑。
ARP的核心流程是:主机要发送数据给同一个子网内的某IP时,先查ARP缓存,没有缓存就广播“谁的IP是x,请告诉我是谁”,目标IP对应的设备回复自己的MAC地址,随后通信基于MAC进行。笔试容易埋坑的是“ARP只工作在同一广播域内”和“ARP表项有过期时间”。面试可以追问的来了——当你在浏览器访问一个跨网段的地址时,MAC地址填的是网关地址而不是目标主机的地址,这需要基于路由表的基础明确。这就是为什么面试容易连环追问:IP决定“往哪去”,MAC决定“下一步交给谁”。
DNS同样需要你讲完整流程:浏览器先查浏览器缓存,再到操作系统缓存,然后请求本机配置的递归DNS服务器,递归服务器再迭代查询根域名服务器、顶级域名服务器、权威域名服务器,最终得到IP。面试追问的重点通常在于DNS缓存的TTL如何影响域名解析变更生效速度,以及为什么DNS通常使用UDP 53端口。实际部署中,如果换域名IP但用户半天访问不了旧地址,多半就是缓存TTL没设置好。这类日常工作场景的细节,面试时说出来特别加分。
4.3 路由协议的理解:基本概念比细节更重要
路由协议在社招面试中不必全部精通,但校招笔试和初面中出现的概率很高。重点掌握两类:内部网关协议里的RIP和OSPF,以及外部网关协议BGP。
RIP基于跳数,最大跳数15,属于距离矢量协议,实现简单但收敛慢,适合小型网络。OSPF基于链路状态,通过SPF算法计算最短路径,支持区域划分,收敛快,是目前企业内网的主流。BGP用于自治系统AS之间的路由,核心是策略控制,选路依据多条属性,而不是单纯追求最短距离。
实际工作的面试题会问“如何查看Linux服务器上的路由”“默认路由的作用是什么”“静态路由和动态路由的优缺点对比”。如果你是后端岗,路由协议细节不用太深,但运维、网络岗位则需要更深掌握。这类题我最大的建议是放到“体系表”里记,把RIP、OSPF、BGP放到一张“规模从小到大”的时间线上理解,起源、演进、适用范围,自然就顺下来了。
5. 综合场景题:输入URL到页面显示的完整链路
这是面试中最经典的一道综合性大题,几乎可以串起前面所有知识点。问法通常是:“在浏览器输入一个网址到页面渲染完毕,这个过程发生了什么”。
我的回答框架是这样的,你可以直接背下来在此基础上填充自己的语言:
浏览器解析URL,提取出协议、域名、端口和路径。域名经DNS解析得到IP。然后浏览器与目标IP的80或443端口建立TCP连接,经过三次握手。如果使用HTTPS,还需要进行TLS握手协商对称密钥。连接建立后,浏览器组装HTTP请求报文,请求中包含方法、路径、Host头、Cookie等信息,发送给服务器。服务端收到请求后处理并返回HTTP响应报文,状态码200表示成功,响应体里是HTML、CSS、JS或接口数据。浏览器收到响应后按HTML解析构建DOM树,遇到CSS构建CSSOM,执行脚本时可能会发起新的HTTP请求。渲染完成后,用户可以看到页面。如果页面还要加载图片或异步请求数据,会复用已有TCP连接或新建连接,这就是HTTP/1.1持久连接、Connection: keep-alive和HTTP/2多路复用的意义所在。
能答出这条链路只是60分。加分项在于你能在链路中主动提到几个关键细节,比如DNS缓存和CDN的关系、TCP连接复用、HTTPS在TCP连接之上还多了一次TLS握手、HTTP/2相比HTTP/1.1解决了什么、浏览器渲染阻塞与defer/async的关系。这些细节会明显拉开你和其他候选人的差距。反过来说,如果连这条链路都梳理不顺,前面那些知识点大概率也没串成体系。
6. 备考实战建议:高频考题清单与避坑记录
6.1 我给自己的高频考题清单
顺着这篇文章的脉络,我把计算机网络笔试面试中最容易出现的题目整理成一份速查清单,你可以拿来自测,能在不看答案的情况下说清楚每条,基础知识这块基本就稳了:
- 简述TCP三次握手、四次挥手的过程,以及为什么需要TIME_WAIT状态
- TCP如何实现可靠传输
- 什么是滑动窗口,与拥塞窗口的区别是什么
- HTTP和HTTPS的区别是什么,HTTPS的握手过程是怎样的
- 常见HTTP状态码有哪些,它们分别表示什么含义
- GET与POST的核心区别是什么
- Cookie与Session的区别是什么
- 浏览器输入网址后发生了什么
- DNS解析过程是怎样的
- 常见Web攻击有哪些,又如何防御
- 请计算某个IP是否在同一子网
- OSI和TCP/IP模型对比,各层的主要协议和对应设备是什么
如果这里有哪个问题你没法在三分钟内组织出流畅的答案,建议回头去看对应的小节。
6.2 答错率最高的几个“坑”
从我这几年看到的面试反馈和笔试答题来看,有几个错误出现的频率特别高,提前帮你标出来。
第一个坑是“第三次握手能不能携带数据”。很多人说不能,实际上可以,从第三次握手开始客户端已经确认双方收发正常,可以带上应用层数据,这是提升连接建立效率的手段,也是面试官检验你理解深度的常规问题。
第二个坑是“TCP的可靠传输是只靠确认应答机制吗”。正确答案是确认、重传、序列号、校验校验和、流控、拥塞控制共同完成的,只答其中任何一个都不完整。
第三个坑是“IP地址不可达和TCP握手失败分不清”。前者是ICMP报错,后者是TCP层面的超时,排查问题时的定位方向完全不同。
第四个坑是“把HTTPS的安全级别说得过于绝对”。HTTPS不意味着绝对安全,它只保护传输过程不被窃听和篡改,但证书泄露、恶意域名、应用层注入仍然可能造成安全问题,如果面试时候能补充到这一层,会显得非常清醒。
6.3 时间规划与学习方法:三周可以到什么程度
记劝大家不要试图抱着几百页的教材从头啃到尾,效率低,而且抓不住重点。我比较推荐的方法是按专题循环,每个专题控制在三天以内。
第一周专攻传输层和应用层,把TCP三次握手/四次挥手、拥塞控制、HTTP/HTTPS、Cookie与Session这些考得最密的内容过一遍。第二周主攻网络层和链路层,把IP计算、ARP、DNS、路由协议、子网划分练到心算熟练。第三周进入综合阶段,每天做一道综合场景题,比如输入URL全流程、TCP连接管理、HTTPS性能优化、排查网络故障,同时做一遍完整的知识点自测清单。
复习过程中一定要用手画图的方式来梳理协议交互流程,不要只看文字。画三次握手你就画两个竖轴加上箭头;画DNS解析就把缓存层、递归、迭代分层画出来。我自己的体会是,能画得出来的知识才是真掌握,画不出来的基本都是靠短期记忆硬背,面试深度稍微一追问就露馅。另外,复习笔记一定要用“问题式”写法,不要抄书式罗列,到了面试冲刺阶段直接抛给自己问题,比反复阅读笔记高效得多。
我个人在实际面试和面试别人的经验里最深的感受是:计算机网络基础知识的考察永远不是为了为难你,而是在检验你有没有一套自洽的、能用于解释实际网络现象的世界观。如果你能把每次面试官问出的“为什么”都从协议设计者的角度去理解,比如三次握手不是规定而是必然,TIME_WAIT不是缺陷而是妥协,你就会发现网络基础知识比想象中好掌握得多。面试前几天如果时间紧张,优先过一遍第6.1的清单和第6.2的几个坑,至少能保证你不掉进最容易被扣分的陷阱里;时间充裕的话,把每个考点都用自己的话对着镜子讲一遍,效果远好于闷头看资料。祝看到这里的你笔试面试都顺利。