网络协议

我独自升级中
2026-09-15 / 0 评论 / 18 阅读 / 正在检测是否收录...

网络协议面试 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

维度TCPUDP
连接面向连接(先握手)无连接,直接发
可靠性可靠:确认、重传、有序、不丢不重不可靠:尽力而为,可能丢/乱序
传输形式字节流面向报文
控制机制有流量控制、拥塞控制
开销/速度首部大(20B起)、较慢首部仅 8B、快
典型场景HTTP/HTTPS、文件传输、邮件DNS 查询、语音视频、直播、游戏

流量控制(点对点 —— 解决"接收方来不及收")

接收方通过 TCP 头部窗口字段 rwnd 告诉发送方自己的接收缓冲区还能收多少,发送方用滑动窗口据此控制发送速度,避免淹没接收方。

拥塞控制(全局 —— 解决"网络本身堵了")

防止过多数据注入网络导致链路/路由器过载,靠四个算法:慢启动、拥塞避免、快重传、快恢复,维护拥塞窗口 cwnd。

一句话区分:流量控制管"接收方的承受能力",拥塞控制管"整个网络的承载能力";实际发送窗口 = min(rwnd, cwnd)。

3. HTTPS 加密流程(混合加密 + 证书 + TLS 握手)

对称与非对称如何配合(必问)

  • 对称加密(如 AES):加解密用同一把密钥,,适合加密大量数据,但密钥怎么安全传给对方是难题。
  • 非对称加密(如 RSA/ECC):公钥加密、私钥解密,,不适合大数据,但能解决密钥分发问题。
  • 配合方式:用非对称加密安全地协商出一把"对称会话密钥",之后全部通信用这把对称密钥加密。兼顾安全与效率。

数字证书验证(解决"公钥会不会被中间人伪造")

  1. CA 用自己的私钥对"证书信息(含服务器公钥、域名、有效期)的摘要"做签名,和证书一起发给服务器;
  2. 客户端系统/浏览器内置受信任 CA 的根公钥
  3. 客户端用 CA 公钥解出签名里的摘要,再自己对证书内容算一遍摘要,两者一致说明证书未被篡改、确由可信 CA 签发;
  4. 再校验域名是否匹配、是否在有效期、是否被吊销

TLS 握手(RSA 版简化流程)

  1. Client Hello:客户端发送 TLS 版本、支持的加密套件、客户端随机数;
  2. Server Hello:服务端选定套件、返回服务器随机数 + 数字证书;
  3. 客户端验证证书通过后,生成第三个随机数 pre-master,用服务器公钥加密发回;
  4. 双方用三个随机数各自算出相同的对称会话密钥
  5. 双方互发加密的 Finished 验证一致 → 握手完成,之后全程对称加密。
补充一句加分:TLS 1.3 用 ECDHE 实现前向保密、握手更少,但讲清上面流程即可。

4. 子网划分手算

核心公式

  • IPv4 共 32 位 = 网络位 + 主机位;掩码中连续的 1 = 网络位,连续的 0 = 主机位。
  • /n 表示前 n 位是网络位,主机位数 h = 32 - n。
  • 可用主机数 = 2^h − 2(减去网络地址和广播地址)。
  • 网络地址 = IP 与掩码逐位相与;块大小 = 2^h。

手算四步

  1. 由前缀 /n 算出主机位 h 和块大小 2^h;
  2. 网络地址 = IP 所在块的起点;
  3. 广播地址 = 下一块起点 − 1(主机位全 1);
  4. 可用范围 = 网络地址+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

常见掩码速查表

前缀末段掩码主机位可用主机块大小
/2408254256
/251287126128
/2619266264
/2722453032
/2824041416
/30252224(常用于链路互联)

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

评论 (0)

取消