Ctf组会-网络基础,一篇总览基本的网络知识
哎,老师说要开会,给同学讲点什么,那就随便讲讲
本篇文章是总结梳理性的,提了很多东东,不知道的请自行了解。(懒得写那么详细了,这已经是让ai扩写过一遍然后我再改改的)
我blog上的这篇文章: my blog 如果图加载不出来可以去我blog看
欢迎各位大佬补充指正!
0x00 前言
这篇文章试图做的,就是把这些知识串成一张图。
它不追求教材式的严格穷尽,而是从 基础且必备 的部分出发,尽量覆盖到 CTF、流量分析、信息收集与现实网络环境 中最常见、最有用的知识。
0x01 做流量分析
第一步:看时间线
谁先开始通信?
什么时候发生 DNS?
什么时候建连?
什么时候断开?
第二步:看通信双方
哪些 IP 最活跃?
哪些端口最关键?
哪些主机像客户端,哪些像服务端?
第三步:按层看
是 Ethernet、ARP、IPv4、IPv6,还是 WLAN?
是 TCP、UDP、ICMP 还是 QUIC?
应用层是 DNS、HTTP、TLS、Modbus 还是别的?
第四步:找异常
有没有 ARP 欺骗痕迹?
有没有奇怪的 DNS 查询?
有没有异常证书 SAN?
有没有很怪的 User-Agent?
有没有大量随机子域?
有没有反常的指纹?
第五步:重组与提取
Follow TCP Stream
导出对象
看证书
看 SNI / Host
看 DNS 历史
看是否存在文件、凭据、隧道数据或隐藏载荷
0x02 网络分层
很多人一提网络分层就想到 OSI 七层模型,然后开始背:
物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
背完以后,实际看包时还是一脸茫然。
真正有用的不是死背层名,而是理解:
每一层都在解决一个不同的问题。
更贴近实际的思路,是用一个简化版的 TCP/IP 视角去理解:
- 链路层 / 二层:在当前链路上怎么把数据发出去
典型协议:Ethernet、ARP、WLAN - 网络层 / 三层:跨网络之后,最终要去哪里
典型协议:IPv4、IPv6、ICMP - 传输层 / 四层:到了主机之后,交给哪个服务,怎么保证传输
典型协议:TCP、UDP - 应用层:这个连接到底在干什么
典型协议:DNS、HTTP、TLS、SSH、SMTP、Modbus 等
传统上四层常见的是 TCP 和 UDP;而像 QUIC 这类现代协议虽然基于 UDP 承载,但承担了更多高层连接控制能力,已经不太适合用老式分层直觉去硬套。
0x03 封装与解封装
想看懂抓包,必须先理解 封装。

当应用程序要发送一段数据时,这段数据不是直接原样发上网,而是会一层层加头部:
- 应用层生成内容
- 传输层加上 TCP/UDP 头
- 网络层加上 IP 头
- 链路层加上 Ethernet 或 WLAN 头
- 然后从网卡发出去
接收方收到后,再反过来一层层拆掉,这就是 解封装。
0x04 二层
1. 以太网与 Ethernet 帧

在有线局域网里,最典型的链路层协议就是 以太网。
在以太网中,数据以“帧”的形式传输。一个常见的 Ethernet 帧里,最重要的字段包括:
- 目的 MAC
- 源 MAC
- EtherType
- 负载
EtherType 用来告诉接收方:负载里装的是什么。
常见值包括:
0x0800:IPv40x0806:ARP0x86DD:IPv6
2. MAC 地址
MAC 地址是链路层地址,通常和网卡相关。
它的主要作用不是“全球唯一标识某台机器”,而是帮助局域网中的设备完成“这一跳投递”。
交换机在转发以太网帧时,主要看的就是 MAC 地址。
因此,在同一个二层网络里,真正决定帧发给谁的是目的 MAC,而不是 IP。
这就是为什么包里最先看到的是一串 MAC 地址
因为数据要先走当前链路这一跳,链路层先于网络层发生作用。
Q:为什么不能直接用 MAC 作为 IP
这是一个很经典的问题。
直觉上看,既然网卡有 MAC,为什么互联网不直接拿 MAC 做地址?因为 MAC 只在当前链路这一跳有意义。
一个包经过路由器后,链路层头部通常会被重写,源 MAC 和目的 MAC 都可能变化。
所以 MAC 不是一个能端到端保持稳定的地址。而 IP 是逻辑地址,能够分层、聚合、划分网段,适合大规模路由。
互联网之所以能扩展,就是因为 IP 可以按前缀聚合,而不是为全球每一个终端维持一条扁平记录。
MAC 用来解决本地链路上的一跳投递,IP 用来解决跨网络的逻辑寻址。
0x05 ARP
应用程序通常知道自己要访问的目标是一个 IP 地址,但链路层发帧时需要的是 MAC。
这就需要一个“翻译器”,把 IP 翻译成当前链路上的 MAC,这个协议就是 ARP。

