每日一个计算机小知识:DNS和hosts文件

每日分享一个有趣的计算机小知识,今日话题:DNS和hosts文件

DNS 是 Domain Name System 的缩写(网上也有的地方说是 Domain Name Server 域名服务器的缩写,其实这是误传,只是从英文简写角度来说首字母简写也是 DNS),中文叫域名系统,是互联网中的核心基础设施,它负责域名和对应的 IP 地址的映射。

简单点说 DNS 就相当于整个网络世界的通讯录,Host 主机相当于房子,IP地址相当于门牌号,通过门牌号也能直接找到朋友家,但是当朋友变多了就记不住这么多门牌号了,但是我知道朋友的名字(就相当于域名),这下想要去谁家,就先打个电话问下 DNS:我想去我的朋友小花家,DNS里就能找到你朋友家对应的门牌号,然后你就可以直接去了。

在1983年,美国人保罗·莫卡派乔斯最早提出了关于域名系统的详细架构,并开发了世界上第一个DNS域名系统服务器:Jeeves。在这之前如果想上网,需要依赖电脑本地的一个 hosts.txt 文本文件,文件中记录了网络地址和对应的 Host 主机名,就像下面这样的:

bash 复制代码
 # 主机地址      主机名      状态
 43 decimal     ucla       ACTIVE   # 美国加州大学洛杉矶分校的主机
 44 decimal     sri        ACTIVE   # 美国斯坦福研究院的主机
 45 decimal     ucsb       ACTIVE   # 美国加州大学圣巴巴拉分校的主机
 46 decimal     utah       ACTIVE   # 美国犹他大学的主机

这里的主机地址是NCP协议,所以看着和咱们现在的IP地址不一样。这个文本文件是需要人工手动维护的,如果哪个地址有更新就需要在自己电脑上手动更新。(关于hosts.txt的原始资料:github.com/ttkzw/hosts...

早期计算机只有大学或科研机构使用,用户也只有科研人员,整个网络里的Host也有限,大家可能都相互认识。随着接入网络里的主机增多,还有个人电脑的兴起,靠人工手动来维护整个网络世界的通讯录显然不现实,这也是后面IP、域名和DNS诞生的缘由。

尽管现在我们上网已经不需要自己手动维护 hosts.txt 文件,但是现在的电脑里依然能找到这一历史技术的痕迹,也就是我们现在电脑上的 hosts 文件,windows在这个目录下 C:\Windows\System32\drivers\etc\hosts ,macOS和Linux在这个目录下 /etc/hosts

bash 复制代码
127.0.0.1       localhost
::1             localhost

# 其他示例
192.168.1.1    cafe123.cn

默认只有本地回环地址 127.0.0.1 的映射,也就是让你在浏览器中输入 localhost 的时候能直接访问自己的本地主机设备,常用于本地开发,比如前端开发常用的 localhost:8080。

其实你也可以自己随便修改成 xiaoming,这样你在浏览器里输入 xiaoming:8080 也能访问你本地的服务。

除此之外,还可以用来解决网络访问问题,比如很多人访问 github 比较慢或者打不开,就可以通过修改自己本地电脑上 hosts 文件的方式解决。

当请求网络的时候,我们的电脑会先查看本地的 hosts 文件,如果里面已经记录了对应地址,那就不会再去向 DNS 服务器询问你朋友家的门牌号,而是直接去到对应的 Host 主机。

相关推荐
王桑.1 小时前
Spring中IoC的底层原理
java·后端·spring
IT_陈寒2 小时前
Redis性能翻倍的5个冷门技巧,90%开发者都不知道的深度优化方案
前端·人工智能·后端
锥锋骚年2 小时前
golang 发送内网邮件和外网邮件
开发语言·后端·golang
雨雨雨雨雨别下啦2 小时前
Spring AOP概念
java·后端·spring
on the way 1232 小时前
day04-Spring之Bean的生命周期
java·后端·spring
代码笔耕2 小时前
面向对象开发实践之消息中心设计(二)
java·后端·架构
云水木石2 小时前
Rust 语言开发的 Linux 桌面来了
linux·运维·开发语言·后端·rust
法欧特斯卡雷特2 小时前
Kotlin 2.3.0 现已发布!又有什么好东西?
后端·架构·开源
a努力。3 小时前
小红书Java面试被问:ThreadLocal 内存泄漏问题及解决方案
java·jvm·后端·算法·面试·架构
serendipity_hky3 小时前
【go语言 | 第4篇】goroutine模型和调度策略
后端·性能优化·golang