對於互聯網,人們老是高談闊論,卻不多有人願意去了解電腦、手機、電視這些設備究竟是如何被「鏈接」起來的。本文經過「我」,一個普通的網絡請求的視角,給你們介紹下「我」的工做流程是如何的。 |
人們動動手指,點點鼠標,圖片、視頻便瓜熟蒂落地即時顯示在屏幕上。只是,這一切並不是理所應當,五顏六色的互聯網世界之下,是咱們在夜以繼日地工做。
我是一個普通的網絡請求。我很眇小,但始終都在履行責任——尋找被指定的資源,再將它們交付到個人主人手中。就像這座城市中成千上萬而又默默無聞的快遞小哥,穿梭在大廈與樓宇之間,完成使命。
不一樣的是,真正的網絡環境可不像現代化城市那麼光鮮亮麗。它陰暗、潮溼,充滿了未知的危險,如同一座黑暗森林。而我要作的,就是一場徹徹底底的冒險。linux
個人冒險,要從一張「羊皮卷」提及。那天,瀏覽器大叔神祕兮兮招呼我過去,告訴我CPU下達了一個命令:派遣使者訪問外邦。而我是大叔最得力的門生,也是這類任務最合適的人選。大叔爲我準備了一張羊皮卷,上面記錄了我此次冒險須要用到的必要信息。
當仁不讓地,我接過了它,即刻啓程。
我緩緩展開羊皮卷,第一行赫然寫着:URL: https://mail.google.com
什麼是「URL」?我在腦中快速回憶着,對了!URL即 Uniform Resource Locator的縮寫,翻譯成中文即是「統一資源定位符」。由於互聯網世界存在着不可勝數的資源,每一處資源都須要有一個標記來定位它,正如人類城市中的門牌號。
有人可能會認爲,既然有了門牌號,找到指定地點不是垂手可得嗎?朋友們,我也但願如此,但現實每每沒有這麼簡單。
即便有了URL,恕我愚笨,我仍是沒法直接理解它所指向的目的地。由於這是人類的語言,我沒法翻譯解讀。(實際上是人類太笨了,記不住IP地址,須要用方便記憶的域名來代替)
對我來講,IP地址纔是惟一的座標。什麼是IP?IP即Internet Protocol的縮寫,中文譯爲「互聯網協議」,一個如雷貫耳的名字,互聯網的基石之一,一切依賴互聯網通訊的軟件都得遵循這個協議。
那麼,如何才能將域名轉換爲IP地址呢?
瀏覽器大叔在平日工做之餘,十分細心,他將用戶訪問過的站點整理了一份「域名-IP對應清單」。假如是一個已被記錄的IP地址,那麼他會直接告訴我,我能夠當即向着目標IP地址出發,這就是瀏覽器緩存的做用。
假如用戶輸入的URL不在瀏覽器的記錄範圍以內,那麼操做系統會查找一個名爲「hosts」的文件。它是一份文本,記錄了域名和IP地址的映射。若是「hosts」可以告訴我目標IP地址,那也能節省我很多工夫。這就是系統緩存。
此外,還有路由器緩存,相信不用我多介紹了,即保存在路由器中的域名-IP映射。
這些緩存都能有效幫助我以最快的速度找到相應的IP地址。可是,互聯網世界突飛猛進,各類資源層出不窮。在不少狀況下,用戶會想要訪問一個全新的、任何緩存都沒有記錄過的域名。
爲此,人類專門設計了DNS。在此次任務中,個人第一站,就是趕往DNS。爲了更短的響應時間與更好的用戶體驗,我馬不停蹄。數據庫
DNS是什麼?全稱Domain Name System,是一個將域名和IP相互映射的分佈式數據庫。
全球有不少家DNS服務中心,假如你關心過你的計算機,你會發現,在你的網卡上,有着一項「DNS服務器」的配置項,它設定了我將要抵達的目的地。
什麼是 DNS 劫持、投毒、解析?看這文就懂了!
一轉眼的工夫,我來到了114.114.114.114DNS中心。
這個地方我來過不少次,表面上風平浪靜,實則暗流涌動。我當心翼翼地來到辦事大廳,不由想起了我第一次被DNS劫持的經歷。
那天,我來到辦事窗口,櫃員熱情地接待了我。
「先生,請問你想要查詢哪一個地址?」當時我仍是一位新晉的網絡請求,涉世尚淺,不知曉一些不可說的條例,因而絕不避諱地回答:「你好,我要去大名鼎鼎的mail.google.com!」
櫃員的表情一會兒凝固了,他上下打量了我一番,而後硬擠出一絲微笑,「好的先生,請稍等。」說完,他便向旁邊的同事使了個眼色。我正納悶呢,忽然兩邊竄出身材魁梧的警衛,架着我強行往一處拖拽。
我這才意識到大事不妙,「這是怎麼回事?!大家憑什麼劫持我?」我發瘋了通常嘶吼着。
「你好,根據本ISP(電信運營商)頒佈的條例,世界上不存在你所說的站點,現懷疑你是一個不合規的網絡請求,將把你轉發至baidu.com的IP地址。你有權保持沉默!」警衛冷漠地望着我。
我知道,如今不管如何解釋、掙扎都沒有用了,只怪本身太年輕。無奈,我只好乖乖就範。
什麼是 DNS 劫持、投毒、解析?看這文就懂了!
還好當時正在使用計算機的用戶有一些網絡知識,當他發現本身輸入的是google,返回的是baidu的頁面時,並無怪罪於我,大概是他心中已經猜到了緣由。因而他將網卡的DNS配置爲:8.8.8.8,這是一個國際上「不存在」的公司提供的DNS服務中心。
僅僅這樣就能暢通無阻地訪問互聯網了嗎?經歷了被DNS劫持,我依然不敢放鬆。瀏覽器
還未休息片刻,瀏覽器大叔再一次地給我分配了任務:繼續嘗試請求mail.google.com的資源。
人類出國要坐飛機,要辦護照。咱們網絡請求也是這樣,全國只有在幾個主要城市纔會部署國際出口,全部訪問境外資源的網絡請求,都得通過這兒接受檢查。
與上次不一樣,由於此次我要訪問的DNS服務器位於海外,因此我首先來到了大中華局域網的上海國際出口。
我一路奔波到上海真的是又累又乏,正當我火急火燎地準備過安檢,通道附近有一位穿着制服的小夥迎了上來。
還沒等我開口,他熱情地迎了上來:「遠道而來的朋友,必定是十分疲憊了吧?天氣這麼熱,先喝杯水吧!」我悄悄地打量着他,看他的打扮應該是一位服務人員。
「國際出口就是不同啊,服務真到位!」因爲確實是太渴了,我放鬆了警戒。「啊,真清涼,謝……」我一邊感嘆着,一邊接過了小夥遞給個人水。
可當我第二個「謝」字還沒說出口,當即感到一陣頭暈目眩。
「很差!趕上了黑客,這是DNS投毒!」個人視線漸漸模糊,小夥的微笑也漸漸彷佛變成了獰笑。我盡力搜索着腦海中和這一切有關的知識,想要知道尋求的辦法。
什麼是 DNS 劫持、投毒、解析?看這文就懂了!
DNS投毒,英文叫DNS cache poisoning,也叫作DNS污染。從客戶端向DNS服務器發出查詢IP的請求,到響應返回到客戶端的這段時間裏,若是有黑客或者其餘一些不可說的設施僞造返回了一個錯誤的DNS應答,那麼用戶將不能訪問到真正的資源。
想到這裏,我已經明顯感受難以控制本身的身體了,眼前一黑,就什麼都不知道了。緩存
之前發生過的險情歷歷在目,現在想起來,我依舊心有餘悸。此次,爲了確保萬無一失,我打起了十二分精神。
此次,我已經順利來到8.8.8.8 DNS服務中心。
「你好親,有什麼能夠幫到您的嘛」辦事窗口內傳來了軟妹子的聲音。
「我想查詢域名mail.google.com的IP地址。」我試探性地問,依然不敢鬆懈。
「好的呢親,這邊經過樹狀檢索,在頂級域名com下,查詢到google目錄,在google目錄下查詢到mail,IP地址是xx.xxx.xx.xx呢。」
什麼是 DNS 劫持、投毒、解析?看這文就懂了!
我鬆了口氣,謝天謝地,終於拿到告終果。可我知道做爲一次完整的網絡請求,這剛剛開始,這纔是萬里長征第一步,我得趕忙將這個解析結果帶回去,等會還得快馬加鞭往返三次創建鏈接。
服務器