理解“管道” – SRE 必备网络基础知识
作为 SRE,我们打交道的系统几乎都是分布式的:服务分布在不同的机器、不同的机架、甚至不同的数据中心或云区域。它们之间如何通信?通过网络。当用户访问变慢、服务间调用失败、或者应用无法连接数据库时,很多时候问题就出在网络这个“管道”上。因此,掌握必要的网络基础知识,对于 SRE 诊断问题、设计可靠系统来说,是不可或缺的基本功。
别担心,我们不需要成为网络专家,但理解以下这些核心概念会让你在工作中事半功倍:
1. 网络模型(OSI 与 TCP/IP)
你可能听说过 OSI 七层模型或 TCP/IP 四/五层模型。作为初级 SRE,不必死记硬背每一层的所有细节。关键是理解分层的思想:网络通信是一个复杂的过程,被划分为不同的功能层,每一层负责特定的任务,并与其上下层交互。
实际工作中常已关注的层次:
网络层 (Network Layer):核心是 IP 协议,负责在网络中找到目标地址(IP 地址)并进行路由。
传输层 (Transport Layer):主要是 TCP 和 UDP 协议,负责端到端的连接和数据传输。
应用层 (Application Layer):我们最常接触的协议,如 HTTP, HTTPS, DNS 等,定义了应用程序如何交换数据。
2. IP 地址与子网划分 (IP Addressing & Subnetting)
IP 地址 (IP Address):就像互联网上的“门牌号”,唯一标识了网络中的一台设备。需要了解 IPv4 地址的基本格式(如 192.168.1.100
),以及公网 IP 和私网 IP 的区别。
子网掩码 (Subnet Mask):用于将一个大的 IP 网络划分为更小的子网,决定了哪些 IP 地址属于同一个局域网络,可以直接通信,哪些需要通过路由器转发。理解子网划分有助于判断网络连通性问题。
3. TCP 与 UDP
这是传输层的两大核心协议,特性截然不同:
TCP (Transmission Control Protocol):
面向连接: 通信前需要建立连接(著名的“三次握手” – SYN, SYN-ACK, ACK)。
可靠传输: 保证数据按序、无差错、不丢失地到达对方(通过序列号、确认、重传机制)。
流量控制/拥塞控制: 会根据网络状况调整发送速率。
应用: HTTP, HTTPS, FTP, SMTP, SSH 等绝大多数需要可靠传输的应用。
UDP (User Datagram Protocol):
无连接: 发送数据前不需要建立连接。
不可靠传输: 不保证数据到达、不保证顺序、不保证不重复。尽力而为。
速度快: 开销比 TCP 小。
应用: DNS(通常优先 UDP 查询)、某些视频/音频流、在线游戏、监控数据上报等对实时性要求高、能容忍少量丢包的场景。
4. DNS (Domain Name System – 域名系统)
作用: 互联网的“电话簿”,负责将我们容易记住的域名(如 www.google.com
)解析为机器能够理解的 IP 地址。
核心概念:
解析过程: 递归查询、迭代查询。
记录类型: A (IPv4), AAAA (IPv6), CNAME (别名), MX (邮件交换), TXT (文本记录) 等。
传播 (Propagation): DNS 记录修改后,需要时间在全球的 DNS 服务器间同步生效。
缓存 (Caching): 各级 DNS 服务器和操作系统、浏览器都会缓存 DNS 记录以提高效率,但也可能导致访问到旧记录。
SRE 相关: DNS 解析失败或解析到错误的 IP 是常见的服务访问问题来源。需要会使用 dig
或 nslookup
等工具进行诊断。
5. HTTP / HTTPS
HTTP (HyperText Transfer Protocol):Web 通信的基础协议。
请求方法 (Methods): GET (获取资源), POST (提交数据), PUT (更新资源), DELETE (删除资源) 等。
状态码 (Status Codes):必须熟悉常见的状态码含义!
2xx
(成功): 如 200 OK
。
3xx
(重定向): 如 301 Moved Permanently
, 302 Found
。
4xx
(客户端错误): 如 400 Bad Request
, 401 Unauthorized
, 403 Forbidden
, 404 Not Found
。
5xx
(服务器端错误): 如 500 Internal Server Error
, 502 Bad Gateway
, 503 Service Unavailable
, 504 Gateway Timeout
。SRE 经常需要处理 5xx 错误。
请求头/响应头 (Headers):携带额外的元数据,如 Content-Type
, User-Agent
, Host
, Cookie
, Cache-Control
等。
HTTPS (HTTP Secure):通过 TLS/SSL 加密和认证的 HTTP。确保通信内容不被窃听和篡改,并验证服务器身份(通过 SSL 证书)。
6. 负载均衡 (Load Balancing)
作用: 将传入的流量分发到后端的多个服务器实例上,以提高可用性(单点故障)、可扩展性(横向扩展)和性能。
类型:
L4 (传输层):基于 IP 地址和端口进行转发,不关心应用层内容 (如 TCP/UDP 负载均衡)。
L7 (应用层):能理解 HTTP 等应用层协议,可以基于 URL 路径、请求头、Cookie 等信息进行更智能的路由和分发。
常见算法: 轮询 (Round Robin), 最少连接 (Least Connections), 源 IP 哈希等。
实现方式: 硬件负载均衡器 (F5 等)、云服务商提供的 LB (AWS ELB, GCP Load Balancer 等)、软件负载均衡器 (Nginx, HAProxy), 以及 Kubernetes 中的 Service 和 Ingress。
7. 防火墙与安全组 (Firewalls & Security Groups)
作用: 网络安全的第一道防线。根据预设的规则(基于源/目的 IP、端口、协议)过滤网络流量,允许合法流量通过,阻止非法访问。
SRE 相关: 理解防火墙或云平台安全组的规则对于排查“为什么我的服务无法访问某个依赖?”这类连接性问题至关重要。
常用网络诊断工具 (简介)
ping
: 测试网络连通性 (ICMP)。
traceroute
/ mtr
: 显示数据包从源到目的经过的路由路径及各跳延迟。
netstat
/ ss
: 查看本机网络连接状态、监听端口、路由表等。
telnet
/ nc
(netcat): 测试特定端口是否可达。
dig
/ nslookup
: 查询 DNS 记录。
curl
/ wget
: 发起 HTTP/HTTPS 请求,检查 Web 服务响应。
tcpdump
/ wireshark
: (高级) 抓取和分析网络数据包,用于深度问题排查。
总结:网络是基础中的基础
对于 SRE 来说,网络不再是“别人的事”。它是我们所维护的分布式系统的生命线。理解这些基础概念,能够熟练使用基本的诊断工具,将极大地提升你定位和解决线上问题的能力,并帮助你设计出更健壮、更高可用的系统架构。
暂无评论内容