【WEB安全-面向 CTF / 流量分析 / 信息收集的网络基础总览】此文章归类为:WEB安全。
哎,老师说要开会,给同学讲点什么,那就随便讲讲
本篇文章是总结梳理性的,提了很多东东,不知道的请自行了解。(懒得写那么详细了,这已经是让ai扩写过一遍然后我再改改的)
我blog上的这篇文章: 如果图加载不出来可以去我blog看
欢迎各位大佬补充指正!
这篇文章试图做的,就是把这些知识串成一张图。它不追求教材式的严格穷尽,而是从 基础且必备 的部分出发,尽量覆盖到 CTF、流量分析、信息收集与现实网络环境 中最常见、最有用的知识。
谁先开始通信?什么时候发生 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 历史看是否存在文件、凭据、隧道数据或隐藏载荷
很多人一提网络分层就想到 OSI 七层模型,然后开始背:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。背完以后,实际看包时还是一脸茫然。
真正有用的不是死背层名,而是理解:每一层都在解决一个不同的问题。
更贴近实际的思路,是用一个简化版的 TCP/IP 视角去理解:
传统上四层常见的是 TCP 和 UDP;而像 QUIC 这类现代协议虽然基于 UDP 承载,但承担了更多高层连接控制能力,已经不太适合用老式分层直觉去硬套。
想看懂抓包,必须先理解 封装。

当应用程序要发送一段数据时,这段数据不是直接原样发上网,而是会一层层加头部:
接收方收到后,再反过来一层层拆掉,这就是 解封装。
在有线局域网里,最典型的链路层协议就是 以太网。在以太网中,数据以“帧”的形式传输。一个常见的 Ethernet 帧里,最重要的字段包括:
EtherType 用来告诉接收方:负载里装的是什么。常见值包括:
0x0800:IPv40x0806:ARP0x86DD:IPv6MAC 地址是链路层地址,通常和网卡相关。它的主要作用不是“全球唯一标识某台机器”,而是帮助局域网中的设备完成“这一跳投递”。
交换机在转发以太网帧时,主要看的就是 MAC 地址。因此,在同一个二层网络里,真正决定帧发给谁的是目的 MAC,而不是 IP。
这就是为什么包里最先看到的是一串 MAC 地址因为数据要先走当前链路这一跳,链路层先于网络层发生作用。
Q:为什么不能直接用 MAC 作为 IP
这是一个很经典的问题。直觉上看,既然网卡有 MAC,为什么互联网不直接拿 MAC 做地址?
因为 MAC 只在当前链路这一跳有意义。一个包经过路由器后,链路层头部通常会被重写,源 MAC 和目的 MAC 都可能变化。所以 MAC 不是一个能端到端保持稳定的地址。
而 IP 是逻辑地址,能够分层、聚合、划分网段,适合大规模路由。互联网之所以能扩展,就是因为 IP 可以按前缀聚合,而不是为全球每一个终端维持一条扁平记录。
MAC 用来解决本地链路上的一跳投递,IP 用来解决跨网络的逻辑寻址。
应用程序通常知道自己要访问的目标是一个 IP 地址,但链路层发帧时需要的是 MAC。这就需要一个“翻译器”,把 IP 翻译成当前链路上的 MAC,这个协议就是 ARP。
ARP 的过程很直观:
因为发送方还不知道目标 MAC,所以请求通常要广播;而目标主机已经知道请求者是谁,因此回复通常可以单播返回。ARP 解析的不一定是“最终目标”的 MAC,而是“下一跳”的 MAC。
ARP 没有强认证机制,所以它天然容易被欺骗。攻击者可以伪造 ARP 应答,告诉受害者“我是网关”,再告诉网关“我是受害者”,于是双方流量都先经过攻击者,实现中间人。
这就是经典的 ARP 欺骗 / ARP 劫持。它的典型效果包括:
对于流量分析来说,识别 ARP 异常也很重要,比如:
WLAN 可以理解为无线局域网,最常见的实现就是 Wi-Fi。它本质上仍然是局域网接入的一种方式,只是链路层不再通过网线和交换机,而是通过无线信道和接入点通信。
在有线网络里,你可以把线插进交换机;在无线网络里,终端通常通过 AP,也就是 Access Point,接入网络。
所以 AP 的角色可以简单理解为:无线终端和局域网/上层网络之间的桥梁。

