What is hosts?

本文详细介绍了hosts文件的作用及其工作机制。hosts文件能加快域名解析速度、方便局域网用户、屏蔽网站和确保系统顺利连接。文章还提供了不同操作系统下hosts文件的位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

------------------------------------------------------------------------------------------------------------------------------------------------------------

工作机制:
浏览器访问网站,要首先通过DNS服务器把要访问的网站域名解析成一个唯一的IP地址,之后,浏览器才能对此网站进行定位并且访问其数据。
操作系统规定,在进行DNS请求以前,先检查系自己的Hosts文件中是否有这个域名和IP的映射关系。如果有,则直接访问这个IP地址指定的网络位置,如果没有,再向已知的DNS服务器提出域名解析请求。也就是说Hosts的IP解析优先级比DNS要高。

------------------------------------------------------------------------------------------------------------------------------------------------------------
具体作用:
1.加快域名解析
对于要经常访问的网站,我们可以通过在Hosts中配置域名和IP的映射关系,提高域名解析速度。由于有了映射关系,当我们输入域名计算机就能很快解析出IP,而不用请求网络上的DNS服务器。
注:hosts文件配置的映射是静态的。
2.方便局域网用户
局域网中一般很少架设DNS服务器,访问这些服务器时,要输入难记的IP地址。可以分别给这些服务器取个容易记住的名字,然后在Hosts中建立IP映射,这样以后访问的时候,只要输入这个服务器的名字就行了。
3.屏蔽网站(域名重定向)
对于我们不喜欢的网站或不友好的网站我们可以利用Hosts把该网站的域名映射到错误的IP或本地计算机的IP,这样就不用访问了。在WINDOWS系统中,约定 127.0.0.1 为本地计算机的IP地址, 0.0.0.0是错误的IP地址。
例子:
    127.0.0.1 # 要屏蔽的网站 A
    0.0.0.0 # 要屏蔽的网站 B
这样,计算机解析域名A和 B时,就解析到本机IP或错误的IP,达到了屏蔽网站
A 和B的目的。
  127.0.0.1 www.3721.com #3721网络实名
  127.0.0.1 www.3721.net #3721网络实名
4.顺利连接系统
对于Lotus的服务器和一些数据库服务器,在访问时如果直接输入IP地址那是不能访问的,只能输入服务器名才能访问。那么我们配置好Hosts文件,这样输入服务器名就能顺利连接了。

------------------------------------------------------------------------------------------------------------------------------------------------------------
文件位置:
hosts文件在不同操作系统的位置是不一样的。以下为hosts文件在不同系统中所处的目录
Windows Vista/7/8/8.1/10: %windir%\system32\drivers\etc\
Windows XP/Millennium:%windir%\
Windows 95/98/Me:%WinDir%\
Linux及其他类Unix操作系统:/etc
Mac OS 9及更早的系统:System Folder: Preferences或System folder(文件格式可能与Windows和Linux所对应的文件不同)
Mac OS X:/private/etc(使用BSD风格的hosts文件)
OS/2及eComStation:"bootdrive":\mptn\etc\
Android:/system/etc/hosts
Symbian第1/2版手机:C:\system\data\hosts
Symbian第3版手机:C:\private\10000882\hosts,只能使用兼容AllFiles的文件浏览器访问,大部分都不行。
iPhone OS:/etc
iPad OS:/private/etc
webOS:/etc


------------------------------------------------------------------------------------------------------------------------------------------------------------

点击进入hosts的详细介绍

在 C++ 中,直接读取 hosts 文件并获取 IP 地址通常不是一个标准操作,因为这涉及到文件 I/O 和解析网络配置数据,而这并不是 C++ 标准库的一部分。但是,你可以使用系统调用或者第三方库来完成这样的任务。以下是一个使用 C++ 的 Boost 库的例子,它可以帮助处理文件操作: ```cpp #include <boost/filesystem.hpp> #include <fstream> namespace fs = boost::filesystem; std::string getHostFromHostsFile(const std::string& hostname) { // 检查路径是否存在 if (!fs::exists("/etc/hosts")) { throw std::runtime_error("hosts file not found"); } // 打开 hosts 文件 std::ifstream hosts("/etc/hosts", std::ios_base::binary); if (!hosts.is_open()) { throw std::runtime_error("failed to open hosts file"); } // 逐行读取,直到找到匹配的行 for (std::string line; std::getline(hosts, line);) { size_t pos = line.find(hostname + " "); // 查找 hostname 后的空格位置 if (pos != std::string::npos) { // 如果找到,提取 IP 地址 size_t ip_start = line.rfind(' ') + 1; size_t ip_end = line.find_first_of('\t', ip_start); return line.substr(ip_start, ip_end - ip_start); } } return ""; // 如果未找到,则返回空字符串 } // 使用示例 try { std::string ip = getHostFromHostsFile("example.com"); if (ip.empty()) { std::cout << "No IP address found for example.com" << std::endl; } else { std::cout << "IP address of example.com is: " << ip << std::endl; } } catch (const std::exception& e) { std::cerr << "Error: " << e.what() << std::endl; } ``` 注意,这个例子假设 hosts 文件的格式是常见的,即每行都包含一个主机名及其对应的 IP 地址,中间由空格分隔。实际应用中,可能需要根据 hosts 文件的具体格式调整代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值