今天才知道。
與 DNS 的關係
根據你的經驗,我們在連線到一個網站之前(例如:google.com
)得先連到 DNS 的伺服器,查詢 google.com
是對應到哪個 IP 地址,接著才真的連到 google 的網頁。
但其實在連到 DNS 之前還有一個動作:先到 hosts 檔案裡面看有沒有紀錄
hosts 是一個用來紀錄「域名」跟「IP 地址」的純文字檔案,可以想成是電話簿的感覺。這個檔案通常放在 C:\Windows\System32\drivers\etc
裡面,如果你打開來看大概是長這樣:
1 | # Copyright (c) 1993-2009 Microsoft Corp. |
我們一般最常見的 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 問地址了。