即使是无线网络,真正完成“接入互联网”也仍然离不开前面讲的那些基础:链路层接入、IP 配置、路由、DNS、TCP/UDP 等。
如果你在做无线相关分析,会遇到更复杂的二层/管理帧问题。如果有兴趣可以自行了解,这里只做提及。
无线环境下,抓到的未必只是普通数据帧,还可能包含 Beacon、Probe、Authentication、Association 等管理帧;因此无线抓包和有线抓包在观察对象上并不完全等价。
如果说二层解决的是“当前链路上的这一跳”,那么三层,也就是 网络层,解决的就是“跨网络之后最终去哪”。
IPv4 使用 32 位地址,通常写成点分十进制,例如:
192.168.1.10
IPv4 地址由 网络部分 + 主机部分组成,通过子网掩码进行划分。
例如:
IP: 192.168.1.10
Mask: 255.255.255.0
表示:
192.168.1.0/2410IPv4 的核心作用是实现:
这也是互联网能够进行大规模路由的基础。
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
这些地址在以下场景中非常常见:
tips:在云环境中,还经常会遇到
169.254.169.254这样的元数据服务地址。
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 |
例如两个地址:
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
则 不在同一网段,需要通过网关转发。
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 在邻居发现和网络通信上也做了一些重要变化:
在 CTF 和实际安全研究中,IPv6 的价值往往来自 被忽视的网络路径。例如:
因此即使在以 IPv4 为主的环境中,IPv6 也经常成为 意外的访问入口或绕过路径。
tips:利用 IPv6 链路本地地址 (fe80:: ) 进行绕过过滤器的横向移动

主机发一个 IP 包之前,通常不是立刻开始 ARP,而是先查自己的 路由表。
路由表决定了:
顺序一般是:
以下问题你在细致学习了路由表可能就会理解:
一台设备刚接入网络时,它并不知道自己的网络配置,例如:
如果这些信息都手动配置,在大规模网络中几乎无法管理。因此网络中通常部署 DHCP(Dynamic Host Configuration Protocol) 来自动分配这些参数。
DHCP 的作用不仅仅是分配一个 IP 地址,它还可以通过 DHCP Option 一并下发多种网络配置,例如:
当设备接入网络时,DHCP 通常会经历 DORA 四步过程:

客户端刚接入网络时没有 IP,因此会向局域网发送 广播包:
DHCP Discover
Source IP: 0.0.0.0
Destination: 255.255.255.255
用于寻找 DHCP 服务器。
DHCP 服务器收到 Discover 后,会返回一个 DHCP Offer,其中包含:
客户端收到多个 Offer 时,会选择其中一个,并发送 DHCP Request 表示确认使用该地址。
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 流量常常可以帮助判断 设备上线时间、网络拓扑和网关位置。
一些常见的设备
tips:交换机会根据收到帧的源 MAC 学习“这个 MAC 在哪个端口后面”,形成 MAC 地址表,再据此转发。
很多人只知道 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 探测等很多机制也依赖它。

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

IP 地址只能定位到一台主机,但一台主机上往往运行着多个网络服务,例如 Web 服务、数据库服务、SSH 等。如果只有 IP 地址,操作系统无法知道数据包应该交给哪个应用程序处理。
因此在传输层引入了 端口(Port) 的概念。
可以用一个简单的类比理解:
当数据包到达主机时,操作系统会根据 端口号 将数据交给对应的进程。
端口号是一个 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
因此在抓包或分析流量时,不能只根据端口判断协议,还需要结合:
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
五元组的意义在于,它可以 唯一标识一条网络会话。
许多网络机制实际上都依赖五元组,例如:
netstat / ss 本地连接查看例如在 NAT 中,路由器会记录类似这样的映射关系:
192.168.1.10:52341 → 203.0.113.5:45000
通过五元组,设备才能正确地将返回流量送回对应主机。
TCP(Transmission Control Protocol)是互联网中最常见的传输层协议之一,大量应用协议都运行在 TCP 之上,例如:
TCP 是互联网中最常见的传输层协议,它通过 三次握手建立连接、四次挥手关闭连接,并依赖一系列标志位(如 SYN、ACK、FIN、RST、PSH)来管理连接状态。
在抓包分析中,还经常会遇到一些典型现象,例如 连接重置(RST)、TCP 重传、乱序(Out-of-Order)、MSS/MTU 协商 以及 IP 分片 等,这些都是 TCP 在真实网络环境中的正常行为或常见问题。
这些机制属于网络分析的基础知识,在流量分析、故障排查和安全研究中都非常重要,建议读者自行进一步了解其工作原理(懒得加了)。

Q:Fast Open 与 Window Scaling是什么捏?
与 TCP 不同,UDP(User Datagram Protocol)是一种 无连接的传输层协议。
UDP 在发送数据之前 不需要建立连接,也不会保证数据一定到达,因此它的协议设计非常简单:
UDP 只负责把数据包发送出去,因此它的开销非常小、延迟低。
这使得 UDP 非常适合 实时性要求高的场景,例如:
UDP 的报文结构也非常简单,仅包含四个字段:
Source Port
Destination Port
Length
Checksum
在抓包或流量分析中,UDP 通常表现为 一次请求对应一次响应,例如常见的 DNS 查询。
需要注意的是,由于 UDP 不维护连接状态,因此在很多网络设备中:
在安全研究中,UDP 也经常出现在以下场景:
tips:UDP 协议本身不建立像 TCP 那样的连接状态,但网络设备或应用程序仍可能基于五元组维护短时会话状态。
人类习惯记域名,网络层只认 IP。所以访问网站时,通常要先经过 DNS。

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