很多人对于ip、域名、DNS等都搞不清楚,关于这个的区别,可能网上很多专业的说的比较难理解,今天筹米网在此就简单地用小例子给大家说清楚这几个的区别,希望对大家有帮助!
先从最熟悉,也是最表层的域名和ip说起。对于域名和ip,打个比方,在我们上学时,教室里坐满了学生,每个学生有他的名字和座位号(假设座位固定好了)。名字就像是这里的域名,ip就是座位号,你想要去某个同学那里,实际就是往那个座位位置去。但是,有个问题,比如我认识这个班一个叫张三的同学,但是我要去到他跟前,可我并不知道他的座位号是多少啊?这时候,就有后面要介绍的DNS出厂了。
DNS在百科的解释是这样的“域名系统是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网”。回到上面座位号的例子,我去找张三的时候,得找个人问他的座位号才行,比如说找他的班主任,班主任肯定有张三的座位号。这里的班主任,就是DNS。
前面说到的好端端的谷歌,怎么不能访问,初步的处理,就是有人动了DNS的解析,给了你一个错误的IP地址。用座位号的例子来说,这个班主任故意骗了你,给了你一个根本没有或者你没法去的座位号。
我们知道了访问域名,dns帮忙解析到ip,然后访问这个地址的资源呈现给你,那还有hosts和nginx和他们又有什么关系。
先说hosts,hosts文件在各pc系统里都是有的,比如Windows默认在C:WindowsSystem32driversetc目录,他里面的有效内容,就是一个个的ip和域名映射关系。用上例来说,就好比张三班上的班长,我去找他时,先找他们班长,班长要是知道张三的座位号,我就不用去找他们班主任了。实际上HOSTS和DNS也是这种关系,默认下域名解析会先从HOSTS文件开始,若找到了映射,就直接去这个地址了。你可以做一下很简单的尝试,来验证它。
把一个非https的站点域名映射为别的ip地址,最简单的地址就是你的本地127.0.0.1。如果你本地没启对应的可访问服务,你在访问这个站点,就会变成什么也访问不到了,因为实际在访问你配置的这个地址127.0.0.1。
再来说nginx。上面说到修改hosts来访问你想要的域名映射到的ip。这里先启用ng配置一个监听本地127.0.0.1默认80端口的服务,把这个资源定位到你本地的一个浏览器可展示文件,比如这里的D盘/home目录下的index.html文件。
location / { root D:/home; index index.html; } 再访问这个域名时,你的浏览器展示的,就是这个页面内容了。
这在一些前后端分离的应用中,运用得非常广泛。比如在服务器上监听自己的ip和某个对外端口,将它指定到某个前端文件,就可以给访问者展示你的内容了。
这些内容,也经常被一些黑客利用,使你在访问某个域名时,实际到达的确实一个伪造的网站,这个网站往往会把外表做得很真站点的一模一样,但它背后的数据,却都是假的,这时你若输入用户名密码登录,或是其他数据输入,就会很危险。