你不知道的 hosts 設定檔

今天才知道。

與 DNS 的關係

根據你的經驗,我們在連線到一個網站之前(例如:google.com)得先連到 DNS 的伺服器,查詢 google.com 是對應到哪個 IP 地址,接著才真的連到 google 的網頁。

但其實在連到 DNS 之前還有一個動作:先到 hosts 檔案裡面看有沒有紀錄

hosts 是一個用來紀錄「域名」跟「IP 地址」的純文字檔案,可以想成是電話簿的感覺。這個檔案通常放在 C:\Windows\System32\drivers\etc 裡面,如果你打開來看大概是長這樣:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 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

127.0.0.1 iccert.nhi.gov.tw #mNHIICC use this.

我們一般最常見的 localhost(域名)會對應到 127.0.0.1 這個 IP 地址。

127.0.0.1 是一個比較特殊的 IP 地址,代表「這台電腦」,意思是說你不管用哪台電腦去連到 127.0.0.1,都等同是「連到自己的電腦」。

所以如果在 hosts 檔案加上:

1
127.0.0.1  github.com 

當我下次去連 github.com 的時候就會自動把我帶到 127.0.0.1 這個地址。

所以這能幹嘛嗎?

正當的用途是用在測試網站或伺服器的時候比較常用到,而比較不正當的例子可能會是你用盜版軟體的時候,它可能會要你去修改 hosts 的內容,例如:

1
127.0.0.1 kqwerkeitwjiqjgioqqr

你可以想一件事,正常的情況下一個軟體會透過發送 request 到一個公司的伺服器來確認是否為正版,但如果直接把這個 request 導向其他地方或者是根本不存在的地方呢?這樣不就可以略過審核的動作了嗎?

所以有些時候會要改 hosts 檔案的內容就是這樣子,但追根究柢來說 hosts 只是一本電話簿,在你先去跟 DNS 詢問之前,先查自己電腦裡的電話簿,如果從自己的電話簿裏面就可以查到,就不用在去跟 DNS 問地址了。

到底什麼是 RESTful? 關於 IP 地址
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×