网络基础 101 #2:互联网到底是如何运作的
Source: Dev.to
简短的介绍(为什么写这篇)
我正在为 DevOps 学习网络,并公开记录学习过程。本文是 Networking 101 系列的一部分,以初学者的视角撰写。我会分享自己的理解、困惑以及学习到的内容。
为什么 DevOps 工程师需要关注网络
- 网络可靠性直接影响部署流水线、服务发现和可观测性。
- DNS、防火墙或 TLS 证书配置错误是生产事故的常见原因。
- 理解端到端请求流有助于更快定位问题并设计更具弹性的架构。
核心网络思维模型
从浏览器请求到服务器响应
-
用户输入 URL – 例如
https://myapp.com并按 Enter。 -
DNS 解析 – 浏览器向操作系统请求
myapp.com的 IP 地址。- 若已缓存,操作系统会立即返回 IP。
- 否则操作系统会查询 DNS 解析器,解析器会遍历 DNS 层级直至得到地址(例如
13.234.56.78)。 - 若 DNS 解析失败,请求在此终止。
-
端口选择 – 协议决定端口:
http://→ 端口 80https://→ 端口 443(加密)
-
TCP 握手 – 客户端发起连接:
SYN → Server SYN‑ACK ← Server ACK → Server若此步骤失败,会出现 Connection refused 或 Connection timed out 等错误(通常由防火墙、关闭的端口或服务停止导致)。
-
TLS 握手(仅限 HTTPS) – 客户端与服务器协商加密、交换证书并建立安全通道。失败会出现 “Your connection is not private” 或证书错误等提示。
-
HTTP 请求 – 此时浏览器发送实际请求,例如:
GET / HTTP/1.1 Host: myapp.comHTTP 运行在 TCP 之上,TCP 运行在 IP 之上,IP 再运行在底层网络之上。
-
服务器处理 – 操作系统收到数据包,TCP 将负载交给 Web 服务器(Nginx、Node 等),服务器执行业务逻辑并生成响应,例如:
HTTP/1.1 200 OK -
响应传输 – 响应沿着 TCP → IP → 网络返回浏览器,浏览器解析 HTML、加载 CSS/JS,并可能发起额外请求(一次页面加载通常涉及多次网络往返)。
Browser
↓ DNS (name → IP)
↓ TCP connection
↓ TLS handshake (HTTPS)
↓ HTTP request
↓ Server processing
↓ HTTP response
↓ Browser renders page
常见故障点
| 步骤 | 常见故障 |
|---|---|
| DNS | 记录错误、缓存过期 |
| TCP | 端口关闭、防火墙阻断 |
| TLS | 证书过期或不匹配 |
| HTTP | 5xx 服务器错误 |
| Server | 应用崩溃、超时 |
自上而下调试,切勿随意排查。
实操命令
| 层级 | 命令示例 |
|---|---|
| DNS | dig myapp.com nslookup myapp.com |
| 可达性 | ping 13.234.56.78 |
| TCP | nc -vz 13.234.56.78 443 telnet 13.234.56.78 443 |
| HTTP | curl -I https://myapp.com |
| TLS | curl -v https://myapp.com(显示握手细节) |
这些命令直接对应上面的步骤:DNS 必须解析成功后才能尝试 TCP 连接;TCP 连接成功后才能发送 HTTP 请求;TLS 在 TCP 之上提供安全层。
资源
- GitHub 仓库 – 本系列的所有笔记、图示和学习资源:
欢迎反馈——如果发现缺少的工具类别、错误的假设或更好的学习路径,请在评论中指出。