ARP 的过程很直观:
- 已知目标 IP
- 不知道对应的 MAC
- 在局域网里广播问:谁是这个 IP?
- 目标主机回复自己的 MAC
- 发送方将结果缓存进 ARP 表
因为发送方还不知道目标 MAC,所以请求通常要广播;而目标主机已经知道请求者是谁,因此回复通常可以单播返回。
ARP 解析的不一定是“最终目标”的 MAC,而是“下一跳”的 MAC。
ARP 欺骗与中间人
ARP 没有强认证机制,所以它天然容易被欺骗。
攻击者可以伪造 ARP 应答,告诉受害者“我是网关”,再告诉网关“我是受害者”,于是双方流量都先经过攻击者,实现中间人。
这就是经典的 ARP 欺骗 / ARP 劫持。
它的典型效果包括:
- 明文流量嗅探
- 局域网内中间人攻击
- 流量篡改
- 断网或劫持
对于流量分析来说,识别 ARP 异常也很重要,比如:
- 同一个 IP 对应多个不同 MAC
- 某主机频繁发送 ARP 响应
- 网关的 ARP 映射突然变化
0x06 WLAN、无线接入与 AP
1. WLAN 是什么
WLAN 可以理解为无线局域网,最常见的实现就是 Wi-Fi。
它本质上仍然是局域网接入的一种方式,只是链路层不再通过网线和交换机,而是通过无线信道和接入点通信。
在有线网络里,你可以把线插进交换机;
在无线网络里,终端通常通过 AP,也就是 Access Point,接入网络。
所以 AP 的角色可以简单理解为:
无线终端和局域网/上层网络之间的桥梁。
2. 无线连接历程

