本文目录 ↓

WIKI/vibe coding扫盲

一个网址的背后

可视化演示:01 · 一次 HTTPS 请求。 | 网络请求可视化

一

现在,我给大家一个地址:

www.example.com

这个东西叫做什么?它叫:**域名。**域名可以简单理解成:**方便人类记忆和使用的一种名字。为什么需要名字?大家可以想象一下,如果我告诉你:“你去找一个叫张三的人。”你可能很容易就找到了。但是如果我告诉你:去找身份证号为**的人,你可能就需要花一段时间了(这里我们忽略人名的重复性)。这是因为人对于有意义的文字的记忆远比一串数字的记忆更方便。你可以把网址大致理解为人名,而IP地址理解为身份证号。这里引入了一个新概念:IP地址。现在你可以先那么理解,以后你们一定会经常看到它,如果有兴趣,你们可以自行探索。但是计算机是相反的,计算机对于数字的分类和计算是更方便的。网站背后真正需要找到的是一台连接在网络上的计算机或者网络服务。而计算机网络中经常使用IP地址来标识网络中的设备。比如一个 IP 地址可能长这样:142.250.xxx.xxx。你不需要记这个具体数字。你只需要知道:域名更方便人记忆,而 IP 地址更适合计算机进行网络通信。所以:

人
 ↓
www.example.com
 ↓
DNS
 ↓
IP地址
 ↓
找到目标服务器

这里又出现了一个新的东西:DNS。DNS 可以简单理解成:互联网里的“电话簿”。你知道一个人的名字。通过电话簿找到他的电话号码。类似地:你知道一个网站的域名。通过 DNS 找到它对应的 IP 地址。这里有一个很简单的场景:假设没有域名。以后我们上网都必须输入 IP 地址。比如:“我要访问学校官网。”你不能输入学校官网的网址。你必须输入:“xxx.xxx.xxx.xxx”,可能就会带来一些困扰了

还有一个问题:如果今天网站换了一台服务器,IP变了。怎么办?你所有记忆中的地址都可能失效。所以我们实际上需要把两个东西分开:人记得住的名字和网络通信需要的地址。这就是域名和 IP 存在的意义之一。于是,当你输入:www.example.com,浏览器或者系统就需要想办法知道:“这个名字对应哪个 IP?”于是 DNS 帮忙完成:域名 → IP地址。这一步完成之后,电脑才真正知道:“我要去网络中的哪里寻找这个服务。”

二

我们的电脑找到了服务器。但这里又出现一个问题:服务器是一台电脑,但是一台电脑上可能同时运行很多程序。比如一台服务器上可能同时运行:

  • 一个网站;
  • 一个游戏服务器;
  • 一个数据库;
  • 一个聊天机器人;
  • 一个文件服务。

那么问题来了:你到底要找哪一个?这时候我们会遇到:端口。你现在不需要深入理解端口。可以先把它理解成:一栋大楼里的不同房间。IP地址帮助我们找到:哪一栋楼。端口帮助我们找到:哪一个房间。这栋楼的本身维护着一个记录,对应着某个网址传过来的请求对应着什么端口。所以可以简单理解为:

域名
 ↓
找到IP
 ↓
找到服务器
 ↓
找到对应端口
 ↓
找到对应服务

你会发现,原本我们以为:“打开一个网页。”是一件非常简单的事情。但现在我们已经把它拆成了好几层。

三

现在我们已经:找到了服务器。也知道:应该找哪个服务。那接下来呢?服务器总不能自己猜。所以你的电脑需要向服务器发送一个请求。浏览器告诉服务器需要什么,服务器把对应的数据返回给你。这个过程就是:请求 → 响应

英文就是:

Request → Response

这是互联网中非常重要的一种基本模式。

你的浏览器获取到服务器回复的响应后,会渲染其中的代码,并将最终的画面展示给你。

四

现在我们把刚才所有东西串起来。

假设你在浏览器输入:

https://www.example.com

然后按下回车。大致可以理解成:浏览器看到www.example.com(如果不指定端口,就默认是443),通过 DNS 查询,从而知道它对应什么 IP。得到了 IP 地址,就知道了要找网络中的哪台服务器。下一步就是建立网络连接,找到对应的服务。然后浏览器向服务器发送请求:“请把这个网页给我。”服务器收到请求。然后处理这个请求。服务器返回网页相关的数据。数据通过网络进行传输,浏览器收到数据。然后把这些数据解析、处理、渲染。最后网页出现在你的屏幕上。所以我们最开始看到的:“输入网址 → 网页出现”

实际上可以拆成:

输入网址
 ↓
域名
 ↓
DNS
 ↓
IP地址
 ↓
服务器
 ↓
请求
 ↓
服务器处理
 ↓
响应
 ↓
浏览器处理
 ↓
网页出现

五

对于一些“看似”没有必要去了解或者解决的问题,如果你很幸运地有时间去了解或者解决,那不妨去试试。你在这个过程中积累的知识、经验和手段,将是你遇到必须解决的问题时的支撑。

END OF NOTE.浏览全部文档 ↗

输入关键词,搜索文档标题与正文。

搜索整个知识库↑ ↓ 选择 · ENTER 打开