URL 的格式为:
scheme://server:port/pathname
这里的服务器和域名有什么区别?//superuser.com/questions/ask
是一个(相对)URL。
方案省略(http:
)。服务器为superuser.com
。也许服务器就等于域名?
答案1
服务器是一种物理硬件。该硬件具有多个与之关联的 IP 地址。服务器通常通过引用与其关联的 IP 地址之一或指向该 IP 地址的域名来引用。
值得注意的是,一个服务器可以(对于网站来说,通常会)有多个与之关联的域。
从技术上讲,我认为在 HTTP URL 中使用“server:port”是错误的 - 它应该是 domain:port,但无论如何这样做都是常见的做法。在某些寻址方案中(例如 FTP),将其称为服务器是有意义的,因为无论服务器是由与其关联的(任何)域还是其 IP 地址引用,都没有区别。[HTTP 具有额外的逻辑,因此服务器可以确定引用的是哪个域]
答案2
在给定的示例中没有区别。
从某种意义上说,完全限定域名 (FQDN) 就是服务器名称。但它是(顾名思义)完全合格名称。姓名服务器的名称为superuser
,但它位于域中com
。因此全名应为superuser.com
。
答案3
域名是指向托管服务器的 IP 地址的指针。可以将其视为街道地址“示例街道 42”(域名)与该地址上的房屋(服务器)之间的差异。您可以永远争论在这样的例子中,从语义上来说,将域名称为 是否更正确。server
和并不相等,但就示例而言,它们是等价的。domain
server
domain
该语法具有特殊含义。它是“选择或适当”//
的简写。此语法的背景是浏览器对通过 http 协议(未加密)从 https 页面(安全)加载资源有安全限制。当服务器可以通过 http 和 http 提供相同内容时,此语法非常有用。因此,无需让服务器或客户端脚本根据所请求页面的协议决定使用哪种协议,URL 始终以 URL 开头,这样浏览器就可以处理这种复杂性。http://
https://
//
//
例如,在发明这种简写方式之前,您可能会看到如下代码,用于在通过 http 或 https 提供的页面上加载 Google Analytics(分析):
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-xxxxx-y']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script');
ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://')
+'stats.g.doubleclick.net/dc.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
})();
</script>
更现代的版本看起来是这样的:
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-xxxxx-y']);
_gaq.push(['_trackPageview']);
</script>
<script type="text/javascript" src="//stats.g.doubleclick.net/dc.js"></script>
如今,浏览器通常会http
在地址栏中排除 URL 的一部分,大概是为了更接近典型用户实际输入的内容。但是,http
在这种情况下,该部分仍然是隐含的。根据浏览器的不同,可以关闭此行为,以便http
始终显示该部分。在某些浏览器中,http
当您将焦点放在地址栏上时,该部分会变为可见。
答案4
这里的服务器指的是它的地址。
http://74.125.224.72/
这是谷歌的一个 IP。但我怀疑有人能告诉他答案是“74.125.224.72”。
域名只是将 IP 转换为更易于理解的形式,例如
http://google.com/
因此在两种情况下您都放置了服务器。第一种方式是其 IP,第二种方式是其域名,该域名使用 DNS 即时转换为其 IP。