- 发现附近无线网络
- 选择 SSID
- 认证与关联
- 密钥协商
- 获得链路接入
- 再通过 DHCP 获取 IP、网关、DNS
即使是无线网络,真正完成“接入互联网”也仍然离不开前面讲的那些基础:链路层接入、IP 配置、路由、DNS、TCP/UDP 等。
3. 无线网络和抓包
如果你在做无线相关分析,会遇到更复杂的二层/管理帧问题。
如果有兴趣可以自行了解,这里只做提及。
- 无线网络有自己的一套链路层机制
- AP、SSID、认证、关联这些都是无线接入中的基础概念
- 无线接入之后,后续 IP、DNS、HTTP 等问题和有线网络并没有本质不同
无线环境下,抓到的未必只是普通数据帧,还可能包含 Beacon、Probe、Authentication、Association 等管理帧;因此无线抓包和有线抓包在观察对象上并不完全等价。
0x07 三层
如果说二层解决的是“当前链路上的这一跳”,那么三层,也就是 网络层,解决的就是“跨网络之后最终去哪”。
0x08 IPv4
IPv4 使用 32 位地址,通常写成点分十进制,例如:
192.168.1.10
IPv4 地址由 网络部分 + 主机部分组成,通过子网掩码进行划分。
例如:
IP: 192.168.1.10
Mask: 255.255.255.0
表示:
- 网络:
192.168.1.0/24 - 主机:
10
IPv4 的核心作用是实现:
- 逻辑寻址
- 网络分层
- 路由转发
- 路由聚合
这也是互联网能够进行大规模路由的基础。
1. 特殊地址与私有地址
IPv4 中有一些具有特殊用途的地址:
| 地址 | 作用 |
|---|---|
127.0.0.1 |
回环地址(本机) |
0.0.0.0 |
未指定地址 |
255.255.255.255 |
本地广播 |
169.254.0.0/16 |
链路本地地址(APIPA) |
还有三段 RFC1918 私有地址,只在内网使用:
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
此外,还有两点可以了解一下
网络地址 192.168.1.0
可用主机 192.168.1.1 - 192.168.1.254
广播地址 192.168.1.255
这些地址在以下场景中非常常见:
- SSRF 内网探测
- 内网横向移动
- ACL / WAF 绕过
- 抓包分析
- 云环境元数据访问
tips:在云环境中,还经常会遇到
169.254.169.254这样的元数据服务地址。
2. 子网掩码与 CIDR
IPv4 网络通过 子网掩码(Subnet Mask)划分网络与主机部分。
例如:
IP: 192.168.1.10
Mask: 255.255.255.0
掩码 255.255.255.0 的二进制为:
11111111.11111111.11111111.00000000
前 24 位表示网络部分,因此也可以写成:
192.168.1.10/24
这种表示方式称为 CIDR(Classless Inter-Domain Routing)。
常见 CIDR:
| CIDR | 掩码 |
|---|---|
/8 |
255.0.0.0 |
/16 |
255.255.0.0 |
/24 |
255.255.255.0 |
3. 实例:判断是否同一网段
例如两个地址:
192.168.1.10/24
192.168.1.25/24
计算网络地址:
192.168.1.10 & 255.255.255.0 = 192.168.1.0
192.168.1.25 & 255.255.255.0 = 192.168.1.0
因此它们 在同一网段,可以直接通信。
而如果是:
192.168.1.10/24
192.168.2.10/24
网络地址:
192.168.1.0
192.168.2.0
则 不在同一网段,需要通过网关转发。
0x09 IPv6
IPv6 通常被简单概括为“地址空间更大”,但在实际网络和安全场景中,它的变化远不止这一点。
IPv6 使用 128 位地址,常见表示形式为十六进制,例如:
2001:db8::1
tips:IPv6 地址允许省略前导 0,并使用 :: 压缩连续的 0,但同一个地址中 :: 只能出现一次。
在 DNS 中,IPv6 地址通过 AAAA 记录解析。
IPv6 中也存在一些常见的特殊地址和地址范围:
::1:回环地址(IPv6 loopback)fe80::/10:链路本地地址(Link-local)fc00::/7:ULA(Unique Local Address,类似 IPv4 私有地址)
与 IPv4 不同,IPv6 在邻居发现和网络通信上也做了一些重要变化:
- 使用 NDP(Neighbor Discovery Protocol) 代替 ARP
- 不再使用传统广播(Broadcast)
- 大量机制依赖 多播(Multicast)
在 CTF 和实际安全研究中,IPv6 的价值往往来自 被忽视的网络路径。例如:
- 许多访问控制规则只过滤 IPv4
- 部分安全设备默认只检测 IPv4 流量
- 一些应用在处理 IPv6 表示形式时存在解析问题
- IPv6 地址格式复杂,容易导致白名单或黑名单绕过
因此即使在以 IPv4 为主的环境中,IPv6 也经常成为 意外的访问入口或绕过路径。
tips:利用 IPv6 链路本地地址 (fe80:: ) 进行绕过过滤器的横向移动
0x0A 路由表

