我读了这本手册,我有点困惑。这是我不理解的:
When your system tries to resolve a hostname to an IP address or determine the
ostname for an IP address, it refers to the /etc/hosts file before using the
name servers
Run Code Online (Sandbox Code Playgroud)
所以:
1)系统何时尝试解析主机名?据我了解,当数据报的标头指定主机名时,对吗?
2)为什么提到hosts之前resolv.conf?
3)主机名解析后,系统转向路由表?
Bru*_*ira 14
1) 通常,您的系统会使用“resolv.conf”上的 DNS 服务器。如果您访问 www.yahoo.com,您的系统将联系 DNS,DNS 返回该地址的 IP 地址,然后您的系统就会知道 www.yahoo.com 地址对应的 IP 地址。
2)它hosts在尝试解析地址之前使用,因为hosts文件用于覆盖您尝试解析的任何地址。即:您可能已经在那里有一个条目,127.0.0.1 localhost告诉系统如果您尝试使用名称“localhost”联系主机,它将使用地址 127.0.0.1 来实现,在这种情况下,它是您 eth0 上的 lopback 接口.
3) 在系统知道主机的地址后,无论是直接查看您的地址,hosts还是通过联系“resolv.conf”中的 DNS 服务器,它都会查看路由表以查看哪些规则解释了如何处理目的地流量到获得的IP地址。
即:假设您的网络上有 2 台计算机,主机名分别为“Ubuntu-One”和“Ubuntu-Two”,每台计算机可能都会在host文件中分配以下内容:
127.0.0.1 localhost Ubuntu-One用于计算机 Ubuntu-One
127.0.0.1 localhost Ubuntu-Two用于计算机 Ubuntu-Two
这是自动完成的,这也是您可以在每个终端上解析“localhost”和“Ubuntu-One”以及“Ubuntu-Two”的原因。
尝试从 Ubuntu-One ping Ubuntu-Two,Ubuntu-One 将联系您resolv.conf文件中的 DNS 服务器,服务器会说“我不知道与该地址相关的任何 IP”,而您的 PC 将回复“未知主机名”。将这一行添加<IPADDRESSFROMUBUNTU-TWO Ubuntu-Two到hostsUbuntu-One的文件中,然后再次尝试 ping 系统会看到在主机文件上来自 Ubuntu-Two 的 IP 地址是 xxxx,然后将检查您的路由表以查看哪个规则适用于该 IP或 IP 范围,并将使用指定的网关(或无)联系主机。这就是为什么hosts以前是resolv.conf。
| 归档时间: |
|
| 查看次数: |
20872 次 |
| 最近记录: |