教程
🛡️

网络安全

Web 安全、渗透测试、密码学与安全合规的系统化教程。

渗透测试先懂协议:OSI、TCP/IP、HTTP 与代理

不懂协议就别谈渗透。这篇把 OSI 七层、TCP/IP 四层、HTTP/HTTPS、URL 结构和 HTTP(S) 代理讲清,建立攻击视角的网络基本功。

· 更新于 2026-07-18 阅读量 --

很多人一上来就学”怎么打站点”,结果连请求是怎么到服务器的都说不清,遇到非常规情况就卡死。渗透的本质是”在协议层面找错位”——你得像快递员一样清楚包裹经过哪几道关卡。这一篇先把最底层的协议地基打牢。

本文及本系列所有内容,仅用于你拥有合法授权的环境(如自有靶场、授权测试)中的学习与防御研究。请勿对未授权目标进行任何测试。

为什么渗透要懂协议

你用的每一个工具(Burp、Nmap、sqlmap),底层都在和协议打交道。比如:

  • 为什么改 Host 头能打虚拟主机?因为 HTTP 协议规定它用来区分同 IP 的多个站点;
  • 为什么能”半连接扫描”?因为 TCP 三次握手是可以只走一半的;
  • 为什么 HTTPS 比 HTTP 难拦?因为数据被 TLS 加密了。

不懂协议,你只会按教程点按钮;懂了协议,你才知道每个按钮背后在干什么,才能应对没教程的现场。 所以这一篇是后面所有内容的地基。

OSI 七层模型:理论的”参考地图”

OSI(Open Systems Interconnection)把网络通信分成七层,从上到下:

名称干什么典型设备/协议
7应用层给用户用的程序HTTP、FTP、DNS
6表示层数据格式/加密TLS、编码
5会话层建立/维护会话
4传输层端到端传输TCP、UDP
3网络层寻址和路由IP、路由器
2数据链路层相邻节点传输交换机、MAC
1物理层比特流传输网线、光纤

记不住没关系,记住一句口诀:“应表会传网数物”(应用、表示、会话、传输、网络、数据链路、物理)。OSI 更多是”理论参考”,实际互联网用的是下面要讲的 TCP/IP 四层。

TCP/IP 四层:实战的”真实地图”

实际互联网按 TCP/IP 模型运作,比 OSI 更精简:

  1. 应用层:HTTP、DNS、FTP 等(对应 OSI 上三层);
  2. 传输层:TCP / UDP,负责”这台机器的哪个程序”和”数据到没到”;
  3. 网络层(网际层):IP,负责”送到哪台机器”;
  4. 网络接口层:网卡和网线那一套(对应 OSI 下两层)。

理解”IP 找机器、端口找程序”这个分工,是渗透的基本功:一个目标 8.8.8.8:80 里,8.8.8.8 是 IP(网络层),80 是端口(传输层),合起来才精确定位到一个服务。

TCP 三次握手与端口扫描

TCP 建立连接要”三次握手”:

客户端 → 服务器:SYN(我想连)
服务器 → 客户端:SYN+ACK(可以,我也想连)
客户端 → 服务器:ACK(好的,开始吧)

渗透里”端口扫描”就是去试探目标哪些端口开着。常见 Nmap 扫描类型就建立在这套机制上:

  • 全连接扫描(-sT):走完三次握手,最稳但最容易被记录;
  • SYN 半开扫描(-sS):发 SYN,收到 SYN+ACK 就走人(不发最后的 ACK),不易留日志,最常用;
  • NULL/Xmas/FIN 扫描:发非常规包,用来绕过某些防火墙(依据 RFC 对异常包的回应判断)。

这些手法仅用于你授权的资产。对别人网络扫描可能触发告警甚至违法。

HTTP:Web 的”普通话”

HTTP(超文本传输协议)是浏览器和服务器说话的方式。一次请求/响应长这样:

请求:
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html

响应:
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 123

<html>...</html>

请求行GET /index.html HTTP/1.1):方法 + 路径 + 协议版本。 请求头:一堆 Key: Value,携带元信息(Host、Cookie、User-Agent 等)。 空行:头和正文的分隔。 正文(可选):POST 提交的数据就放这。