主机发一个 IP 包之前,通常不是立刻开始 ARP,而是先查自己的 路由表。
路由表决定了:
- 哪些网段是直连的
- 哪些流量需要交给网关
- 应该走哪个网卡
- 找不到时是否走默认路由
顺序一般是:
- 目标是一个 IP
- 先查路由表
- 决定下一跳
- 再 ARP 找下一跳的 MAC
- 最后发帧出去
以下问题你在细致学习了路由表可能就会理解:
- 为什么访问外网时发给的是网关 MAC
- 为什么同一个目标在不同机器上走不同路径
- 为什么 VPN 一开,很多流量突然走另一张表
- 为什么 Docker、虚拟机、多网卡环境很容易出现奇怪网络行为
0x0B DHCP、默认网关
一台设备刚接入网络时,它并不知道自己的网络配置,例如:
- IP 地址
- 子网掩码
- 默认网关
- DNS 服务器
如果这些信息都手动配置,在大规模网络中几乎无法管理。因此网络中通常部署 DHCP(Dynamic Host Configuration Protocol) 来自动分配这些参数。
DHCP 的作用不仅仅是分配一个 IP 地址,它还可以通过 DHCP Option 一并下发多种网络配置,例如:
- IP 地址(Option 50)
- 子网掩码(Option 1)
- 默认网关(Option 3)
- DNS 服务器(Option 6)
- 租约时间(Lease Time)
- 域名、NTP 等其他配置
当设备接入网络时,DHCP 通常会经历 DORA 四步过程:

- Discover
客户端刚接入网络时没有 IP,因此会向局域网发送 广播包:
DHCP Discover
Source IP: 0.0.0.0
Destination: 255.255.255.255
用于寻找 DHCP 服务器。
- Offer
DHCP 服务器收到 Discover 后,会返回一个 DHCP Offer,其中包含:
- 分配的 IP 地址
- 子网掩码
- 默认网关
- DNS
- 租约时间
- Request
客户端收到多个 Offer 时,会选择其中一个,并发送 DHCP Request 表示确认使用该地址。
- ACK
DHCP 服务器返回 DHCP ACK,租约正式生效,客户端开始使用该 IP。
默认网关的作用
DHCP 中下发的 默认网关(Default Gateway),通常是当前网络的 三层出口设备。
当主机访问 非本地网段 时,数据包会发送给默认网关,由网关负责继续转发。
例如:
主机IP 192.168.1.10
掩码 255.255.255.0
网关 192.168.1.1
当访问:
192.168.1.50 → 同网段,直接通信
8.8.8.8 → 发给默认网关 192.168.1.1
在抓包中,DHCP 通常出现在:
- 设备刚接入网络
- 网络重新获取地址
- 租约过期续租
因此 DHCP 流量常常可以帮助判断 设备上线时间、网络拓扑和网关位置。
0x0C 三层设备与网络设备
一些常见的设备
- 网卡:负责收发当前链路上的帧
- 交换机:主要在二层根据 MAC 转发
- 路由器:主要在三层根据 IP 和路由表转发
- AP:无线接入点,负责终端接入 WLAN
- 网关:在主机视角里,通常是通往其他网络的下一跳
- 防火墙:在转发基础上增加访问控制和状态判断
tips:交换机会根据收到帧的源 MAC 学习“这个 MAC 在哪个端口后面”,形成 MAC 地址表,再据此转发。
0x0D ICMP
很多人只知道 ping 使用 ICMP,因此会把 ICMP 当作“网络是否连通的检测工具”。
实际上,ICMP(Internet Control Message Protocol)是 IP 协议族中的控制与错误报告协议,用于在网络通信出现问题时,让主机或路由器返回状态信息。
ICMP 报文通常由 路由器或目标主机自动生成,用于告知发送方当前网络发生了什么情况。
常见的 ICMP 类型包括:
| 类型 | 作用 |
|---|---|
| Echo Request / Echo Reply | 用于 ping,检测目标主机是否存活 |
| Destination Unreachable | 目标不可达,例如网络不可达、端口不可达 |
| Time Exceeded | TTL 超时 |
| Redirect | 路由重定向 |
| Parameter Problem | IP 报文参数错误 |
例如:
当使用 ping 发送请求时,流程实际上是:
发送方 → ICMP Echo Request → 目标主机
目标主机 → ICMP Echo Reply → 发送方
如果目标不存在或无法到达,则可能返回:
ICMP Destination Unreachable
除了 IPv4 中的 ICMP,IPv6 中还有 ICMPv6,邻居发现、路径 MTU 探测等很多机制也依赖它。
TTL 与 ICMP

