我输入的 URL 如何导致我在浏览器中看到的最终内容?

How does the URL I type in lead to the eventual content I see in my browser?

我想弄清楚这些是如何协同工作的,互联网上到处都是零零碎碎的信息。

这是我(认为)我知道的:

1) 当您在浏览器中输入 url 时,在域名服务器 (DNS) 中查找,您将收到一个 IP 地址。

2) 您的计算机随后会跟随此 IP 地址到达某处的服务器。

3) 服务器上有名称服务器,可以将您定向到服务器中您想要的特定内容。 -> 这一步我不清楚。

4) 有了这些信息,您的请求就会被接收,服务器会将站点内容中继回给您。

这是正确的吗?我有什么问题?过去一周我进行了大量搜索,我想我缺少的是对所有这些细节如何联系在一起的全局解释。

小问题:

a) 名称服务器如何知道我想要指向哪个站点?

b) 像 GoDaddy 这样的网站如何拥有 urls?为什么我必须向他们支付年费,为什么我不能直接购买 url?

我正在寻找所有这些东西如何协同工作的统一解释。谢谢!

当我在浏览器中放置 URL 时如何加载内容?

关于这个主题有一些非常好的文档,每个步骤都有自己的逻辑和算法,在这里我给你一个演练。

第1步:DNS Lookup:域名转换为IP地址,在此过程中,URL中的域名用于通过查找记录来查找关联服务器机器的IP地址名为 name servers.

的多个服务器

第 2 步:服务请求:一旦知道 IP 地址,就会根据协议以数据包的形式创建服务请求,并使用 IP 地址将其发送到服务器计算机。在浏览器的情况下,通常它将是 HTTP request;在其他情况下,它可以是其他东西。

第 3 步:请求处理:根据服务请求和底层协议,请求由软件程序处理,该软件程序通常位于在上一步中发现其地址的服务器计算机上。根据在服务器程序上编写的逻辑,它将 return 在 HTTP 的情况下进行适当的响应,其称为 HTTP Response

第 4 步:响应处理:在此步骤中,在您的情况下,浏览器的请求程序会收到上一步中提到的响应,并根据协议中的定义呈现并显示它,如果是 HTTP HTTP body被提取和渲染,写在HTML.

名称服务器如何知道我想要指向哪个站点

URL 有一个非常明确的格式,浏览器使用它找到一个 hostname/domain 名称,该名称又被用来找出相关的 IP 地址;名称服务器运行不同的算法来找出正确的服务器计算机 IP。

查找有关 DNS 解析的更多信息 here

像 GoDaddy 这样的网站如何拥有 url?为什么我要给他们交年费,为什么我不能直接买url?

域名是需要管理和监管的资源ICANN他们有一个叫做注册中心的东西,注册商(比如 GoDaddy)从那里获得域名并为您预订;您支付的费用由 ICANN 和注册商分摊。

Registrar 为您做了很多工作,例如设置 name server 提供托管等

从技术上讲,您可以创建自己的域名,但它不会免费,因为您需要创建一个名称服务器,需要将其复制到其他服务器,这样您就可以拥有任何您想要的名称(有太独特了);一个简单的方法是在 linux 中编辑本地主机文件,它位于 /etc/hosts,在 windows 中,它位于 C:\Windows\System32\drivers\etc\hosts,但它在互联网上不好, 因为它不会被其他服务器接受。

(准确详细地描述这个过程可能会花费太多 space 和时间来写,我相信你可以在某个地方 google )。因此,虽然非常简单,但您对正在发生的事情有很好的了解,但需要一些说明(同样,我会有些不精确):

第 2 步:您的计算机确实遵循在第 1 步中收到的 IP 地址,但是设置为该 IP 地址的请求通常包含一条重要信息,称为 'Host header',即您键入的实际名称在您的浏览器中。

第三步:这里不涉及名称服务器,软件(/硬件)通常称为'webserver'(例如Apache、IIS、nginx等...)。一台网络服务器可以为一个或多个不同的站点提供服务。如果有多个,网络服务器将使用 'Host header' 将您定向到您想要的特定内容。

ICAAN 'owns' 域名,注册过程涉及技术和管理工作,因此您需要向注册商支付费用来处理。