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:IPv4
  • 0x0806:ARP
  • 0x86DD: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,而是先查自己的 路由表

路由表决定了:

  • 哪些网段是直连的
  • 哪些流量需要交给网关
  • 应该走哪个网卡
  • 找不到时是否走默认路由

顺序一般是:

  1. 目标是一个 IP
  2. 先查路由表
  3. 决定下一跳
  4. 再 ARP 找下一跳的 MAC
  5. 最后发帧出去

以下问题你在细致学习了路由表可能就会理解:

  • 为什么访问外网时发给的是网关 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 四步过程

  1. Discover

客户端刚接入网络时没有 IP,因此会向局域网发送 广播包

复制代码
DHCP Discover
Source IP: 0.0.0.0
Destination: 255.255.255.255

用于寻找 DHCP 服务器。

  1. Offer

DHCP 服务器收到 Discover 后,会返回一个 DHCP Offer,其中包含:

  • 分配的 IP 地址
  • 子网掩码
  • 默认网关
  • DNS
  • 租约时间
  1. Request

客户端收到多个 Offer 时,会选择其中一个,并发送 DHCP Request 表示确认使用该地址。

  1. 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 正是利用这一机制:

  1. 发送 TTL=1 的数据包 → 第一跳路由器返回 ICMP Time Exceeded
  2. 发送 TTL=2 的数据包 → 第二跳路由器返回 ICMP
  3. 不断递增 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 是互联网中最常见的传输层协议,它通过 三次握手建立连接、四次挥手关闭连接 ,并依赖一系列标志位(如 SYNACKFINRSTPSH)来管理连接状态。

在抓包分析中,还经常会遇到一些典型现象,例如 连接重置(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 生成,仅作学习交流使用;如有疏漏或侵权问题,请联系处理。

相关推荐
ShoreKiten5 小时前
命令执行专题(持续更新)
web安全·php·ctf·rce
Chockmans1 天前
春秋云境CVE-2016-7124
web安全·网络安全·ctf·春秋云境·cve-2016-7124
2401_865721331 天前
WEEK 3 刷题&学习记录
网络·学习·ctf
努力的lpp15 天前
【ctf常用备用文件名字典】
web安全·网络安全·ctf
m0_7381207217 天前
sqli-labs过关解析(17- 20附带源码解析)
数据库·sql·web安全·php·ctf·安全性测试
Pure_White_Sword18 天前
bugku-reverse题目-NoString
网络安全·ctf·reverse·逆向工程
饮长安千年月18 天前
玄机-工控题
ctf·s7·流量分析·西门子协议
饮长安千年月19 天前
一带一路暨金砖国家技能发展与技术创新大赛网络安全防护与治理-Win基线加固
网络安全·ctf·金砖国家技能发展与技术创新大赛·一带一路
饮长安千年月19 天前
一带一路暨金砖国家技能发展与技术创新大赛网络安全防护与治理-Linux 安全基线加固
web安全·ctf·金砖国家技能发展与技术创新大赛·网络安全防护与治理