您的位置:首页 > 理论基础 > 计算机网络

hosts文件详解--localhost和127.0.0.1

2018-02-03 22:40 260 查看
localhost是一个域名,127.0.0.1为IP地址。Windows系统中,约定127.0.0.1为本地IP地址。localhost是其对应的域名。配置是在hosts文件中设置的,Windows下该文件位置为:
C:\Windows\System32\drivers\etc
目录下hosts文件。

hosts文件

那么这个hosts文件的作用是什么呢?其是它是一个没有扩展名的系统文件,可以用记事本等工具打开,作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析。

Hosts文件配置的映射是静态的,如果网络上的计算机更改了需要及时更新IP地址,否则将不能访问。

众所周知,一次完成的HTTP请求过程可以分为以下几步:

首先在浏览器中输入网址

浏览器根据域名解析IP地址

浏览器根据解析的IP地址与web服务器建立一个TCP连接

浏览器给服务器发送HTTP请求

服务器的永久重定向响应

浏览器跟踪重定向地址

服务器处理请求

服务器发回一个HTTP响应

释放TCP连接

客户端浏览器解析HTML内容

其中的第二步就和上面提到的hosts文件有很重要的联系。浏览器访问网站,要首先通过DNS服务器把要访问的网站域名解析成一个唯一的IP地址,之后,浏览器才能对此网站进行定位并且访问其数据。

在引入DNS(Domain Name System,域名系统)之前,网络中的主机是将容易记忆的域名映射到IP地址并将它保存在一个共享的静态文件hosts中,再由hosts文件来实现网络中域名的管理。最初Internet非常小,仅使用这个集中管理的文件就可以通过FTP为连入Internet的站点和主机提供域名的发布和下载。每个Internet站点将定期地更新其主机文件的副本,并且发布主机文件的更新版本来反映网络的变化。

但是,当Internet上的计算机迅速增加时,通过一个中心授权机构为所有Internet主机管理一个主机文件的工作将无法进行。文件会随着时间的推移而增大,这样按当前和更新的形式维持文件以及将文件分配至所有站点将变得非常困难,甚至无法完成,于是才有了DNS服务器。

操作系统规定,在进行DNS请求以前,先检查自己的Hosts文件中是否有这个域名和IP的映射关系。如果有,则直接访问这个IP地址指定的网络位置,如果没有,再向已知的DNS服务器提出域名解析请求。也就是说Hosts的IP解析优先级比DNS要高。

hosts文件的作用:

加快域名解析

方便局域网用户

一般局域网很少假设DNS服务器,访问这些服务器时,就需要输入难记的IP地址,这相当麻烦。(在golang实现跨域访问一文中,之所以ajax请求本地搭建的服务器时,需要输入
http://127.0.0.1:8000/ajax
,而不是
http://localhost:8000/ajax
,就是因为自己的hosts文件中没有配置相关IP信息。

屏蔽网站

对于一些弹窗类的垃圾网站,我们可以利用Hosts把该网站的域名映射到错误的IP或本地计算机的IP,这样就不用访问了。在WINDOWS系统中,约定 0.0.0.0是错误的IP地址。

顺利连接系统

一些数据库服务器,在访问时如果直接输入IP地址是不能访问的,只能输入服务器名才能访问。那么我们配置好Hosts文件,这样输入服务器名就能顺利连接了。

虚拟域名

很多时候,网站建设者需要把”软环境“搭建好,再进行上传调试。但类似于邮件服务,则需要使用域名来辅助调试,这时就可以将本地 IP 地址与一个”虚拟域名“做地址指向,就可以达到要求的效果。如:
127.0.0.1   网站域名


设置域名时注意:IP地址前面的“#”号需要去掉,例如下面的hosts文件,192.30.255.113的IP地址前面没有“#”。

# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

# localhost name resolution is handled within DNS itself.
#   127.0.0.1       localhost
#   ::1             localhost
192.30.255.113  github.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息