ICMP 还与 路径探测工具 traceroute 密切相关。
IP 数据包在网络中转发时,每经过一台路由器都会让 TTL(Time To Live)减 1。
当 TTL 变为 0 时,路由器会丢弃该数据包,并返回:
ICMP Time Exceeded
traceroute 正是利用这一机制:
- 发送 TTL=1 的数据包 → 第一跳路由器返回 ICMP Time Exceeded
- 发送 TTL=2 的数据包 → 第二跳路由器返回 ICMP
- 不断递增 TTL → 逐步发现完整路径
因此 traceroute 可以显示:
客户端 → 路由器A → 路由器B → 路由器C → 目标
tips:
Windows (tracert):默认使用 ICMP Echo Request。
Linux/Unix (traceroute):默认使用 UDP 高端口
CTF 相关
在抓包或网络流量分析题中,ICMP 往往提供非常关键的信息,例如:
1. 主机探测
通过 ICMP Echo Request 判断主机是否存活,
抓包时会看到大量 ICMP Echo 请求。
2. 端口状态判断
当向关闭端口发送 UDP 时,目标主机通常返回:
ICMP Destination Unreachable (Port Unreachable)
这也是 UDP 扫描的依据之一。
3. 网络路径问题
如果抓包中大量出现:
ICMP Time Exceeded
可能说明:
- TTL 设置异常
- 路由环路
- traceroute 探测行为
4. 隐蔽通信
ICMP 还可能被用于:
- ICMP Tunnel
- ICMP C2
- 数据隐写
例如攻击者把数据放在 ICMP payload 中进行通信,从而绕过部分防火墙策略。
0x0E NAT
在现实网络中,大量设备使用的是 私有地址(RFC1918):
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
这些地址 不会在公网进行路由,因此内网主机无法直接在互联网被访问。
为了解决这个问题,网络边界设备通常会使用 NAT(Network Address Translation),也就是 网络地址转换。
NAT 的核心行为是:
当数据包经过边界设备时,修改 IP 地址,必要时同时修改端口。
因此 NAT 本质上是一种 地址与连接的转换机制。

一个典型的 NAT 例子
假设内网主机:
192.168.1.10
访问公网服务器:
8.8.8.8:53
经过路由器 NAT 后,数据包会变成:
Source IP: 203.0.113.5
Source Port: 45000
Destination: 8.8.8.8:53
其中:
203.0.113.5
是路由器的公网地址。
路由器会在内部维护一张 NAT 会话表:
192.168.1.10:52341 ↔ 203.0.113.5:45000
当服务器返回数据时,路由器再根据这张表把流量转回内网主机。
常见 NAT 类型
常见的 NAT 形式包括:
1. SNAT(Source NAT)
修改 源地址,通常用于内网访问公网。
2. DNAT(Destination NAT)
修改 目标地址,常用于端口映射。
例如:
公网 203.0.113.5:80
↓
内网 192.168.1.10:80
3. PAT(Port Address Translation)
同时转换地址和端口,也叫 NAPT。
这是家庭路由器最常见的模式。
NAT 在实际环境中的普遍存在
NAT 几乎存在于所有网络环境中,例如:
- 家庭路由器
- 企业网络出口
- 云服务器 VPC
- Docker 网络
- 虚拟机 NAT 网络
理解 NAT 对网络安全非常重要,因为很多网络现象都与它有关,例如:
- 为什么外网只能看到 一个公网出口地址
- 为什么 内网服务默认无法从公网访问
- 为什么需要 端口映射(Port Forwarding)
- 为什么 反弹 shell 无法直接访问内网主机
- 为什么某些服务在 容器内监听,但外部无法访问
很多网络排障问题,本质上都是 NAT 转换或端口映射配置问题。
0x0F 端口与五元组

