hosts文件是一個用於儲存計算機網絡中各節點信息的計算機文件。這個文件負責將主機名映射到相應的IP地址。hosts文件一般用於補充或取代網絡中DNS的功能。和DNS不一樣的是,計算機的用戶能夠直接對hosts文件進行控制。html
爲了方便用戶記憶,咱們將IP變成一個個的域名來輸入到瀏覽器進行訪問。而這使得訪問網站時要先將其域名解析成 IP 。DNS (Domain Name Server) 的做用就是進行 IP 解析,把域名對應到 IP。
在 Great FireWall 的 5 種封鎖方法中,有一種簡單而效果很好的方法是 DNS 污染。GFW 會對 DNS 的解析過程進行干擾,這會使對某些被幹擾的域名返回一個錯誤的 IP 地址給你的主機,使你沒法正確鏈接到你要的服務器上讀取正確的信息。
在 Great FireWall 的 5 種封鎖方法中,有一種簡單而效果很好的方法是 DNS 污染。GFW 會對 DNS 的解析過程進行干擾,這會使對某些被幹擾的域名返回一個錯誤的 IP 地址給你的主機,使你沒法正確鏈接到你要的服務器上讀取正確的信息。
Hosts 文件原本是用來提升解析效率。在進行 DNS 請求之前,系統會先檢查本身的 Hosts 文件中是否有這個地址映射關係,若是有則調用這個 IP 地址映射,若是沒有再向已知的 DNS 服務器提出域名解析。也就是說 Hosts 的請求級別比 DNS 高。當你的 Hosts 文件裏面有對應的 IP 時,它就會直接訪問那個 IP,而不用經過 DNS。
因此,
當咱們直接將 Google、Twitter、Facebook 之類的 IP 放入 Hosts 文件後,就能夠跳過 DNS 的解析這一步,直接就行 IP 訪問,不受 GFW 的 DNS 污染干擾了。
補充一條,就是爲何 Hosts 的 IP 要時不時更改,爲何 FB、Twitter 會仍舊上不去。是由於 GFW 的第二個大招,IP 封鎖。好比訪問國外一個 IP 沒法訪問,Ping 不通,tracert 這個 IP 後發現,所有在邊緣路由器 (GFW) 附近被攔截。換言之,GFW 直接攔截帶有這個 IP 頭的數據包。因此,若是你更改的 IP 被封鎖了,就算你過了 DNS 這一關,也仍舊不能翻過 GFW。
因此hosts纔會頻繁的更新新的ip、域名。
有不少人問:「怎麼製做Google hosts?」
首先要弄明白https、「google.com」(域名)、ip地址、ping都是作什麼的。
一、先說https,
Hypertext Transfer Protocol Secure是
超文本傳輸協議和
SSL/TLS的組合,用以提供加密通信及對網絡服務器身份的鑑定。簡單的說就是加密的http協議。說到http協議,你們應該都知道默認是採用80端口,而https協議默認爲443端口。
二、域名,簡單說就是ip地址的名字,好記唄。上面問題中的「google.com」還 不算是完整域名,而是一個域 的名字(簡稱域)。有人說前面要加的「www」前綴,又叫主機,與域造成完整域名「www.google.com」。這就是爲何要加」www」,由於「google.com」是一個域,只有指出某一主機才能ping。問題又來了,可爲何有時只用域,如「google.com」也能ping,也能打開網頁呢?這是由於在DNS中特別設置了主機解析記錄。(我的自認爲作了這個設置的都是注重細節的好網站)跑偏了。。。
三、ip地址,估計不須要多說了。
四、ping,網絡測試工具,固然用來得到ip是可行的。
五、GoGo Tester尋找IP做爲最後解決方案(目前成功率很低)
http與https
http是HTTP協議運行在TCP之上。全部傳輸的內容都是明文,客戶端和服務器端都沒法驗證對方的身份。git
https是HTTP運行在SSL/TLS之上,SSL/TLS運行在TCP之上。全部傳輸的內容都通過加密,加密採用對稱加密,但對稱加密的密鑰用服務器方的證書進行了非對稱加密。此外客戶端能夠驗證服務器端的身份,若是配置了客戶端驗證,服務器方也能夠驗證客戶端的身份。github
封域名/內容過濾,用http協議發送數據的時候,牆檢測到你要發送的域名,而後給你過濾掉,返回空或者出錯等。用https能夠解決這個問題,由於牆不知道你發送的是什麼數據。若是用了https,由於沒法檢測內容,因此牆會在dns解析的時候,返回給你錯誤ip,dns沒有加密,因此一樣雖然用了https,但因爲dns解析錯誤,仍是沒法訪問網站。因此在hosts給域名指向正確的ip,那麼咱們就能夠跨越過「長城」了。
https 網站如何製做hosts?如得到https://google.com 的ip地址,ping命令不行。
從1中可知,http和https都是協議,區別只是對應端口不一樣。那麼ip呢?其實「 http://google.com「與「https://google.com「在ip解析時是同樣的,只是指向了不一樣端口,這個端口是TCP端口。因此在ping時,是不須要加協議前綴的。只須要ping域名就ok。hosts中同理。
從1中可知,http和https都是協議,區別只是對應端口不一樣。那麼ip呢?其實「 http://google.com「與「https://google.com「在ip解析時是同樣的,只是指向了不一樣端口,這個端口是TCP端口。因此在ping時,是不須要加協議前綴的。只須要ping域名就ok。hosts中同理。