网络协议面试 6 问速记(蓝队初级)
面向安全运维 / 蓝队 / 驻场岗面试,按"能直接说出口"的标准整理。
记忆原则:先讲流程,再讲原因,最后点一句安全场景。
1. TCP 三次握手与四次挥手
三次握手(建立连接)
| 步骤 | 方向 | 报文 | 状态变化 |
|---|---|---|---|
| ① | 客户端 → 服务端 | SYN(seq=x) | 客户端 SYN_SENT |
| ② | 服务端 → 客户端 | SYN+ACK(seq=y, ack=x+1) | 服务端 SYN_RCVD |
| ③ | 客户端 → 服务端 | ACK(ack=y+1) | 双方 ESTABLISHED |
为什么是三次(不是两次):要让双方都确认"自己和对方的收、发能力正常",并同步双方初始序列号;两次无法确认客户端的接收能力,还可能让失效的历史连接请求误建连接、浪费服务端资源。
四次挥手(断开连接,TCP 全双工,两个方向分别关)
| 步骤 | 方向 | 报文 | 说明 |
|---|---|---|---|
| ① | 主动方 → 被动方 | FIN | 主动方 FIN_WAIT_1 |
| ② | 被动方 → 主动方 | ACK | 被动方 CLOSE_WAIT,主动方 FIN_WAIT_2(半关闭,被动方可能还有数据要发) |
| ③ | 被动方 → 主动方 | FIN(数据发完后) | 被动方 LAST_ACK |
| ④ | 主动方 → 被动方 | ACK | 主动方进入 TIME_WAIT,被动方收到即 CLOSED |
为什么挥手要四次、握手只要三次:握手时服务端的 SYN 和 ACK 能合成一个包;挥手时被动方收到 FIN 后可能还有数据没发完,ACK 和 FIN 必须分开发。
TIME_WAIT(高频追问)
主动关闭方发完最后一个 ACK 后等待 2MSL(最大报文生存时间的两倍)才真正关闭。
- ① 保证最后一个 ACK 能到达对方(若丢失,对方会重发 FIN,可补发 ACK);
- ② 让本次连接的残留报文在网络中自然消失,避免干扰相同四元组的新连接。
2. TCP 与 UDP 区别;流量控制 vs 拥塞控制
TCP vs UDP
| 维度 | TCP | UDP |
|---|---|---|
| 连接 | 面向连接(先握手) | 无连接,直接发 |
| 可靠性 | 可靠:确认、重传、有序、不丢不重 | 不可靠:尽力而为,可能丢/乱序 |
| 传输形式 | 字节流 | 面向报文 |
| 控制机制 | 有流量控制、拥塞控制 | 无 |
| 开销/速度 | 首部大(20B起)、较慢 | 首部仅 8B、快 |
| 典型场景 | HTTP/HTTPS、文件传输、邮件 | DNS 查询、语音视频、直播、游戏 |
流量控制(点对点 —— 解决"接收方来不及收")
接收方通过 TCP 头部窗口字段 rwnd 告诉发送方自己的接收缓冲区还能收多少,发送方用滑动窗口据此控制发送速度,避免淹没接收方。
拥塞控制(全局 —— 解决"网络本身堵了")
防止过多数据注入网络导致链路/路由器过载,靠四个算法:慢启动、拥塞避免、快重传、快恢复,维护拥塞窗口 cwnd。
一句话区分:流量控制管"接收方的承受能力",拥塞控制管"整个网络的承载能力";实际发送窗口 = min(rwnd, cwnd)。
3. HTTPS 加密流程(混合加密 + 证书 + TLS 握手)
对称与非对称如何配合(必问)
- 对称加密(如 AES):加解密用同一把密钥,快,适合加密大量数据,但密钥怎么安全传给对方是难题。
- 非对称加密(如 RSA/ECC):公钥加密、私钥解密,慢,不适合大数据,但能解决密钥分发问题。
- 配合方式:用非对称加密安全地协商出一把"对称会话密钥",之后全部通信用这把对称密钥加密。兼顾安全与效率。
数字证书验证(解决"公钥会不会被中间人伪造")
- CA 用自己的私钥对"证书信息(含服务器公钥、域名、有效期)的摘要"做签名,和证书一起发给服务器;
- 客户端系统/浏览器内置受信任 CA 的根公钥;
- 客户端用 CA 公钥解出签名里的摘要,再自己对证书内容算一遍摘要,两者一致说明证书未被篡改、确由可信 CA 签发;
- 再校验域名是否匹配、是否在有效期、是否被吊销。
TLS 握手(RSA 版简化流程)
- Client Hello:客户端发送 TLS 版本、支持的加密套件、客户端随机数;
- Server Hello:服务端选定套件、返回服务器随机数 + 数字证书;
- 客户端验证证书通过后,生成第三个随机数 pre-master,用服务器公钥加密发回;
- 双方用三个随机数各自算出相同的对称会话密钥;
- 双方互发加密的 Finished 验证一致 → 握手完成,之后全程对称加密。
补充一句加分:TLS 1.3 用 ECDHE 实现前向保密、握手更少,但讲清上面流程即可。
4. 子网划分手算
核心公式
- IPv4 共 32 位 = 网络位 + 主机位;掩码中连续的 1 = 网络位,连续的 0 = 主机位。
/n表示前 n 位是网络位,主机位数 h = 32 - n。- 可用主机数 = 2^h − 2(减去网络地址和广播地址)。
- 网络地址 = IP 与掩码逐位相与;块大小 = 2^h。
手算四步
- 由前缀
/n算出主机位 h 和块大小 2^h; - 网络地址 = IP 所在块的起点;
- 广播地址 = 下一块起点 − 1(主机位全 1);
- 可用范围 = 网络地址+1 ~ 广播地址−1。
例题:192.168.1.130/26
- /26 → h=6,块大小 = 64,可用主机 = 2⁶−2 = 62;
- 第四段按 64 分块:0–63 / 64–127 / 128–191 / 192–255;
130 落在 128–191:
- 网络地址:192.168.1.128
- 可用范围:.129 ~ .190
- 广播地址:192.168.1.191
常见掩码速查表
| 前缀 | 末段掩码 | 主机位 | 可用主机 | 块大小 |
|---|---|---|---|---|
| /24 | 0 | 8 | 254 | 256 |
| /25 | 128 | 7 | 126 | 128 |
| /26 | 192 | 6 | 62 | 64 |
| /27 | 224 | 5 | 30 | 32 |
| /28 | 240 | 4 | 14 | 16 |
| /30 | 252 | 2 | 2 | 4(常用于链路互联) |
5. DNS 解析过程、ARP、NAT
DNS(域名 → IP)
解析顺序:浏览器缓存 → 操作系统 hosts/缓存 → 本地 DNS 服务器(递归)→ 本地 DNS 再迭代查询:
根域(.)→ 顶级域(.com)→ 权威域(example.com),拿到 IP 后逐级返回并缓存。
- 常见记录:A(域名→IPv4)、AAAA(→IPv6)、CNAME(别名)、MX(邮件)、NS(域名服务器)、PTR(反向解析)。
- 端口:正常查询 UDP 53,区域传送用 TCP 53。
ARP(IP → MAC,同一二层网段内)
- 已知目标 IP,广播 ARP 请求"谁是 x.x.x.x,请回复你的 MAC",目标主机单播 ARP 应答返回 MAC,结果存入 ARP 缓存表。
- 安全关联(蓝队加分):ARP 欺骗/毒化是常见中间人攻击(伪造网关 MAC 劫持流量);防御手段:静态 ARP 绑定、交换机 DAI、ARP 防火墙。
NAT(网络地址转换)
- 解决公网 IPv4 地址不足,并隐藏内网结构:大量内网私有地址(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16)经出口路由器共享少量公网 IP 上网。
- NAPT/PAT 在出口把"内网 IP+端口"映射为"公网 IP+端口"并维护映射表,回程再转换回来。
- 副作用:外网无法主动连入内网主机(天然隔离),内网对外提供服务需做端口映射。
6. Wireshark 过滤表达式
先分清两类过滤器(面试常问):
捕获过滤器:抓包前设置,BPF 语法,决定"抓哪些";
显示过滤器:抓完后筛选,决定"显示哪些",不改原始包。
显示过滤器(最常用)
# 按 IP
ip.addr == 192.168.1.1 # 源或目的等于该 IP
ip.src == 192.168.1.1 # 仅源 IP
ip.dst == 192.168.1.1 # 仅目的 IP
# 按端口
tcp.port == 80
tcp.srcport == 443 / tcp.dstport == 443
# 按协议
tcp / udp / http / dns / arp / icmp
# 逻辑组合(and / or / not)
ip.addr == 10.0.0.5 and tcp.port == 443
not arp
# TCP 标志位(看握手/异常连接)
tcp.flags.syn == 1 # SYN 包
tcp.flags.reset == 1 # RST 重置包
tcp.flags.syn == 1 or (tcp.flags.ack == 1 and tcp.flags.syn == 1) # 观察握手
# HTTP 应用层
http.request.method == "GET"
http.response.code == 200
http contains "password" # 包内包含关键字捕获过滤器(BPF 语法)
host 192.168.1.1 # 与该主机相关
src host x / dst host x
port 80 / tcp port 443
net 192.168.1.0/24 # 整个网段
host 1.1.1.1 and port 80 # 组合
tcp and not port 22 # 排除 SSH蓝队实战用途
定位某个源 IP 的端口扫描 / 暴力破解(看大量 SYN、高频失败请求)、发现异常外联(内网主机连可疑外部 IP)、还原 TCP 握手判断会话是否正常、按关键字检索敏感信息泄露。
自测清单(能不看资料讲清即过关)
- [ ] 默画三次握手、四次挥手报文流,说清 TIME_WAIT 为何等 2MSL
- [ ] 说清流控与拥塞控制的区别、各自靠什么实现
- [ ] 讲清"为什么 HTTPS 要同时用对称和非对称"和证书验证链
- [ ] 30 秒手算一个 /26、/27 子网的网络地址、可用范围、主机数
- [ ] 说出 DNS 完整查询链路、ARP 欺骗原理、NAT 作用
[ ] 手写 3 条以上 Wireshark 显示过滤器并解释用途
(注:内容由AI生成)
评论 (0)