| OSI 七层 | TCP/IP 四层 | 协议 |
|---|---|---|
| 应用层 | 应用层 | HTTP, DNS, SSH, SMTP |
| 表示层 | 应用层 | TLS/SSL |
| 会话层 | 应用层 | - |
| 传输层 | 传输层 | TCP, UDP |
| 网络层 | 网络层 | IP, ICMP |
| 数据链路层 | 网络接口层 | ARP, Ethernet |
| 物理层 | 网络接口层 | 光纤、铜缆 |
Client Server
|─── SYN (seq=x) ──────→|
|←─ SYN+ACK (seq=y,ack=x+1)──|
|─── ACK (ack=y+1) ────→|
Client Server
|─── FIN ──────────────→|
|←─ ACK ────────────────|
|←─ FIN ────────────────|
|─── ACK ──────────────→|
高并发短连接场景下 TIME_WAIT 堆积:
# 查看 TIME_WAIT 数量
ss -tan state time-wait | wc -l
# 内核调优
sysctl net.ipv4.tcp_tw_reuse=1 # 复用 TIME_WAIT 连接
sysctl net.ipv4.tcp_fin_timeout=15 # 减少超时
| 算法 | 特点 |
|---|---|
| Cubic | Linux 默认,高速高延迟网络友好 |
| BBR | Google 开发,基于带宽和 RTT |
sysctl net.ipv4.tcp_congestion_control
# 查看可用算法
cat /proc/sys/net/ipv4/tcp_available_congestion_control
ping 和 traceroute 的底层协议net.core.somaxconn # listen backlog 最大值
net.ipv4.tcp_max_syn_backlog # SYN 队列长度
net.ipv4.ip_local_port_range # 本地端口范围
net.core.netdev_max_backlog # 网络接口接收队列