對于網際網路,人們總是高談闊論,卻很少有人願意去了解電腦、手機、電視這些裝置到底是如何被“連接配接”起來的。本文通過“我”,一個普通的網絡請求的視角,給大家介紹下“我”的工作流程是如何的。 |
人們動動手指,點點滑鼠,圖檔、視訊便順理成章地即時顯示在螢幕上。隻是,這一切并非理所應當,五光十色的網際網路世界之下,是我們在夜以繼日地工作。
我是一個普通的網絡請求。我很渺小,但始終都在履行責任——尋找被指定的資源,再将它們傳遞到我的主人手中。就像這座城市中成千上萬而又默默無聞的快遞小哥,穿梭在大廈與樓宇之間,完成使命。
不同的是,真正的網絡環境可不像現代化城市那麼光鮮亮麗。它陰暗、潮濕,充滿了未知的危險,如同一座黑暗森林。而我要做的,就是一場不折不扣的冒險。
URL與IP到底是什麼?
我的冒險,要從一張“羊皮卷”說起。那天,浏覽器大叔神秘兮兮招呼我過去,告訴我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劫持的記憶
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劫持,我依然不敢放松。
我遇到過DNS投毒
還未休息片刻,浏覽器大叔再一次地給我配置設定了任務:繼續嘗試請求mail.google.com的資源。
人類出國要坐飛機,要辦護照。我們網絡請求也是這樣,全國隻有在幾個主要城市才會部署國際出口,所有通路境外資源的網絡請求,都得經過這兒接受檢查。
與上次不同,因為這次我要通路的DNS伺服器位于海外,是以我首先來到了大中華區域網路的上海國際出口。
我一路奔波到上海真的是又累又乏,正當我火急火燎地準備過安檢,通道附近有一位穿着制服的小夥迎了上來。
還沒等我開口,他熱情地迎了上來:“遠道而來的朋友,一定是十分疲憊了吧?天氣這麼熱,先喝杯水吧!”我悄悄地打量着他,看他的打扮應該是一位服務人員。
“國際出口就是不一樣啊,服務真到位!”由于确實是太渴了,我放松了警惕。“啊,真清涼,謝……”我一邊感歎着,一邊接過了小夥遞給我的水。
可當我第二個“謝”字還沒說出口,立即感到一陣頭暈目眩。
“不好!遇上了黑客,這是DNS投毒!”我的視線漸漸模糊,小夥的微笑也漸漸似乎變成了獰笑。我盡力搜尋着腦海中和這一切有關的知識,想要知道尋求的辦法。
什麼是 DNS 劫持、投毒、解析?看這文就懂了!
DNS投毒,英文叫DNS cache poisoning,也叫做DNS污染。從用戶端向DNS伺服器發出查詢IP的請求,到響應傳回到用戶端的這段時間裡,如果有黑客或者其他一些不可說的設施僞造傳回了一個錯誤的DNS應答,那麼使用者将不能通路到真正的資源。
想到這裡,我已經明顯感覺難以控制自己的身體了,眼前一黑,就什麼都不知道了。
DNS正常解析
以前發生過的險情曆曆在目,如今想起來,我依舊心有餘悸。這次,為了確定萬無一失,我打起了十二分精神。
這次,我已經順利來到8.8.8.8 DNS服務中心。
“你好親,有什麼可以幫到您的嘛”辦事視窗内傳來了軟妹子的聲音。
“我想查詢域名mail.google.com的IP位址。”我試探性地問,依然不敢松懈。
“好的呢親,這邊通過樹狀檢索,在頂級域名com下,查詢到google目錄,在google目錄下查詢到mail,IP位址是xx.xxx.xx.xx呢。”
什麼是 DNS 劫持、投毒、解析?看這文就懂了!
我松了口氣,謝天謝地,終于拿到了結果。可我知道作為一次完整的網絡請求,這剛剛開始,這才是萬裡長征第一步,我得趕緊将這個解析結果帶回去,等會還得馬不停蹄往返三次建立連接配接。