在瀏覽器輸入網址,Enter之后發生了什么?
啟動瀏覽器,在地址欄輸入我們將要訪問的網頁,然后按一下回車,OK,成功進入!
在我們回車之后,發生了什么事情?為什么我們會訪問到期待的網頁,我們究竟訪問了誰?如何訪問到他的?
我簡單的向大家介紹一下,並不深入講解,只能算作小白科普,不過這個科普還是很有必要的,它不僅能讓我們認識到計算機之間是如何溝通的,也能讓我們知道很多網絡危機、故障是大致怎樣產生的,以后遇到問題也好有一個切入點。
你的名字叫什么?
啟動瀏覽器是瀏覽網頁的第一步,畢竟是世界之窗嘛,然后我們在地址欄中輸入一個網址,比如百度(www.baidu.com),這里我們叫他“域名”,根據這個域名,是否可以找到百度公司的服務器?這得問問路由器了,在網絡中路由器負責為我們傳輸數據。
你可能會問,這和路由器什么關系?我沒有傳輸數據啊,只是輸入一個網址啊,恩恩,沒錯,不過這相當於一次請求——請求百度的服務器返回一個搜索界面。
看看路由器怎么說:哦,我不用域名或者主機名,我只處理IP地址,我根據它找到目標地點(百度服務器),把數據傳給他。
哦哦,看起來域名只是你的別稱,你真正的名字叫IP。什么是IP?形如 w.x.y.z的數字,四個數字都是0~255(比如192.168.0.1),也就是四個字節,不過有的會有一些限制,這里不必考慮。
原來還有軍師!
如此看來,域名對於路由器來說是不管用的,我們得想辦法搞到對應的IP地址,當然,這件事情瀏覽器幫我們完成了,“你是說,瀏覽器有一個數據庫,里面存儲了各個域名到IP的映射?”,這個當然不是,初步算一下這個大約有40億個,瀏覽器可存不下。原來在我們按下回車之后瀏覽器把域名發給他的軍師, 軍師 收到域名之后,返回給瀏覽器一個IP地址,這個就是我們想要的那個。
這位 軍師 就是我們經常會看到的DNS,中文名字是域名系統服務器,一般位於ISP(互聯網服務提供商,比如我們熟知的聯通、移動、電信等) 中。瀏覽器會首先發給離自己最近的DNS,DNS收到瀏覽器發來的域名,在自己的數據庫和緩存中查找這個域名所對應的IP,如果沒有他會詢問其他的DNS,遞歸下去直到弄清楚IP。最后把結果返回給瀏覽器。
包裹運送 禮尚往來
瀏覽器既然獲得了IP,就可以把包裹發給路由器了,路由器依據這個IP地址,多方周轉,送到了百度服務器的手中。到這里還沒有結束,百度服務器看到包裹中的請求,把百度的搜索頁面發送回瀏覽器,回來的時候也是依據你主機的IP地址才能將包裹正確送達。
至此,在瀏覽器輸入網址,Enter之后發生的事情簡述完畢。再回顧一下:
1. 瀏覽器接收域名
2. 發送域名給DNS
3. DNS返回域名所對應的IP地址
4. 瀏覽器向因特網中發出請求
5. 路由器依據IP地址,把包裹送達IP所對應的服務器
看起來,DNS很重要啊,前幾天我家附近的計算機部分網絡無法訪問,我想應該就是DNS那邊解析出了問題。2014年有一次國內很多網絡無法訪問,問題就出在DNS服務器上。全球DNS根服務器只有13台,中國沒有,看起來我們國家急需有自己的DNS根服務器啊!