2.3 互联网是怎么工作的
从 web 角度讲清互联网的底层概念:IP、域名、DNS、端口号、服务器。
课时概要
网页不是凭空出现的。浏览器里看到的东西,总得先来自某个地方。这一节先从做一个本地 index.html 开始,再把问题推远一步:浏览器怎么通过网络找到另一台电脑上的内容?讲清 IP、域名、DNS、端口各自在这条链路里扮演什么角色。
以上为本节课官方讲义的开场,非观看笔记;只有跟完这一节才算自己的理解。
视频:【零到全栈】2.3-互联网是怎么工作的 | 时长 20:01 | 模块 2 · 计算机与互联网
本节要点
- 网页可以先只是你电脑里的一个 html 文件:浏览器能打开本地文件,也能访问远程电脑上的内容。
- 服务器 = 一台联网的、持续对外提供内容、接收请求、返回结果的电脑。
- 域名 → DNS → IP → 服务器 → 端口 → 返回内容,就是输入网址后的完整链路。
- 域名是给人记的,IP 是给机器找路的,DNS 负责翻译,端口是同一台机器上不同服务的入口。
80= 普通网页(http),443= 加密网页(https)。- 两个方向:浏览器发请求(request),服务器回响应(response)。
笔记正文(讲义整理)
先做一个本地网页
先用上节课的终端命令,在家目录建第一个项目文件:
cd ~
mkdir zero-to-tech
cd zero-to-tech
touch index.html
往 index.html 里写一段最基本的网页代码(页面结构 + 文字内容),保存后用 cat ~/zero-to-tech/index.html 确认写进去了。然后用 open ~/zero-to-tech/index.html 直接用浏览器打开它。
代码文件和网页是什么关系
现在你电脑里同时存在两样东西:一个 index.html 文件、一个浏览器里打开的网页。它们的关系是:
- html 文件是网页内容的源文件;
- 浏览器负责读取这个文件,把它显示成网页。
你在 VS Code / Vim 里改的是代码文件,浏览器里看到的是它被读取、解释之后的结果。到这里网页就不抽象了——它完全可以只是你电脑里的一个文件。
从本地到远程:那台电脑叫服务器
把问题推远一步:浏览器既然能打开你自己电脑里的文件,能不能打开其他电脑上的内容?能,这正是你每天在做的事——访问网站,本质就是你的浏览器正在通过网络访问另一台电脑上提供的内容。
那台愿意持续对外提供内容、接收请求、返回结果的电脑,就叫服务器。它可以提供网页文件、图片、接口数据、登录入口。
找到服务器:IP 地址
网页内容在另一台电脑上,浏览器要做的第一件事就是找到那台电脑。现实里找楼需要地址,网络里一台联网设备也需要地址——IP 地址,比如 120.55.66.77。这种地址对机器很方便,对人不友好。
域名:给 IP 起个好记的名字
如果所有网站都靠记 IP,不好记、不好读、不好传播,换地址也麻烦。所以有了域名:baidu.com、github.com、google.com——给机器地址起一个更方便人记忆和输入的名字。
DNS:把域名翻译成 IP
你输入的是域名,浏览器真正要找的是 IP,中间谁来转换?DNS——一个把域名翻译成 IP 地址的系统。输入 github.com 后,浏览器先问 DNS:它对应哪台机器?查到 IP 才能继续往下访问。
端口:找到具体服务
找到服务器还没完——一台服务器上可能同时跑好几个服务。浏览器还要确认:这次连这台电脑上的哪一个服务?端口就是同一台电脑上不同网络服务的不同入口,用数字表示。后面最常遇到两个:
80:普通网页访问(http)443:HTTPS 加密访问
访问 http://xxx.com 就是请求服务器的 80 端口;https://xxx.com 就是访问 443 端口。
整条链路:输入网址后发生了什么
把整件事连起来——在浏览器输入域名回车后:
- 你在浏览器里输入一个域名;
- 浏览器先去查这个域名对应的 IP;
- DNS 把 IP 地址告诉浏览器;
- 浏览器根据 IP 找到那台服务器;
- 再通过某个端口访问这台服务器上的具体服务;
- 服务器把网页内容返回给浏览器;
- 浏览器把这些内容显示成你看到的网页。
两个方向:从你发出去的叫请求(request),服务器回来的叫响应(response)。
和之前 GFG 笔记的连接
这一节讲的「请求 / 响应」,正是 GFG Web 开发概览里说的 client-server handshake(客户端与服务器握手)和 HTTP protocol;而「自己写一台监听端口、收到请求就返回响应的服务器」,就是 GFG 笔记里 Flask / FastAPI 在干的事——课程模块 5 用 FastAPI 写第一个接口时,你做的就是这件事。
| 这一节的概念 | 后面 GFG / 课程里的样子 |
|---|---|
| 请求 request / 响应 response | HTTP protocol:浏览器怎么把请求发给服务器、服务器怎么回 |
| 服务器(监听端口) | Flask / FastAPI 应用:一行 run 就是一台跑在某端口上的服务器 |
| 域名 → DNS → IP → 端口 | 部署上线后:买的域名经 DNS 指到你云服务器的 IP,Nginx 监听 80/443 |
延伸阅读:Python for Web Development(GFG)。
关键概念
- html 源文件 vs 网页:源文件是代码,浏览器把它读取、解释成你看到的网页。
- 服务器:一台联网的、对外持续提供内容的电脑。
- IP 地址:联网设备在网络中的地址,机器之间找路用。
- 域名:给 IP 起的好记名字,给人用。
- DNS:把域名翻译成 IP 地址的系统。
- 端口:同一台服务器上不同服务的入口(
80普通网页 /443加密网页)。 - 请求 / 响应:浏览器发出去的叫 request,服务器回来的叫 response。
代码 / 实操
cd ~
mkdir zero-to-tech
cd zero-to-tech
touch index.html
# 往 index.html 写一段最基本的 html(讲义里的「你好,互联网」示例)
cat ~/zero-to-tech/index.html # 确认文件内容
open ~/zero-to-tech # 访达打开文件夹
open ~/zero-to-tech/index.html # 直接用浏览器打开本地网页
我的收获
- 网页不是凭空来的:它要么是你电脑里的一个文件,要么是远程服务器上的文件——浏览器只是负责读取和显示。
- 输入网址后的链路 = 域名(人记)→ DNS(翻译)→ IP(找机器)→ 端口(找服务)→ 服务器返回内容。
- 端口是同一台电脑上的不同入口:一台服务器可以同时跑好几个服务,80 和 443 是最常见的两扇门。
待深入
(待填:没听懂、想回头查的。)