网络基础学习篇
网络是网络安全这门手艺的第一块地基。
抓包看不懂、扫描不知道扫的是什么、甚至登录一个网站都不清楚背后发生了什么,根子上往往都是网络基础没打牢。
本篇文章尝试用最通俗的方式,把自己学习网络基础时梳理过的知识重新整理一遍。
不堆术语,不抄课本,先把每一层到底在干什么讲清楚。
如果代码或文字显示不清,可以点击右下角齿轮切换显示模式。
学习过程中如果遇到问题,可以私聊我,也可以在文章底部留言交流。
为什么学网安要先学网络基础
很多人一开始学网安,上来就想打靶场、拿 Shell。
结果碰到第一道题就懵了:
为什么抓包抓到的是一堆看不懂的十六进制?
为什么扫出来的端口有的开放、有的关闭?
为什么注入要改 URL 里的参数,而不是直接改页面?
这些问题的答案,几乎都藏在网络基础里。
可以这么理解:
网络基础是地图,漏洞利用是武器。
没有地图,拿着武器也只能到处乱撞。
所以这一篇,我尽量把学习路上真正用得上的网络知识讲明白。
网络分层:把网络想象成寄快递
网络通信听起来很复杂,但本质上和我们寄快递是一模一样的流程。
你寄一个包裹:
- 先把东西打包好
- 填上寄件人和收件人的信息
- 快递公司根据地址规划路线
- 包裹经过一个个驿站,最终送到收件人手里
- 收件人拆开包裹,拿到里面的东西
网络里传输的数据,就是包裹里的东西。
为了防止大家各说各话,网络通信被划分成了不同的层,每一层只负责自己的事情。
OSI 七层与 TCP/IP 四层
教科书上通常先讲 OSI 七层模型:
| OSI 七层 | 一句话理解 |
|---|---|
| 应用层 | 你直接使用的软件(浏览器、微信) |
| 表示层 | 数据的格式转换、加密、压缩 |
| 会话层 | 建立、管理、断开通信会话 |
| 传输层 | 端到端传输,决定用 TCP 还是 UDP |
| 网络层 | IP 寻址与路由,决定数据去哪台机器 |
| 数据链路层 | MAC 地址与局域网内传输 |
| 物理层 | 网线、光纤、电信号等物理介质 |
但在实际生活中(尤其是网安学习中),我们更常接触的是简化后的 TCP/IP 四层模型:
| TCP/IP 四层 | 对应 OSI 层 | 常见协议 / 设备 |
|---|---|---|
| 应用层 | 应用层、表示层、会话层 | HTTP、HTTPS、DNS、FTP、SSH |
| 传输层 | 传输层 | TCP、UDP |
| 网络层 | 网络层 | IP、ICMP,路由器 |
| 网络接口层 | 数据链路层、物理层 | 以太网、MAC 地址,交换机 |
对于网安新手来说,先记住 TCP/IP 四层就够了。
平时抓包、分析流量、看协议,遇到最多的是前三层:应用层、传输层、网络层。
数据封装:包裹是怎么一层层包起来的
了解了分层,接下来就是网络通信中最核心的一个过程:封装。
发送方把数据一层层“包”起来:
1 | 应用层: |
接收方收到后,再一层层拆开(解封装),直到取出最里面的原始数据。
整个过程就像套娃:
你写了一封信(数据),塞进信封(TCP),贴上地址(IP),再交给快递员(MAC)送出。
对方收到后,先看快递单(MAC),再看地址(IP),再拆信封(TCP),最后读到信(数据)。
安全视角
以后用 Wireshark 抓包时,你会发现一个数据包在软件里也是按层展开的:
- Frame:物理层帧信息
- Ethernet II:MAC 地址
- Internet Protocol:IP 地址
- TCP / UDP:端口号
- HTTP / TLS 等:应用层数据
能看懂这个展开结构,流量分析题就成功了一半。
IP 地址与端口
IP 地址:机器的门牌号
每台接入网络的设备都有一个 IP 地址,相当于机器的门牌号。
我们最常用的是 IPv4,长这样:
1 | 192.168.1.100 |
四个数字段,每段范围是 0 ~ 255。
IP 地址分为公网 IP 和私网 IP:
| 类型 | 范围 | 说明 |
|---|---|---|
| 公网 IP | 全球唯一 | 可以在互联网上直接访问 |
| 私网 IP | 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 | 只在局域网内部使用 |
还有两个特殊的地址要记住:
127.0.0.1:回环地址,代表本机自己,也就是常说的localhost0.0.0.0:代表本机的所有网卡,常用于服务器监听所有接口
在 Windows 上查看自己的 IP:
1 | ipconfig |
在 Linux / Kali 上查看:
1 | ifconfig |
安全视角: 内网渗透中,最常见的网段就是
192.168.x.x。
拿到一个内网 IP,就等于拿到了目标的一扇门的位置。
端口:机器上的门
光有 IP 还不够。
一台服务器上可能同时跑着网站、数据库、SSH,如果只有一个 IP,数据该交给哪个程序?
这时候就轮到端口出场了。
IP 负责找到机器,端口负责找到机器上的程序。
端口范围是 0 ~ 65535,其中 0 ~ 1023 是知名端口,对应常见服务:
| 端口 | 服务 | 网安角度 |
|---|---|---|
| 21 | FTP 文件传输 | 弱口令、匿名登录 |
| 22 | SSH 远程登录 | 爆破常客 |
| 23 | Telnet 远程登录 | 明文传输,极不安全 |
| 80 | HTTP | Web 服务 |
| 443 | HTTPS | Web 服务 |
| 3306 | MySQL / MariaDB | 数据库弱口令 |
| 6379 | Redis | 未授权访问 |
| 27017 | MongoDB | 未授权访问 |
在 Windows 上查看本机开放了哪些端口:
1 | netstat -ano |
会看到类似这样的输出:
1 | TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 1234 |
最后面一列是进程 PID,可以在任务管理器里反查是哪个程序在监听。
安全视角: 渗透测试中的端口扫描,本质上就是挨个敲门,看哪些门开着。
工具比如nmap,扫出来的开放端口,就是后续攻击面的入口。
DNS:网址背后的“通讯录”
人是记不住一堆 IP 的。
让你记住 142.250.72.14,远不如让你记住 www.google.com 舒服。
所以就有了 DNS(域名系统),它的作用一句话概括:
把人类好记的域名,翻译成机器能识别的 IP。
一次访问经历了什么
在浏览器输入 www.example.com 回车,背后大致是这样的流程:
1 | 浏览器 |
在 Windows 上手动查询域名解析:
1 | nslookup www.example.com |
输出类似:
1 | 服务器: dns.google |
hosts 文件的位置:
- Windows:
C:\Windows\System32\drivers\etc\hosts - Linux:
/etc/hosts
安全视角
DNS 相关的安全问题非常多:
- DNS 劫持:把域名解析到攻击者的服务器,用户访问到的是钓鱼站
- hosts 文件被篡改:内网渗透中常见手法之一
- 钓鱼域名:
examp1e.com冒充example.com,不仔细看根本分辨不出来
所以拿到一台机器后,先看看它的 hosts 文件和 DNS 配置,是排查痕迹的必备动作。
TCP 与 UDP:可靠快递 vs 即时消息
传输层有两个核心协议:TCP 和 UDP。
TCP:可靠快递
TCP(传输控制协议)是面向连接、可靠的协议。
它保证数据不丢、不乱序,就像正规快递:签收确认,丢了重发。
三次握手
TCP 建立连接前,双方要先进行三次握手:
1 | 客户端 服务端 |
为什么必须三次,而不是两次?
因为三次握手能让双方都确认自己和对方都能正常收发数据:
- 客户端发 SYN:确认自己能发
- 服务端回 SYN+ACK:确认自己收到了,也能发
- 客户端回 ACK:确认自己也收到了
安全视角: 如果攻击者伪造大量不完整的握手(只发 SYN 不回 ACK),服务端就会一直挂着半开连接等超时,耗尽资源,这就是著名的 SYN Flood 拒绝服务攻击。
四次挥手
断开连接时,需要四次挥手:
1 | 客户端 服务端 |
第一次挥手后,数据可能还没传完,所以服务端要先回 ACK 确认,再等自己处理完,才发 FIN。
这也是它比三次握手多一次的原因。
UDP:即时消息
UDP(用户数据报协议)是无连接、不可靠的协议。
它不握手、不确认、不重发,发出去就不管了。
就像发微信语音:你说完就完,对方听没听清,那是另一回事。
但正因为它简单,所以速度快、开销小,适合:
- 视频通话
- 在线游戏
- DNS 查询
| 对比项 | TCP | UDP |
|---|---|---|
| 是否连接 | 面向连接 | 无连接 |
| 可靠性 | 可靠 | 不可靠 |
| 速度 | 较慢 | 较快 |
| 常见应用 | HTTP、HTTPS、SSH、FTP | DNS、视频、语音、游戏 |
HTTP 与 HTTPS:浏览器和服务器说话的方式
HTTP 是什么
HTTP(超文本传输协议)是应用层协议,也是 Web 世界里最常被提到的协议。
它的工作模式是请求 - 响应:
1 | 客户端发送请求 ──────────────→ 服务器 |
一次 HTTP 请求长什么样
用 curl 直接发一个请求看响应头:
1 | curl -I https://www.baidu.com |
一个 HTTP 请求由三部分组成:
1 | GET /index.html HTTP/1.1 ← 请求行:方法 + 路径 + 版本 |
常见请求方法:
| 方法 | 作用 | 网安角度 |
|---|---|---|
| GET | 获取资源 | 参数通常在 URL 中,容易注入 |
| POST | 提交数据 | 数据在请求体中,登录、上传常见 |
| PUT | 上传/替换资源 | 配合文件上传漏洞 |
| DELETE | 删除资源 | 权限校验不当可被越权调用 |
状态码
服务器返回的响应中,第一行就是状态码,它告诉你请求的结果:
| 状态码 | 含义 | 网安角度 |
|---|---|---|
| 200 | 请求成功 | 正常 |
| 301 / 302 | 重定向 | 关注跳转到哪,防钓鱼 |
| 403 | 禁止访问 | 可能存在目录权限问题 |
| 404 | 资源不存在 | 也可能只是隐藏了真实页面 |
| 500 | 服务器内部错误 | 可能是代码/注入触发报错 |
| 502 / 503 | 网关错误/服务不可用 | 服务器配置或过载 |
渗透测试中,看到 403 不等于没戏,看到 500 反而可能意味着漏洞被触发了。
为什么必须要有 HTTPS
HTTP 最大的问题:明文传输。
如果你在 HTTP 网站上输入账号密码,中间任何一个节点(路由器、WiFi 热点、攻击者抓包)都能直接看到明文:
1 | POST /login HTTP/1.1 |
所以出现了 HTTPS = HTTP + TLS。
TLS 加密层主要解决三个问题:
- 加密:数据在路上是密文,被抓包也看不懂
- 身份验证:服务器出示证书(相当于身份证),防止假冒
- 完整性:数据有没有被篡改,可以校验出来
简化版 TLS 握手
1 | 客户端 服务器 |
浏览器地址栏的小锁,就代表这个连接经过 TLS 加密,并且证书验证通过。
安全视角: 攻击者想要窃听 HTTPS,通常用中间人攻击:给客户端伪造证书、给服务器伪造会话。
而钓鱼网站之所以危险,正是因为它们披着合法域名和 HTTPS 的外衣,伪造出“可信”的假象。
常用命令与工具
理论讲完,必须动手。
常用命令
1 | # 测试网络连通性 |
Linux / Kali 上对应的命令:
1 | traceroute www.baidu.com |
常用工具
| 工具 | 作用 | 阶段 |
|---|---|---|
| Wireshark | 抓包、流量分析 | 信息收集 / 流量分析 |
| Burp Suite | HTTP 抓包改包、代理 | Web 渗透 |
| nmap | 端口扫描、服务识别 | 信息收集 |
| curl | 命令行发送请求 | 手工测试 |
工具只是加速器,看得懂工具输出的每一行,才叫真会。
学完这些,能看懂什么
把这篇文章的内容消化掉,再回头看那些网安知识,会发现它们全都串起来了:
- 抓包时,能分清 MAC、IP、端口、应用数据各在哪一层
- 扫描时,知道开放端口意味着哪些服务、哪些攻击面
- 做 Web 题时,能看懂请求和响应,知道参数从哪里进去
- 学内网时,知道私网 IP、端口转发、DNS 这些概念从哪来
网络基础不是用来背的,而是用来理解后续一切攻击手段的地图。
结语
这一篇只是网络基础的开胃菜。
后面还有路由与交换、子网划分、抓包实战、协议分析等内容,会陆续整理出来。
看完文章,建议立刻做两件事:
- 打开终端,把上面的命令挨个敲一遍
- 用 Wireshark 抓一次自己的浏览过程,看看每个包是怎么分层的
技术从来不是看会的,而是一遍又一遍实践出来的。
种一棵树最好的时间是十年前,其次是现在。
既然已经点开了这篇文章,那就从敲下第一条命令开始吧。




