Skip to content
📌知识点小结
  • 输入网址按回车后:DNS 解析域名→与服务器建立连接(HTTPS 先加密握手)→发送 HTTP 请求。
  • 服务器处理请求、返回 HTTP 响应(HTML 等),浏览器再解析并继续请求其中的图片/CSS/JS。
  • 一次网页加载通常包含几十上百次请求,不只是一个 HTML。
  • 状态码表示结果(200 成功、301/302 跳转、404 不存在、403 无权限、500 服务器错误)。
  • 理解这条完整链路,才能定位“卡在哪一步”、看懂抓包和日志。
✅自测一下

0.19 一次网页请求的完整旅程 ​

第〇篇【零基础预科】免费。这一篇把前几篇串起来,看清"按下回车到页面出现"之间到底发生了什么。

一、完整链路总览 ​

你可能会问:这么一大圈跑下来,到底要花多久?通常是几百毫秒到一两秒——DNS 查一次有缓存、TCP 握手几个往返、TLS 握手又几个、再真正传 HTML,然后 CSS、JS、图片这些子资源往往还要再发几十个请求。你感觉"点一下就出来了",其实是这一串环环相扣的小动作刚好跑完了。哪一环慢了,页面就卡在哪一步:DNS 慢就是白屏半天,TCP 连得上但 HTML 传得慢,就一直转圈。

二、逐步说明 ​

  1. DNS 解析:把 gysec.top 变成 IP(0.17);
  2. 建立连接:浏览器和服务器在 443 端口建立 TCP 连接(0.16);
  3. TLS 握手:HTTPS 下双方验证证书、协商加密密钥,之后通信加密;

这里多说一句 TLS 握手:它不只是"加密",还包括浏览器要检查服务器的证书是不是真的、有没有过期、是不是受信任机构签的。证书一旦对不上,浏览器就会弹出"您的连接不是私密连接"那种红色警告——这就是 0.17 说的"假站拿不到真证书"在起作用。很多新手一看警告就手痒点"继续前往",而这一步恰恰是安全上的重要关口。 4. 发送请求:浏览器发出 HTTP 请求,包含请求方法、路径、请求头(Cookie、UA 等);

请求头里那几样先有个印象:Cookie 是服务器之前塞给浏览器的小纸条,之后每次请求都会自动带上,服务器靠它认人——你登录后过一会儿再刷新还保持着登录态,靠的就是它;User-Agent(UA)是浏览器自报家门,告诉服务器"我是 Chrome、还是微信内置浏览器"。很多防护和绕过,恰恰就在这些不起眼的请求头上做文章。 5. 服务器处理并响应:Web 服务器/后端处理,返回状态码和内容;

服务器内部这一步,预科阶段你不用钻太深——它可能查数据库、调内部接口,再把结果拼成 HTML。你只要知道:从"浏览器发出请求"到"服务器回内容"中间,还隔着这么一层处理,而很多漏洞(SQL 注入、命令注入)就发生在这层处理上,这也是为什么前面几篇反复让你留意参数是怎么被用的。 6. 加载子资源:解析 HTML 时发现 CSS、JS、图片、字体、接口,再分别请求;

这里有个细节:浏览器不是等 HTML 整个下完才动手,而是边收边解析——看到 <img>、<link>、<script> 就立刻并行发新请求去取,所以页面常常是"文字先出来、图片慢慢补"。你一定见过那种先出字、再一点点加载图片的效果,就是这么来的。 7. 渲染:浏览器把 DOM、样式、脚本组合,最终画出页面。

这七步其实不是只走一遍——页面里每一个子资源,都要从"建立连接、发请求、收响应"重走一遍小循环。所以一个复杂页面背后,往往是几十次这样的往返。理解了这条流水线,以后看到"网页慢",你脑子里就能自动拆成"到底是哪一环慢了",而不是干瞪眼。

三、HTTP 状态码速查 ​

码含义常见场景
200OK 成功正常返回页面
301/302重定向HTTP 跳 HTTPS、旧地址跳新地址
400请求错误参数格式不对
401未认证需要登录
403禁止已登录但无权 / 被拦截
404未找到地址错误/页面不存在
500服务器错误后端异常
502/503/504网关/服务问题上游挂了/超时

你之前遇到的"手动输 /login 正常、点击却 404",就是前端路由和服务端路由的差异;而"登录后回原页"则是 302 重定向 + 隐藏跳转参数的配合。

这些状态码不用死记,混个眼熟就行。真正实用的判断是:看到 4xx 多半是你(客户端)的问题——地址错了、没登录、权限不够;看到 5xx 基本是服务器那边炸了,你在客户端再怎么刷新也没用。日常排查"这个页面为什么打不开",第一步就是按 F12 看它到底是 200、404、500,还是请求压根没发出去——状态码直接告诉你锅在谁那边。

四、请求和响应长什么样 ​

请求(简化):

http
GET /wiki/deser-lazymap HTTP/1.1
Host: gysec.top
Cookie: gysec_auth=xxxx
User-Agent: Mozilla/5.0 ...

响应(简化):

http
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8

<!DOCTYPE html> ...

请求方法常见:GET(取数据/页面)、POST(提交数据,如登录表单)、PUT/DELETE 等。

最该分清的是 GET 和 POST:GET 是"我要看",参数都拼在 URL 里、会被缓存和记录;POST 是"我要交",数据放在请求正文里,地址栏看不到——你输入密码登录时,浏览器发的就是 POST。为什么登录不用 GET?因为密码绝不能出现在 URL 里、被历史记录和服务器日志留存。这个区别看着小,却是理解后面很多漏洞和越权问题的基础。

五、怎么观察这条链路 ​

  • 浏览器按 F12 打开开发者工具 → Network(网络) 面板,刷新页面,能看到每一个请求、状态码、请求头、响应;
  • 命令行可用 curl -I https://gysec.top 只看响应头和状态码;
  • 抓包工具(Wireshark/Burp)能看到更底层或可修改的请求。

第一次打开 F12 的 Network 面板你会愣住:一个页面底下居然挂着几十上百个请求——主文档、样式、脚本、图片、字体,还有各种埋点统计的接口,密密麻麻。红色的就是失败的请求,旁边 Status、Size、Time 三列最有用:Status 看对错、Size 看传了多大、Time 看花了多久。网页卡顿时,往往就是某一个子资源的 Time 特别长——点它一下,就能定位到是哪个图片或脚本拖慢了整页。

六、本篇小结 ​

  • 旅程:DNS→TCP→TLS→HTTP 请求→响应→加载子资源→渲染。
  • 状态码:200 成功、301/302 跳转、401 未登录、403 禁止、404 没有、500 出错。
  • 一个页面背后是很多次请求;用 F12 Network 观察。
  • 能把问题定位到"哪一步",是排查和安全测试的关键能力。

下一篇 0.20 讲请求两端的角色:客户端与服务器。