Jer*_*my 10 dns url web http cross-browser
当我学习网络和 DNS 服务器以及其他知识时...我很好奇,您可以通过在地址栏中输入 IP 地址来访问网站吗?
iBu*_*Bug 37
TL;DR这取决于服务器的配置。一个简单的正面例子是one.one.one.one / 1.1.1.1。
我假设您正在听计算机网络课程中关于如何访问网站的常规讲座,其中列出了以下过程:
www.example.com
进入浏览器地址栏并按 Enter 键。www.example.com
并检索其 IP 地址。可能还有其他因素影响上述过程中的某些细节,但我们暂时将这些因素放在一边。
在此过程中,域名实际上使用了两次:一次用于 DNS 查找,另一次用于步骤 3 中的 HTTP 请求。HTTP 是将访问域名发送到服务器的少数协议之一。在上面的示例中,浏览器至少发送到 IANA 服务器(托管www.example.com
)的内容如下:
GET / HTTP/1.0
Host: www.example.com
Run Code Online (Sandbox Code Playgroud)
如果您通过裸 IP 地址访问它(假设是 192.0.2.1),您的浏览器将通过 TCP 流发送:
GET / HTTP/1.0
Host: 192.0.2.1
Run Code Online (Sandbox Code Playgroud)
大多数常见的HTTP服务器(Nginx、Apache、IIS等)都有一个称为“虚拟服务器”的概念,它是根据域名(HTTPHost
标头)选择配置。这就是答案所在的部分:这取决于服务器。某些服务器可能会返回同一站点的裸 IPHost
标头,而另一些服务器可能不会。服务器的行为均按照管理员的配置进行。
对于 Nginx,您可以将服务器 IP 添加到与域名server_name
相同的块中的指令,或者请求被路由到默认块(带有 的块,如果没有 `default_server,则为第一个块)。虽然我对 Apache 或 IIS 都不熟悉,但它们确实有类似的设置。server
server
default_server
有关可能影响示例流程的因素的更多详细信息:
http://www.example.com/
应该是,并在前面添加方案( http://
) 并附加最小路径 ( /
)。www.example.com
两次 A 和 AAAA 记录,分别对应 IPv4 和 IPv6 地址。但这并不影响后续步骤。
https://
.http://
到 的HTTP 301 重定向。https://
https://
。host
标头,而请求行被一组新的伪标头(:method
、:path
和:scheme
)替换:authority
。Jou*_*eek 25
IP 堆栈并不真正“意识到”或“关心”IP。DNS 所做的只是告诉您“此域名位于此 IP”。
从“最简单”的意义上来说,这两种情况没有区别 - 只是您依赖 DNS 来解析 IP 而不是您自己的内存(还有其他机制 - 主机文件本质上是“静态”的,每台机器域名记录)如下就IP协议而言。
但是,如果我们谈论的是网页,则来自网络浏览器的请求将包括它想要通信的主机名之类的内容。即使服务器的 IP 地址以及指向该服务器的两个 Web 域 a.example.com 和 b.example.com 是同一网站,您也可能会获得不同的网页,具体取决于服务器的设置方式。
使用 HTTP - 因此您可能会访问一个网站(或一条错误消息),但不是您可能想要的网站 - IP 可能指向默认页面或只是登录或错误页面。
HTTPS与域绑定,因此您可能会收到可忽略的错误(或不可忽略的错误)
本质上,这取决于 Web 服务器的配置方式。
Tho*_*mas 23
你可以说我疯了,但当前的答案都不包含“标头”一词,这是 Apache、Nginx 等 Web 服务器解析正确站点的最重要部分。主机标头使您能够在单个 IP 上为多个站点提供服务。例如,nginx 会将其与 中配置的内容进行匹配server_name
。如果您想为没有域(仅 IP)的站点提供服务,它将再次匹配标有 的服务器default_server
。