首页 / 资讯中心 / 文章详情

从输入网址到页面渲染:计算机网络基础与面试高频考点

从输入网址到页面渲染:计算机网络基础与面试高频考点 ★ FEATURED ARTICLE
简介《计算机基础.pdf》是一份面向后端、前端及计算机相关岗位求职者的八股文复习资料内容源自代码随想录知识星球精华最强八股文第五版中的计算机基础篇聚焦计算机网络高频面试考点。资料围绕TCP三次握手与四次挥手、HTTP与HTTPS、DNS域名解析、HTTP缓存以及“输入URL到页面展示”的完整链路展开既梳理核心概念也提供可延伸追问的答题要点便于读者按专题理解协议机制与流程细节。压缩包内共1个PDF文件大小约37.83MB单文件结构适合集中阅读和检索。已有778人学习适合需要系统复盘网络基础、查漏补缺或准备技术面试的读者可借助其中的高频问答思路组织答案提升对复杂过程的表述清晰度尤其适合面试前快速过一遍重点并针对薄弱环节回看对应章节。1. 先弄明白一件事这份计算机基础 PDF 到底是给谁看的很多人第一次被问到「在浏览器里输入一个网址按下回车之后发生了什么」反应都差不多嘴上勉强蹦出「三次握手、四次挥手」心里一片空白因为根本不知道这两句话该插在流程的哪一步。这份《计算机基础.pdf》就是为这种场面准备的。它把计算机网络里被问得最多的一批题目按一条真实主线串起来从你敲下回车那一刻到页面渲染出来、连接断开每一步都讲清楚发生了什么、为什么这么设计、面试时该答哪几句。它适合三类人完全零基础想入门网络知识的、正在准备技术面试的、以及上过一学期网络课却仍然说不清 TCP 和 HTTP 是什么关系的人。下面按新手真能走通的顺序一章一章带你上手。2. 为什么值得先补计算机基础面试官真正在听什么2.1 这些题为什么躲不掉它们出现在每一轮技术面里计算机网络这块不管是投后端还是投前端都绕不过去。三次握手、四次挥手、HTTPS、HTTP 缓存、TCP 与 UDP 的区别这几道属于「家常便饭」级别投十份简历可能八场面试里都会碰到其中至少一道。原因不难理解语言和框架半年一换但「一个请求怎么从浏览器跑到服务器再跑回来」这件事十年没变。面试官拿这批题当筛选依据看的不是你记性好不好而是你能不能把一件复杂的事拆成有先后顺序的几步并且在被追问时守住逻辑。对零基础的人来说这里其实有个好消息。网络基础的高频考点是封闭的不像算法题可以无限加难度。核心概念就那几十个把主线捋顺一遍收益非常直接。你花一周时间搞明白从 URL 到页面渲染这条链路比刷二十道题更容易在面试里稳住。另外这批知识有个特点它不光服务面试。以后你写接口对不齐状态码、页面加载慢查不出原因、线上偶发超时能想到「是不是 DNS 解析慢了」「是不是连接没复用」你排查问题的速度就完全不一样了。带新人时我最常说的一句话是框架教你写代码基础教你在代码不听话时知道往哪看。2.2 只背结论一定会翻车面试官爱追问的那三句假设你回答「三次握手是为了建立可靠的连接」。面试官接着问为什么是三次不是两次、四次如果第一次握手丢了会发生什么握手过程中能携带数据吗这三个追问资料里明确列出来了因为它们是最常见的延伸方向。只背结论的人往往在这个位置翻车前面答得越流利后面卡住越尴尬。反过来如果你真的把过程讲清楚了答案会自己浮出来。两次不够是因为服务器无法确认自己的发送能力和客户端的接收能力四次多余因为前三次已经把双方该确认的都确认完了。你不是在背「三次」这个数字而是在描述一个双方互相确认的过程数字只是过程的结果。这就是「理解」和「记住」的差别也是面试官真正想区分的东西。同样的坑还出现在 HTTP 上。很多人把「HTTP 请求」和「TCP 连接」混成一件事被问到「HTTP/2 的队头阻塞发生在哪一层」就答不上来。其实只要脑子里有一张分层图HTTP 在上、TCP 在下问题立刻就有了方向。2.3 这份资料的两块结构高频重点区和一问一答区分别什么时候翻这份资料整理时想解决一个很具体的矛盾如果只给解析过程读者很难抓住重点不知道该具体回答什么内容如果只给要点读者又很难理解自然也背不下来。所以它把内容分成了两个系列——高频重点区深入讲解面试题一问一答区补充高频重点之外的细碎知识点给出一个面试要回答的基本要点。新手最容易犯的错是从第一页按顺序读到最后一页读完感觉都懂一开口全乱。我的建议是三遍读法每一遍只干一件事。第一遍只读高频重点区目标是走通那条主线输入网址、解析、DNS、建立连接、发请求、收响应、渲染、断开。这一遍不要纠结细节看到不懂的名词先记在纸上。第二遍再翻一问一答区把它当补丁用哪里缺补哪里重点是那些「面试要回答的基本要点」它们决定了你答题的骨架。第三遍最有用拿一问一答区当自测题库遮住答案自己开口讲一遍讲不顺的地方才是你真正没懂的地方。读的时候还要注意它的定位。这不是一本教科书它默认你已经知道「协议」「端口」大概是什么意思但同时又给了大量过程图解来降低理解门槛。所以遇到完全陌生的名词别硬扛花十分钟去搜一个通俗解释再回来继续比死磕原句效率高得多。第一次学的时候我就吃过这个亏硬读了三遍还是云里雾里后来老老实实补了两个基础概念回头一看那段内容十分钟就看完了。3. 第一个例子用三条命令把「输入网址回车」走一遍3.1 先备好最小工具一个终端就够不用装什么重型环境一个终端加三个小工具就能把主线跑通。Windows 用 PowerShell 或者命令提示符macOS 和 Linux 直接开终端。先确认工具在不在curl --version # 显示版本号说明能用Windows 10 以后通常自带 python --version # 显示版本号说明能用第 3.3 节要用 nslookup # 直接回车会进入交互模式输入 exit 退出这三行不需要全部成功。curl 和 nslookup 大多数系统自带Python 没有就去官网装一个装的时候记得勾上「加入环境变量」那个选项否则终端里敲 python 会提示找不到命令。这一步只是备工具不是学知识跑不通就换一个能跑通的继续往下看别在这里卡住。提示后面所有命令里的域名都用 example.com这是专门留给文档示例用的域名访问它不会打扰到任何真实业务。3.2 第一步查 DNS看域名怎么变成 IP在终端里敲nslookup example.com你会看到类似这样的输出IP 那一行因为网络环境不同会不一样服务器: UnKnown Address: 192.168.1.1 非权威应答: 名称: example.com Addresses: 203.0.113.10逐行读一遍。前两行的「服务器 / Address」是你本机使用的 DNS 服务器地址通常由网络服务商自动分配中间那行「非权威应答」意思是这个结果来自缓存不是刚从权威服务器上取回来的最后两行才是你要的东西——域名对应的 IP 地址。这里用 203.0.113.10 这类文档保留地址示意你实际看到的一定是别的数字。这一条命令把资料里 DNS 解析过程的前半段直接摆到了你面前先查本地缓存本地没有就问 DNS 服务器服务器如果有缓存就直接返回。想看得更细一点可以装个 dig 工具用dig example.com trace它会从根域名服务器开始把逐级往下问的整个过程打印出来那些文字很长但你能亲眼看到「根服务器不负责解析只告诉你该去问谁」这句话是什么意思。3.3 第二步看 TCP 连接怎么建立起来DNS 拿到 IP 之后浏览器要和服务器建立连接。用 Python 几行代码就能感知到这件事import socket import time host example.com port 80 # 80 是 HTTP 默认端口443 是 HTTPS start time.time() sock socket.create_connection((host, port), timeout5) # 这一行内部就是三次握手 elapsed (time.time() - start) * 1000 print(连接建立耗时: %.0f ms % elapsed) sock.close() # 关闭连接对应四次挥手关键在create_connection这一行。它做的事情是向目标地址发起连接请求操作系统内核会替你发出第一个握手包SYN服务器回应第二个包你的机器再回第三个包。这三步在代码里看不见因为函数返回的那一刻握手已经完成了。所以你打印出来的耗时大概就是一次完整的握手加网络往返的时间。参数都不复杂host是目标主机port是端口timeout5表示最多等五秒超时就报错。把端口改成 443 会发现也能连上因为 HTTPS 和 HTTP 用的是同一套 TCP 连接区别在于连上之后还要多做一次加密协商。改成 81 这种没人监听的端口就会立刻报连接被拒绝——那是服务器明确告诉你「这个门没人开」。3.4 第三步发一次请求把响应头读一遍连接有了接下来发一个真正的 HTTP 请求# -v 打印请求和响应的完整过程-I 表示只要响应头、不下载正文 curl -v -I http://example.com输出会比较长你只需要认三种前缀。以*开头的是 curl 自己的过程信息包括 DNS 解析结果、尝试连接的地址、连接是否复用。以开头的是你发出去的请求行和请求头。以开头的是服务器返回的状态行和响应头第一行里那个三位数字就是状态码200 表示一切正常301 或 302 表示跳转304 表示「你本地的缓存还能用」。再往下的响应头里你会看到Content-Type说明返回的是什么类型的内容还有Cache-Control、ETag这类字段它们就是资料里 HTTP 缓存那一节的主角——强缓存看Cache-Control和Expires协商缓存看ETag和Last-Modified。现在你不需要记住规则只要知道这些字段真实存在、就躺在响应头里以后再回来看那一节理解会快很多。3.5 把三步连成一条时间线你现在能讲出的完整故事到这里你已经亲手跑完了主线的三个可观测点域名变成 IP对应资料里的第 2 步 DNS 解析、连接被建立第 3 步三次握手、请求发出并拿到响应第 4、5 步。剩下三步——浏览器解析 URL 并构造请求、页面渲染、断开连接——资料里讲得很细但你现在有了可以相关的具体体验回头看不会飘。试着合上资料用一分钟把这条线口述一遍我在地址栏敲下网址浏览器先解析出协议、主机、端口和路径并判断本地缓存能不能用然后要把域名换成 IP于是查浏览器缓存、查本地 hosts 文件、问本地 DNS 服务器拿到 IP 后建立 TCP 连接也就是三次握手连上之后发 HTTP 请求服务器处理完返回响应报文和状态码浏览器拿到内容开始渲染用完断开连接也就是四次挥手。卡在哪一句就回去补那一句这比从头重读一遍效率高得多。4. 三块拼图怎么排顺序DNS 找路、TCP 铺路、HTTP 送货4.1 DNS把名字翻译成门牌号DNS 存在的理由很朴素IP 地址是一串数字人记不住所以用域名代替。它要解决的问题就是「把好记的名字换成机器能用的地址」。那为什么不用一台超级服务器存下所有域名资料里列了四条理由都很实在单点故障这台机器一崩整个网络跟着瘫通信容量全球级别的查询量一台机器扛不住物理距离服务器不可能离所有人都近请求要经过拥堵链路延迟会很严重维护成本数据要频繁更新集中维护代价巨大。所以 DNS 天生就是分布式的域名按句点分层越靠右层级越高。解析过程可以压缩成四句话先看浏览器缓存和本机 hosts 文件没有就问本地 DNS 服务器本地服务器没缓存就去问根服务器根服务器不负责解析只告诉你该去问哪个顶级域.com、.net 这类顶级域服务器同样只指路最后找到存着真实映射的权威服务器拿到 IP 后一路缓存回来。这里还有一对容易被问到的概念递归查询和迭代查询。普通用户和本地 DNS 服务器之间是递归——我只发一次请求你就把最终结果给我本地 DNS 服务器和上级服务器之间是迭代——你告诉我下一个该问谁我自己去问。记住「客户端递归、服务器之间迭代」这一句基本够用。4.2 TCP三次握手到底在确认什么为什么不是两次TCP 的核心承诺是可靠发出去的东西要有序、要完整、丢了要重传。要做到这一点双方必须先确认彼此的收发能力都正常。第一次握手客户端发一个包服务器由此确认「客户端的发送能力正常」。第二次握手服务器回一个包客户端由此确认「服务器的发送和接收都正常」。但此时服务器还不知道自己的发送能力有没有被客户端收到所以需要第三次握手客户端再回一个包服务器这才确认「我的发送能力也正常」。三次刚好把双方的双向能力都确认完两次差一口气四次纯属多余。四次挥手多一次是因为 TCP 是全双工的两个方向可以独立关闭。一方说「我说完了」另一方可能还有数据没发完所以要先回一个确认等自己这边也说完了再发一个结束包合起来就是四次。握手期间能不能带数据前两次不行第三次可以因为客户端此时已经确认了服务器的收发能力。这类细节不用死记理解「双方各自要确认什么」答案自己就出来了。4.3 HTTP报文长什么样每个版本在解决什么HTTP 的报文结构非常简单就是头部加正文头部还是键值对的纯文本这也是它「简单、灵活、易于扩展」的原因。它工作在应用层下层怎么换都不影响它——HTTPS 就是在 HTTP 和 TCP 之间插了一层 SSL/TLSHTTP/3 干脆把下面的 TCP 换成了基于 UDP 的 QUIC。版本演进其实是一条「不断解决性能问题」的线索。HTTP/1.0 引入了请求头和响应头支持多种方法和状态码但每次请求都要新建连接。HTTP/1.1 加了长连接只要双方没明确说要断连接就一直留着还加了管道化理论上可以连着发多个请求不用等回应但服务器必须按顺序回前面那个慢了后面全堵住这就是队头阻塞。而且管道化默认不开浏览器基本没支持所以这条路没走通。HTTP/2 换了思路用 HPACK 算法压缩头部靠静态表、动态表和 Huffman 编码三件套把重复出现的头部字段压成短索引把文本格式改成二进制帧解析更高效引入 Stream 概念多个流复用在一条 TCP 连接上不同流可以乱序发送、按流 ID 重组于是请求级别的队头阻塞解决了还支持服务器主动推送资源。但问题没完——HTTP/2 底下还是 TCPTCP 必须保证字节有序到达前面一个字节没到后面的数据只能躺在内核缓冲区里这就是传输层的队头阻塞。所以 HTTP/3 直接把底层换成 UDP。4.4 一张表看清三个协议的分工协议一句话职责生活类比常被追问DNS把域名翻译成 IP 地址查通讯录找门牌号解析过程、递归与迭代的区别TCP建立可靠、有序的连接先打电话确认双方都在三次握手为什么不是两次、四次挥手为什么四次HTTP规定请求和响应怎么写见面之后说什么话、怎么回话版本演进、缓存机制、状态码HTTPS在 HTTP 和 TCP 之间加一层加密说话时用只有对方听得懂的暗语和 HTTP 的区别、加密发生在哪一层这张表建议你手抄一遍。以后不管被问到哪一块先在脑子里定位它在表格的哪一行再往下展开答题就不会乱。5. 避坑新手学计算机基础最容易翻车的 5 个地方5.1 概念坑名词背得滚瓜烂熟一问顺序就乱第一个坑现象是被问到「输入网址后发生了什么」你能一口气说出三次握手、四次挥手、DNS 解析但说不清它们谁先谁后。原因是按目录背的资料的章节顺序不等于真实的发生顺序。解决办法很简单画一条七步时间线把每个名词挂到对应的步骤上然后合上资料口述卡在哪一步就回去补哪一步。这个动作做三遍比读十遍管用。第二个坑现象是把 HTTP 说成传输层协议或者认为 HTTPS 是「另一种完全不同的协议」。根子在于分层没建立起来只记住了名词没记住位置。解决办法是记住三句话HTTP 在应用层HTTPS 等于 HTTP 加一层 SSL/TLSHTTP/3 把下层的 TCP 换成了基于 UDP 的 QUIC。这三句足够应付绝大多数追问剩下的细节等你真有需要再补。5.2 动手坑命令跑不出预期就以为资料写错了第三个坑现象是跑 nslookup 时看到「非权威应答」或者服务器显示 UnKnown以为环境配错了反复折腾半天。原因是这两个显示都正常前者说明结果来自缓存后者只是本地 DNS 服务器没有反向解析到自己的名字。解决方法是只盯 Addresses 那行有没有拿到 IP拿到了就是成功想要更权威的结果换一个公共 DNS 服务器地址再查一次或者用 dig 直接追到权威服务器。第四个坑现象是用抓包工具看 HTTPS 流量屏幕上全是看不懂的加密数据一点请求头响应头都没有于是怀疑网络有问题。原因是 HTTP 是明文传输内容可以被直接看到HTTPS 在 HTTP 和 TCP 之间加了加密层抓到的自然是密文。解决办法是先用 http:// 开头的地址观察一次明文请求把报文结构看熟再去看 https:// 的加密流量这样你就真正理解「明文传输方便调试但容易被窃取」这句话在说什么了。第五个坑现象是改完东西刷新页面看到的还是旧内容开始怀疑服务器没更新或者自己改错了文件。原因大概率是 HTTP 缓存强缓存还没过期浏览器根本不发请求或者协商缓存生效服务器回了个 304 告诉你「用本地的就行」。解决办法是打开浏览器的开发者工具在 Network 面板看这次请求的状态码显示 304 或者 from cache 就说明命中了缓存强制刷新一次即可。顺便说一句这个坑踩过一次之后你会对「强缓存」和「协商缓存」这两个词有完全不同的感受那可比背定义深刻多了。6. 下一步学什么从「背得下」到「讲得出」的 4 周练法主线跑通之后最忌讳的是继续从头读第二遍。更有效的做法是按周分目标每周只攻一块。周次目标具体动作第 1 周能口述完整链路合上资料把七步流程讲三遍每遍录下来回听第 2 周吃透 DNS 和 TCP手画三次握手、四次挥手的时序图标出每次谁发了什么第 3 周搞懂 HTTP 演进与缓存用 curl 分别请求 http 和 https 站点对照响应头看差异第 4 周自测与查漏拿一问一答区当题库遮住答案逐条讲讲不顺的记下来重点补第 2 周画图这一步别省。图不用画得漂亮关键是每一根箭头旁边要写清楚「谁发给谁、带了什么标志位」。画不出来的地方就是你理解断掉的地方。第 4 周的自测建议找个真人来听实在没人就对着手机录音讲。讲的时候不许看资料讲完再对照答案改。这个过程很别扭但它是从「看得懂」到「说得出」唯一有效的桥。我第一次准备面试的时候把这类八股资料当小说从头读到尾读完觉得全都会了一开口就乱成一团。后来改成每读完一节就合上资料讲三分钟讲不下去的地方才是真正没懂的地方。从那以后我每次学新东西都强制走一遍「合上资料复述」这一步再没走过弯路。这份计算机基础篇的资料你按这条路径走一遍剩下的就是重复和熟练了。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?
咨询建站