IP 地址只能定位到一台主机,但一台主机上往往运行着多个网络服务,例如 Web 服务、数据库服务、SSH 等。如果只有 IP 地址,操作系统无法知道数据包应该交给哪个应用程序处理。
因此在传输层引入了 端口(Port) 的概念。
可以用一个简单的类比理解:
- IP 地址:一栋楼的地址
- 端口号:楼里的房间号
当数据包到达主机时,操作系统会根据 端口号 将数据交给对应的进程。
端口号是一个 16 位整数,范围为:
0 - 65535
常见服务端口
在网络排障、渗透测试和 CTF 中,记住一些常见端口非常有帮助:
| 端口 | 服务 |
|---|---|
| 20 / 21 | FTP |
| 22 | SSH |
| 23 | Telnet |
| 25 | SMTP |
| 53 | DNS |
| 67 / 68 | DHCP |
| 80 | HTTP |
| 110 | POP3 |
| 123 | NTP |
| 143 | IMAP |
| 161 | SNMP |
| 443 | HTTPS |
| 445 | SMB |
| 3306 | MySQL |
| 3389 | RDP |
| 5432 | PostgreSQL |
| 6379 | Redis |
| 8080 | 常见 Web 服务 |
但需要注意:
端口只是约定,并不是绝对规则。
任何服务都可以运行在任意端口上。例如:
HTTP → 8080
HTTP → 8000
HTTP → 5000
因此在抓包或分析流量时,不能只根据端口判断协议,还需要结合:
- 报文内容
- 协议特征
- TLS 指纹
- 流量行为
Q:端口 0是什么捏?
五元组
在网络流量分析中,一个连接通常用 五元组(Five Tuple) 来唯一标识:
源IP
源端口
目的IP
目的端口
协议
例如:
192.168.1.10:52341 → 8.8.8.8:53 UDP
完整的五元组可以写成:
192.168.1.10
52341
8.8.8.8
53
UDP
五元组的意义在于,它可以 唯一标识一条网络会话。
许多网络机制实际上都依赖五元组,例如:
- NAT 会话表
- 防火墙状态跟踪
- NetFlow / 流量统计
- Wireshark 会话重组
netstat/ss本地连接查看
例如在 NAT 中,路由器会记录类似这样的映射关系:
192.168.1.10:52341 → 203.0.113.5:45000
通过五元组,设备才能正确地将返回流量送回对应主机。
0x10 TCP
TCP(Transmission Control Protocol)是互联网中最常见的传输层协议之一,大量应用协议都运行在 TCP 之上,例如:
- HTTP / HTTPS
- SSH
- SMTP
- MySQL
- FTP
TCP 连接机制
TCP 是互联网中最常见的传输层协议,它通过 三次握手建立连接、四次挥手关闭连接,并依赖一系列标志位(如 SYN、ACK、FIN、RST、PSH)来管理连接状态。
在抓包分析中,还经常会遇到一些典型现象,例如 连接重置(RST)、TCP 重传、乱序(Out-of-Order)、MSS/MTU 协商 以及 IP 分片 等,这些都是 TCP 在真实网络环境中的正常行为或常见问题。
这些机制属于网络分析的基础知识,在流量分析、故障排查和安全研究中都非常重要,建议读者自行进一步了解其工作原理(懒得加了)。

Q:Fast Open 与 Window Scaling是什么捏?
0x11 UDP
与 TCP 不同,UDP(User Datagram Protocol)是一种 无连接的传输层协议。
UDP 在发送数据之前 不需要建立连接,也不会保证数据一定到达,因此它的协议设计非常简单:
- 不保证可靠传输
- 不保证顺序
- 不进行重传
- 没有拥塞控制
UDP 只负责把数据包发送出去,因此它的开销非常小、延迟低。
这使得 UDP 非常适合 实时性要求高的场景,例如:
- DNS 查询
- NTP 时间同步
- 实时音视频
- 在线游戏
- 流媒体传输
UDP 的报文结构也非常简单,仅包含四个字段:
Source Port
Destination Port
Length
Checksum
在抓包或流量分析中,UDP 通常表现为 一次请求对应一次响应,例如常见的 DNS 查询。
需要注意的是,由于 UDP 不维护连接状态,因此在很多网络设备中:
- 不存在 TCP 那样的会话管理
- 也不会有三次握手或连接关闭过程
在安全研究中,UDP 也经常出现在以下场景:
- DNS 流量分析
- UDP 扫描
- 放大攻击(Amplification Attack)
- QUIC / HTTP3 等新协议
tips:UDP 协议本身不建立像 TCP 那样的连接状态,但网络设备或应用程序仍可能基于五元组维护短时会话状态。
0x12 应用层协议、外围情报与流量特征
DNS
人类习惯记域名,网络层只认 IP。
所以访问网站时,通常要先经过 DNS。

