网络安全 / A LEAF IN THE GARDEN

传输层协议

网络安全 · web / 网络协议。来自 Daily Learning 的学习笔记。

UDP 协议

简介

用户数据报协议(User Datagram Protocol,UDP)提供简单快速但不可靠的传输。

报文格式

Bits 0–15 Bits 16–31
源端口 (16 bit) · Byte 0–1 目的端口 (16 bit) · Byte 2–3
长度 (16 bit) · Byte 4–5 校验和 (16 bit) · Byte 6–7
数据载荷 (可变)

原理

直接发送数据包

sequenceDiagram
box White
    participant A as 发送端
    participant B as 接收端
end
    A->>B: 发送数据包
    B->>A: 发送数据包

特点

  • 无连接: 发送数据前不需要建立连接
  • 不可靠: 不保证数据包到达、完整性、顺序
  • 支持广播多播: 可以将数据包发送到多个接收端

应用场景

  • 实时应用: 视频会议、在线游戏、语音通话等
  • 广播和多播: DNS 查询、DHCP 等

TCP 协议

简介

传输控制协议(Transmission Control Protocol,TCP)提供可靠的、面向连接的传输服务。

报文格式

0–7 8–15 16–23 24–31
源端口 (16 bit) · Byte 0–1 目的端口 (16 bit) · Byte 2–3
序列号 Sequence Number (32 bit) · Byte 4–7
确认号 Acknowledgment Number (32 bit) · Byte 8–11
数据偏移
(4 bit)
保留
(6 bit)
U
R
G
A
C
K
P
S
H
R
S
T
S
Y
N
F
I
N
窗口大小 (16 bit) · Byte 14–15
校验和 (16 bit) · Byte 16–17 紧急指针 (16 bit) · Byte 18–19
选项 Options (0–320 bit) · Byte 20–59(数据偏移 > 5 时存在)
数据载荷 Payload (可变)
  • 序列号: 本文段的第一个字节的编号,用于排序去重
  • 确认号: 期望收到的下一个字节的编号,用于确认收到的数据

原理

标志位

标志说明
SYN同步序列号,用于建立连接
ACK确认序列号,用于确认收到的数据
FIN结束连接
RST重置连接
PSH立即发送数据
URG紧急指针有效

建立连接(三次握手)

sequenceDiagram
box White
    participant A as 发送端
    participant B as 接收端
end
    A->>B: SYN
    activate B
    B->>A: SYN + ACK
    deactivate B
    activate A
    A->>B: ACK
    deactivate A

本质是双向的“通知-确认”,中间合并

传输数据(确认应答)

sequenceDiagram
box White
    participant A as 发送端
    participant B as 接收端
end
    A->>B: 数据包1
    activate B
    B->>A: ACK1
    deactivate B

单向“通知-确认”(发送端向接收端)

断开连接(四次挥手)

sequenceDiagram
box White
    participant A as 发送端
    participant B as 接收端
end
    A->>B: FIN
    activate B
    B->>A: ACK
    deactivate B
    B->>A: FIN
    activate A
    A->>B: ACK
    deactivate A

还是双向“通知-确认”,ACK 自动回复,FIN 主动调用,所以分开了

关键机制

  • 确认应答: 接收端收到数据包后发送 ACK,发送端收到答后才认为传输成功
  • 超时重传: 发送端在一定时间内没有收到 ACK,会重传数据包
  • 滑动窗口: 可发送多个包,控制流量或丢包补偿
  • 全双工: 通信过程中不区分客户端和服务端

理解这些流程图的关键在于,在每一个箭头上假设“在此处丢包”,利用“确认应答”和“超时重传”机制,推导协议如何解决

特点

  • 面向连接: 发送数据前需要建立连接
  • 可靠传输: 通过确认、重传、序列号等机制保证数据包的到达、完整性和顺序
  • 流量控制: 通过滑动窗口机制控制数据流量

安全视角

UDP 可能攻击

攻击类型利用原理
UDP Flood海量 UDP 包打满带宽
DNS 放大攻击伪造源IP,小请求换大响应
UDP 扫描发 UDP 包,看是否返回 ICMP Port Unreachable
SNMP/NTP 放大利用 UDP 协议的公共服务放大流量

TCP 可能攻击

攻击类型利用原理
SYN Flood只发 SYN 不应答,填满半连接队列
RST 攻击伪造 RST 包强制断开连接
TCP 会话劫持预测序列号后伪造数据包注入
端口扫描SYN 扫描、Connect 扫描、FIN 扫描