首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
WEB安全
发新帖
1
1
[原创]面向 CTF / 流量分析 / 信息收集的网络基础总览
发表于: 2026-3-13 11:24
5112
[原创]面向 CTF / 流量分析 / 信息收集的网络基础总览
Dorimu
2026-3-13 11:24
5112
> 哎,老师说要开会,给同学讲点什么,那就随便讲讲 > > 本篇文章是总结梳理性的,提了很多东东,不知道的请自行了解。~(懒得写那么详细了,这已经是让ai扩写过一遍然后我再改改的)~ > 我blog上的这篇文章: <a href="elink@404K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1L8r3!0Y4i4K6u0W2k6r3!0J5K9h3#2#2i4K6u0W2j5$3&6Q4x3V1k6H3L8%4y4@1M7#2)9J5c8X3y4@1k6W2)9J5k6s2N6W2k6h3E0Q4x3V1j5`.">my blog</a> 如果图加载不出来可以去我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 服务器。 2. **Offer** DHCP 服务器收到 Discover 后,会返回一个 **DHCP Offer**,其中包含: * 分配的 IP 地址 * 子网掩码 * 默认网关 * DNS * 租约时间 3. **Request** 客户端收到多个 Offer 时,会选择其中一个,并发送 **DHCP Request** 表示确认使用该地址。 4. **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 是互联网中最常见的传输层协议,它通过 **三次握手建立连接、四次挥手关闭连接**,并依赖一系列标志位(如 `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 生成,仅作学习交流使用;如有疏漏或侵权问题,请联系处理。
传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!
#其他
收藏
・
1
点赞
・
1
打赏
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
wx_晨梦
非常支持你的观点!
2026-7-16 08:10
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
0
)
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
Dorimu
2
发帖
0
回帖
10
RANK
关注
私信
他的文章
[原创]面向 CTF / 流量分析 / 信息收集的网络基础总览
5112
[原创]实战还原 V8 bytenode 保护 JS(V8 字节码分析记录)
15376
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部