常见记录类型
最基础的这些建议记住:
- A:IPv4 地址
- AAAA:IPv6 地址
- CNAME:别名
- MX:邮件服务器
- NS:权威 DNS
- TXT:文本记录
UDP DNS、TCP DNS 与 DoH
传统 DNS 查询通常走 UDP 53,因为请求短、开销小。
但 DNS 也可以走 TCP,比如响应太大或区域传送时。
现代网络里还很值得提的是 DoH,也就是 DNS over HTTPS。
它把 DNS 查询放进 HTTPS 中,使传统基于端口 53 的检测变得不那么充分。
DNS 分区解析
现实中,同一个域名可能对不同来源返回不同结果。
这叫分区解析,也常叫 split-horizon DNS。
它可能按:
- 内外网
- 地域
- 运营商
- 业务环境
返回不同记录。
这对实战和 CTF 都很有意义。
因为同一个域名在你的环境和目标环境里不一定长得一样。
DNS 欺骗与 DNS 隧道
DNS 很常被用于攻击和隐蔽通信。
DNS 欺骗可能让受害者把域名解析到错误 IP。
DNS 隧道则可以把数据编码到查询名里,通过大量 DNS 请求响应传递信息。
抓包中看到以下特征时应提高警惕:
- 超长、随机的子域名
- 高频 DNS 请求
- 大量 TXT 记录
- 异常活跃的 53 端口流量
Q:DNS Rebinding是什么捏
域名、Whois、证书透明度
网络分析和信息收集并不只看包本身,外围信息也很重要。
Whois
Whois 可以查询域名注册相关信息,例如:
- 注册商
- 创建时间
- 到期时间
- Name Server
- 部分组织信息
现代域名注册信息很多已因隐私和注册政策变化而变得不完整,因此 Whois 的信息价值不如早年稳定,但仍可作为基础线索之一。
证书与 CT 日志
TLS 证书里常常包含:
- 颁发者
- 有效期
- 指纹
- SAN 域名列表
而现代公开证书会被记录到 CT(Certificate Transparency) 日志中。
这使得 CT 日志成了一个很强的子域情报来源。
也就是说,子域枚举不一定只能爆破,很多时候可以直接从 CT 里捞到。
HTTP、HTTPS、TLS
HTTP
HTTP 是明文应用层协议。
在抓包中如果没有加密,你可以直接看到:
- 方法
- 路径
- Host
- Cookie
- User-Agent
- 表单内容
- 返回内容
这也是很多经典 CTF 流量题直接藏 flag 的地方。
HTTPS 与 TLS
HTTPS 本质是 HTTP over TLS。
HTTP 内容被放在 TLS 之内,不能直接看明文,但 TLS 握手阶段仍可能泄露很多信息。
tips:现在TLS 1.3是主要的,不过已经有ECH这种连SNI一起加密的噢~
Host 与 SNI
同一个 IP 可以承载多个站点。
HTTP 通过 Host 区分站点,HTTPS 里 TLS 握手阶段常借助 SNI 指出目标域名。
所以在流量分析中,即使内容加密了,往往仍能看到访问的域名或至少看到相关线索。
证书体系、吊销与“现代 HTTPS”基础
今天说 SSL,很多时候实际上是在说 TLS。
理解现代证书体系,至少应该知道:
- 客户端信任根证书
- 根证书签发中间证书
- 中间证书签发站点证书
- 客户端验证证书链、域名、有效期和用途
此外,还存在吊销机制,比如:
- CRL
- OCSP
在基础场景里,不需要把证书体系讲到非常底层,但至少要让读者明白:
HTTPS 不是“加密一下就完了”,而是一整套身份信任体系。
流量指纹
现代网络越来越多地使用加密,但这并不意味着流量分析失去价值。
相反,分析重点从“看明文”转向了“看特征”。
TCP 指纹
不同系统和工具生成 TCP 包时会有细微差异,比如:
- 初始 TTL
- 窗口大小
- MSS
- TCP options 顺序
TLS 指纹
TLS ClientHello 中的版本、扩展、套件组合也能构成指纹,例如 JA (已经到JA4了呜呜呜)一类思路。
这有助于判断流量更像:
- 正常浏览器
- 某个脚本库
- 自动化工具
- 恶意样本
网页特征与行为特征
即使不看内容,很多网页流量也有很强的行为特征:
- 请求资源顺序
- 常见静态路径
- User-Agent 风格
- Cookie 模式
- API 请求节奏
- WebSocket 长连接
代理、反向代理、VPN、隧道与 IPsec
现实中的客户端和服务器,很少是“直接裸连”的。
中间往往夹着很多层。
本地代理与正向代理
本地代理常用于抓包、调试、转发。
正向代理则代表客户端去访问外部资源,客户端明确知道代理存在。
反向代理
反向代理代表服务器接收请求。
Nginx、CDN、负载均衡都属于常见反向代理场景。
这意味着你看到的前端机器不一定是真实后端。
VPN 与隧道
VPN 的核心是在公共网络上建立逻辑上的专用通道。
它会影响:
- 路由
- 出口 IP
- DNS
- 网络可见性
隧道则是更宽泛的概念,把一种协议包进另一种通道里传输。
DNS 隧道、SSH 隧道、HTTP 隧道等都属于这个范畴。
IPsec
IPsec 是网络层安全协议族,常用于 VPN。
知道它的存在就足以帮助建立“网络层也能加密保护”的意识。
0x13 扩展视野
QUIC
现代网络里,一个越来越重要的协议是 QUIC。
它运行在 UDP 之上,却实现了很多传统上由 TCP + TLS 共同提供的能力。
HTTP/3 就基于 QUIC。
这意味着一个分析观念必须更新:
看到 UDP,不代表它只是简单小报文。
有时候你看到的可能是:
- 浏览器与网站的现代加密通信
- 更快的握手
- 多路复用
- 新一代 Web 流量
对 CTF 来说,知道 QUIC 的存在至少能帮助你避免用过时的直觉误判流量。
AS 与 BGP
互联网由许多自治系统构成,每个自治系统有 ASN。
自治系统之间交换路由信息主要依赖 BGP。
这说明互联网并不是一个单中心控制的大网,而是很多网络彼此连接形成的体系。
ISIS / OSPF
这些更多是自治系统内部的路由协议。
工控协议
除了 Web、DNS、邮件、SSH 这些大众协议,现实网络中还有大量行业协议。
比如工控领域常见的 Modbus。
0x14 结语
网络基础是为了在看到真实流量时,知道数据到底在做什么。
你需要明白:
- 二层在解决本地链路上的投递
- 三层在解决跨网络寻址
- 四层在解决服务定位和传输机制
- 应用层在承载具体业务
- 无线接入并没有绕过这些层,而只是换了一种接入方式
- 域名、证书、Whois、CT 日志会泄露外围情报
- 代理、CDN、VPN、隧道、NAT 会改变你看到的表象
- 加密并没有让分析失效,只是把重点从“内容”转向“特征”
当这些东西真正串起来以后,你再看一份流量,就不会只看到一堆十六进制和缩写。
你会知道:
它从哪个链路出去,为什么发给这个 MAC,为什么要先问 DNS,为什么走这个网关,为什么建立这个端口的 TCP 连接,为什么虽然是 HTTPS 但仍能看出域名,为什么证书会暴露子域,为什么这个 UDP 看起来像现代浏览器,为什么这个流量很像代理、很像隧道、很像中间人。
这才是网络基础最有价值的地方。
它不是一堆零散名词,而是一张解释现实通信行为的地图。
文中部分图片来自网络,部分为自行绘制或 AI 生成,仅作学习交流使用;如有疏漏或侵权问题,请联系处理。
原文地址: https://www.cveoy.top/t/topic/qF9j 著作权归作者所有。请勿转载和采集!