理解这个结构,你才懂为什么 Burp 能”改包”——它就是在请求发出前,让你编辑这些头和正文。

常见 HTTP 方法

方法含义渗透关注点
GET获取资源参数在 URL,易被记录/缓存
POST提交数据参数在正文,相对隐蔽
PUT上传资源若开启危险,可传 Webshell
DELETE删除资源若开启危险
OPTIONS查询支持的方法看服务器暴露了哪些方法
HEAD只看响应头探测服务信息

有些服务器错误地开启了 PUT/DELETE,就成了突破口——这叫”HTTP 方法滥用”。

HTTPS 与 TLS:加密的那层

HTTPS = HTTP + TLS。TLS 在 HTTP 之下加了一层加密,保证:

  • 机密性:中间人看不懂内容;
  • 完整性:内容没被篡改;
  • 身份认证:证书证明”你连的真是 example.com”。

渗透含义:HTTPS 流量默认看不到明文,要用代理(见下)做”中间人解密”才能看,而这就需要客户端信任你的证书。

URL 结构:每个字段都是输入点

https://user:pass@example.com:443/path/page?a=1&b=2#frag
  └协议┘  └认证┘ └─主机─┘ └端口┘ └路径┘ └─查询参数─┘ └锚点┘

渗透测试里,路径、参数(query)、甚至主机头都可能是注入点。不要只盯着 ?id=1 这种明显参数,Cookie、Header、路径段都可能是输入。

HTTP(S) 代理:你的”显微镜”

做 Web 渗透,Burp Suite 或 Fiddler 这类代理是标配。原理:

浏览器 → 代理(Burp) → 服务器
浏览器 ← 代理(Burp) ← 服务器

你把浏览器流量先发给 Burp,Burp 让你查看、拦截、修改每一个请求和响应。配置要点:

  1. 浏览器或系统设置代理地址为 127.0.0.1:8080(Burp 默认端口);
  2. 导出 Burp 的 CA 证书,装进浏览器”受信任根证书”,才能解密 HTTPS;
  3. 开启 “Intercept” 就能逐个改包。

仅在自己机器、自己授权的测试里配置代理和装证书。给别人的设备装你的证书 = 能获得他所有 HTTPS 明文,这是严重越权行为。

更多实战案例:把 HTTP 流程拆开看

我们日常访问网页,背后是一次次 HTTP 请求响应。用浏览器开发者工具切到 Network 面板,刷新页面,你会看到一长串请求:先是 HTML 文档,再是里面的 css、js、图片,每个都有方法(GET/POST)、状态码(200/301/404)、请求头(Cookie、User-Agent、Referer)和响应头(Set-Cookie、Content-Type)。做安全测试时,这一步叫”流量观察”:你要搞清楚一个功能到底发了什么、带没带 token、返回里有没有敏感信息。比如登录接口返回里若直接带了密码或 token,就是信息泄露。

更多实战案例:HTTPS 与证书

HTTPS 并不是”换了个协议”那么简单,它是 HTTP 套了一层 TLS 加密。抓包时若看到 Mixed Content(页面是 https 却加载了 http 资源),浏览器会拦截,这也可能是漏洞点。自签名证书、过期证书、证书域名不匹配,在测试环境常见,但要分清”这是测试方便”还是”生产也这样”——生产用自签名证书意味着传输可被中间人解密,是严重问题。

常见坑

  1. 只测功能不看流量:很多逻辑漏洞(如越权、信息泄露)藏在响应头或隐藏字段里,不看流量发现不了。
  2. 忽略状态码:301/302 跳转可能暴露后台路径,403 可能只是前端拦截后端没拦。
  3. 把 POST 当安全:POST 只是不显示在 URL,参数一样能被改,别以为 POST 就防篡改。
  4. 忽视 WebSocket:现代应用用 ws/wss 通信,普通代理抓不到,要用支持 ws 的工具。

进阶:抓包与改包

学会用代理工具(如 Burp Suite、Fiddler、mitmproxy)拦截请求,改掉参数再发出去,是几乎所有 Web 漏洞利用的基础。比如把 id=1 改成 id=2 看是否越权读到别人数据;把 price=100 改成 price=1 看能否低价下单。协议理解越深,你能构造的测试越精准。

