理解“管道” – SRE 必备网络基础知识

理解“管道” – SRE 必备网络基础知识


作为 SRE,我们打交道的系统几乎都是分布式的:服务分布在不同的机器、不同的机架、甚至不同的数据中心或云区域。它们之间如何通信?通过网络。当用户访问变慢、服务间调用失败、或者应用无法连接数据库时,很多时候问题就出在网络这个“管道”上。因此,掌握必要的网络基础知识,对于 SRE 诊断问题、设计可靠系统来说,是不可或缺的基本功。

别担心,我们不需要成为网络专家,但理解以下这些核心概念会让你在工作中事半功倍:

1. 网络模型(OSI 与 TCP/IP)

你可能听说过 OSI 七层模型或 TCP/IP 四/五层模型。作为初级 SRE,不必死记硬背每一层的所有细节。关键是理解分层的思想:网络通信是一个复杂的过程,被划分为不同的功能层,每一层负责特定的任务,并与其上下层交互。
实际工作中常已关注的层次

网络层 (Network Layer):核心是 IP 协议,负责在网络中找到目标地址(IP 地址)并进行路由。
传输层 (Transport Layer):主要是 TCPUDP 协议,负责端到端的连接和数据传输。
应用层 (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 是常见的服务访问问题来源。需要会使用 dignslookup 等工具进行诊断。

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 TimeoutSRE 经常需要处理 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 来说,网络不再是“别人的事”。它是我们所维护的分布式系统的生命线。理解这些基础概念,能够熟练使用基本的诊断工具,将极大地提升你定位和解决线上问题的能力,并帮助你设计出更健壮、更高可用的系统架构。

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容