IP 地址决定是哪台电脑
接入互联网的电脑都带一个唯一地址,那就是 IP 地址。
样子是用点隔开的四个数字,比如 192.0.2.10,每一位取 0 到 255。范围之所以这样定,是因为一位是 8 比特,能表示 256 种可能。
知道这个地址,就确定了是互联网上的哪台电脑。你的笔记本也有 IP。上一篇说自己的电脑也能当服务器,指的就是这个。
端口决定是那台电脑的哪号门

可是一台电脑做的事不止一件。既跑网页服务,也跑数据库,还开着开发工具。光有地址无法判断该去哪一个。
所以门有很多扇。就像一个港口有很多道闸口,每道闸口的手续不同。闸口的编号就是端口。
有些号码按惯例固定了下来。80 是未加密的网页,443 是加密的网页。开发时看到 3000 或 8000 也是同理,那是这些工具惯用的号码。
归纳起来,请求是发往某台电脑的某号门。需要的不是一个地址,而是两个。
| 端口 | 用途 | 什么时候会看到 |
|---|---|---|
| 80 | 未加密的网页 | 以 http 开头的地址 |
| 443 | 加密的网页 | 以 https 开头的地址 |
| 3000 | 前端开发服务器 | npm run dev 运行中 |
| 8000 | 后端开发服务器 | FastAPI 等运行中 |
| 5432 | PostgreSQL | 数据库连接配置 |
域名就是把数字改写成名字
人记不住四个数字。比别人家的电话号码还难记,也没法印出来告诉别人。所以给它起名字。
买下域名后,销售方会向全球注册机构登记「这个名字对应这个 IP」。这张对照表就是 DNS,即域名系统的缩写,你可以在域名商的设置页里自己改这些对应关系。
名字前面那一截叫子域名。www 最常见,也会用 api 或 blog。用它的目的是在同一个名字下把流量分到不同服务器:www 去网页服务器,api 去后端服务器。不加前缀直接用名字本身同样可行。
那端口呢?浏览器替你填。以 http 开头就用 80,以 https 开头就用 443。所以我们从不在地址栏里敲端口号。
人输入的 https://www.example.com/insights
浏览器拼出的 协议 https → 端口 443
名字 www.example.com
DNS 查询 → 192.0.2.10
路径 /insights
实际请求 向 192.0.2.10 的 443 号门 请求 /insights页面打不开时该查的三处
懂了这个结构,出问题时要查的地方就收窄到三处。
第一,域名是否指向正确的 IP。如果刚改过 DNS 设置,传播到全球需要时间。在下判断之前有一段必须等待的窗口。
第二,那个 IP 上的服务器是否活着。域名可能解析得好好的,而那台电脑关机了或上面的程序已经死掉。
第三,该开的端口是否真的开着。服务器活着而防火墙挡住了那道门,请求就到不了。用云服务时,在安全组设置里放行这道门。
不知道在哪一处就去搜索,是搜不出答案的。反过来收窄到其中之一,搜索词会变得非常具体。