小测验

  • 问题1:为什么只点功能按钮不够,还要看流量?答案:越权、信息泄露等常藏在响应头或隐藏字段。
  • 问题2:POST 请求比 GET 安全吗?答案:不,参数一样可改,只是不在 URL 显示。
  • 问题3:Mixed Content 是什么?答案:https 页加载了 http 资源,会被浏览器拦截。

更多实战案例:从流量发现逻辑漏洞

很多逻辑漏洞藏在响应里:登录失败返回”用户名不存在”暴露账号是否存在;某个接口响应里带了大量不该返回的用户信息;删除操作只在前端隐藏按钮但接口仍可调。看流量时要带着”这里有没有多返回/少校验”的怀疑。改一个参数重放,对比两次响应差异,差异处往往就是漏洞。

常见坑(终补)

  1. 只测功能不看流量:越权、信息泄露常藏在响应头或隐藏字段。
  2. 忽略状态码:301/302 可能暴露后台,403 可能只是前端拦。
  3. 把 POST 当安全:POST 参数一样可改,别以为防篡改。
  4. 忽视 WebSocket:现代应用用 ws/wss,普通代理抓不到。

进阶(终补):抓包与改包

学会用代理工具拦截请求,改掉参数再发出去,是几乎所有 Web 漏洞利用的基础。比如把 id=1 改成 id=2 看是否越权;把 price=100 改成 price=1 看能否低价下单。协议理解越深,能构造的测试越精准。配合重放、对比响应,效率倍增。

小测验(终补)

  • 问题1:为什么只点功能不够还要看流量?答案:越权、信息泄露常藏在响应头或隐藏字段。
  • 问题2:POST 比 GET 安全吗?答案:不,参数一样可改,只是不在 URL 显示。
  • 问题3:Mixed Content 是什么?答案:https 页加载 http 资源,会被浏览器拦截。

实战要点:日常抓包的正确姿势

养成”每个功能都看一眼流量”的习惯。用代理拦截,观察:请求方法、路径、参数、Cookie、自定义头;响应状态码、Set-Cookie、返回的数据里有没有敏感字段;有没有隐藏表单、注释掉的接口。改一个参数(id、user_id、price、role)重放,对比响应差异。差异处就是突破口。熟练后,你看一个功能就能在脑子里过一遍”它能怎么被滥用”。

易错提醒

别只点功能按钮就以为测完了;别把 POST 当安全(参数照样可改);别忽略 301/302 跳转暴露的后台路径;别忽视 WebSocket(用支持 ws 的代理)。协议理解越深,你能构造的测试越精准,发现也越深。

自测

  • 为什么只点功能不够还要看流量?答:越权、信息泄露常藏在响应头或隐藏字段。
  • POST 比 GET 安全吗?答:不,参数一样可改,只是不在 URL 显示。
  • Mixed Content 是什么?答:https 页加载 http 资源,会被浏览器拦截。

延伸思考:协议理解决定测试深度

同样一个登录功能,懂协议的人会去试:改 POST 为 GET 看是否还能登录(可能绕过重校验)、改 Content-Type 看后端是否换解析逻辑、加 X-Original-URL 看是否被代理信任。协议细节里藏着大量边界。所以学安全不能只学”漏洞名”,要把 HTTP、Cookie、缓存、编码这些底层机制吃透,测试才有深度。

一句话自测

  • 为什么 POST 不等于安全?答:参数照样可改,POST 只是不在 URL 显示。
  • 看流量主要看什么?答:方法、参数、Cookie、状态码、响应里有无敏感字段。

这一篇你该记住的

渗透测试是”在协议层面找错位”,不懂协议就只能照猫画虎。OSI 七层是理论参考,实战用 TCP/IP 四层;IP 找机器、端口找程序;TCP 三次握手支撑了端口扫描的各种手法;HTTP 请求=请求行+头+空行+正文,理解结构才能改包;HTTPS 靠 TLS 加密;URL 每个字段都可能是输入点;Burp 这类代理是看/改流量的显微镜。

协议地基打好了,下一步就是”先摸清目标”——下一篇讲 信息收集,渗透 80% 的时间其实都在这里:子域名、端口、目录、指纹,一个都不放过。