指定"主机名"时,是否还需要指定端口?

分享于 

3分钟阅读

互联网

 

问题:

https://en.wikipedia.org/wiki/Virtual_hosting

基于名称的虚拟主机对同一IP地址使用多个主机名。

"主机名"对应于IP地址或者一对IP地址和端口?

指定"主机名"时,是否还需要指定端口?

如果有问题,只考虑虚拟主机。

谢谢。


回答 1:

主机名与 {ipaddress,port} 元组不对应。 主机名只是服务器的名称,它应该可以解析为一个或者多个IP地址。 端口与主机名称根本没有关系。


回答 2:

"虚拟主机"仅仅是一个软件的特性,它利用了额外的上下文,在一个请求中以不同的方式进行行为。

要注意的是,tcp/IP本身并不知道主机名的任何内容;主要目的是查找IP地址。

典型的示例是使用基于名称的虚拟主机的HTTP服务器,它的工作方式如下:

  • 用户请求一个 URL。 域名在DNS中查找,以查找IP地址。
  • TCP连接被打开到特定的IP地址和端口。 ( 对于 HTTP,默认为端口 80 ;对于 HTTPS,端口 443 )。
  • 客户端发送该连接的请求,其中包括由正在使用的协议所指定的任何信息。
    • 在 HTTP 1.1中,这包括"主机"头,这是用户查找IP地址的域名。
    • 为了安全连接,TLS握手可以包含一个"服务器名称指示"字段,以便在认证之前可以使用它。
  • 现在,监听IP地址和端口的服务器软件包含所有三个信息: IP地址,端口号和主机名;它可以使用这些来确定要应用到请求的配置。 这里配置是"虚拟主机"。

回答 3:

主机名称由 DNS ( 或者其他名称解析,如 hostfile ) 处理。 Webservers侦听 ip/socket,但当运行虚拟主机时,它们还查看用于请求该网页的FQDN的请求头。

当运行虚拟主机的web服务器响应请求时,查看请求头是否来自它知道的主机。 换句话说,如果我有一个服务器的虚拟主机将指向服务器的IP,它正在监听默认的http/s 端口的监听服务器。 基于配置,可以打开/关闭每个虚拟主机响应的端口,但是从 ip/port透视图启用。

同时DNS可以有多个ip地址解析为相同的名称,反之亦然。



相关文章