1. 程式人生 > >關於DNS,VPN和Hosts

關於DNS,VPN和Hosts

  • DNS是什麼?

DNS(Domain Name System),域名系統。用來把機器名字轉換成IP地址。網路終端都有一個唯一的IP地址用於通訊,就好象我們每個人都有住址用來收信。

IPv4長這樣:192.168.1.1,255.255.255.255

IPv6長這樣:2001:0DB8:02de:0000:0000:0000:0000:0e13

機器很喜歡這樣的格式,換成二進位制非常容易處理。但是讓你每次上網都要在瀏覽器上輸入這麼一長串東西,你是不是很抓狂?所以我們需要Domain(域名)也就是機器名字來指代某個主機的IP地址。

舉例,谷歌搜尋的域名也就是機器名字是 www.google.com。域名從右往左看。com是商業公司的頂級域名,google是谷歌公司的二級域名,www是谷歌搜尋的三級域名。就好象你寫地址也要寫個中國上海市靜安區。谷歌公司不止搜尋這一個網站,它可以定義N個三級域名用來命名不同的網站主機,因為它擁有http://google.com這個二級域名。

但是機器不認識這些字母,所以我們把機器名字http://www.google.com輸入瀏覽器之後,需要DNS(域名系統)來把http://www.google.com轉換成谷歌搜尋的IP地址。

具體的實現很複雜。簡單來說,全球有很多域名伺服器,用來儲存從域名到IP地址的對映。我們每臺終端,無論手機還是電腦,在聯網的時候都會配置一個DNS地址,就是DNS伺服器的IP地址。你填的那個8.8.8.8就是google公司設立的DNS伺服器。在上網的時候電腦會去向這些DNS伺服器查詢域名對應的IP。

  • Hosts是幹什麼用的?

在網際網路的早期,網路只有幾臺電腦。人們用hosts檔案記錄機器名字到IP的對映,後來網路的規模越來越大。你想想全球有多少網路終端連在全球資訊網上?hosts檔案記錄對映已經不可行了,所以發明了DNS,域名系統。但是hosts檔案仍然保留在作業系統中,hosts檔案的優先順序高於DNS查詢。作業系統首先會在hosts檔案中找域名對應的IP地址,沒有找到它才會去問DNS伺服器。

  • VPN是什麼?

VPN(Virtual Private Network),虛擬專用網。VPN的本意是在公用網路上建立專用網路。設想你是一名公安民警,你出差在外住酒店,需要到公安內部網路查詢某些資料。但是酒店的網路是公有網路,資料傳輸途中要經過酒店的路由,ISP的路由。中途任何有技術的人都可以看到你跟內部網路之間的明文通訊。這時候需要在你和公安內部網路建立一條加密的專用通道。傳送資料的時候加密,接收資料的時候解密,加解密的方式事先設定好。這樣第三方看到加密過後的資料也無法理解其中的含義。

當然,天朝國情多奇葩。我們的ZF發明了偉大的GFW,於此對應我們偉大的程式設計師發明了用VPN科學上谷歌的方法。如果你明文請求Google主機,GFW會直接重置連線。但是你在國外有個VPN代理伺服器,代理伺服器幫你請求Google;再把Google的響應用加密的方式轉發給你。因為你跟VPN代理之間是加密傳輸,GFW不知道你訪問的是Google,它不可能把所有發到國外的請求都重置掉,所以成功突破封鎖。