一個網(wǎng)絡(luò)請求的冒險之旅

對于互聯(lián)網(wǎng),人們總是高談闊論,卻很少有人愿意去了解電腦、手機(jī)、電視這些設(shè)備到底是如何被“連接”起來的。

人們動動手指,點點鼠標(biāo),圖片、視頻便順理成章地即時顯示在屏幕上。只是,這一切并非理所應(yīng)當(dāng),五光十色的互聯(lián)網(wǎng)世界之下,是我們在夜以繼日地工作。

我是一個普通的網(wǎng)絡(luò)請求。我很渺小,但始終都在履行責(zé)任——尋找被指定的資源,再將它們交付到我的主人手中。就像這座城市中成千上萬而又默默無聞的快遞小哥,穿梭在大廈與樓宇之間,完成使命。

不同的是,真正的網(wǎng)絡(luò)環(huán)境可不像現(xiàn)代化城市那么光鮮亮麗。它陰暗、潮濕,充滿了未知的危險,如同一座黑暗森林。而我要做的,就是一場不折不扣的冒險。

1 URL與IP到底是什么?

我的冒險,要從一張“羊皮卷”說起。那天,瀏覽器大叔神秘兮兮招呼我過去,告訴我CPU下達(dá)了一個命令:派遣使者訪問外邦。而我是大叔最得力的門生,也是這類任務(wù)最合適的人選。大叔為我準(zhǔn)備了一張羊皮卷,上面記錄了我這次冒險需要用到的必要信息。

當(dāng)仁不讓地,我接過了它,即刻啟程。

我緩緩展開羊皮卷,第一行赫然寫著:「URL: https://www.mail.google.com」,什么是“URL”?我在腦中快速回憶著,對了!URL即Uniform Resource Locator的縮寫,翻譯成中文便是“統(tǒng)一資源定位符”。因為互聯(lián)網(wǎng)世界存在著不計其數(shù)的資源,每一處資源都需要有一個標(biāo)記來定位它,正如人類城市中的門牌號。

有人可能會認(rèn)為,既然有了門牌號,找到指定地點不是輕而易舉嗎?朋友們,我也希望如此,但現(xiàn)實往往沒有這么簡單。

即使有了URL,恕我愚笨,我還是無法直接理解它所指向的目的地。因為這是人類的語言,我無法翻譯解讀。(其實是人類太笨了,記不住IP地址,需要用方便記憶的域名來代替)

對我來說,IP地址才是唯一的坐標(biāo)。什么是IP?IP即Internet Protocol的縮寫,中文譯為“互聯(lián)網(wǎng)協(xié)議”,一個如雷貫耳的名字,互聯(lián)網(wǎng)的基石之一,一切依賴互聯(lián)網(wǎng)通信的軟件都得遵循這個協(xié)議。

那么,如何才能將域名轉(zhuǎn)換為IP地址呢?

瀏覽器大叔在平日工作之余,十分細(xì)心,他將用戶訪問過的站點整理了一份“域名-IP對應(yīng)清單”。假如是一個已被記錄的IP地址,那么他會直接告訴我,我可以立即向著目標(biāo)IP地址出發(fā),這就是瀏覽器緩存的作用。

假如用戶輸入的URL不在瀏覽器的記錄范圍之內(nèi),那么操作系統(tǒng)會查找一個名為“hosts”的文件。它是一份文本,記錄了域名和IP地址的映射。如果“hosts”能夠告訴我目標(biāo)IP地址,那也能節(jié)省我不少工夫。這就是系統(tǒng)緩存。

此外,還有路由器緩存,相信不用我多介紹了,即保存在路由器中的域名-IP映射。

這些緩存都能有效幫助我以最快的速度找到相應(yīng)的IP地址。但是,互聯(lián)網(wǎng)世界日新月異,各種資源層出不窮。在很多情況下,用戶會想要訪問一個全新的,任何緩存都沒有記錄過的域名。

為此,人類專門設(shè)計了DNS。在這次任務(wù)中,我的第一站,就是趕往DNS。為了更短的響應(yīng)時間與更好的用戶體驗,我快馬加鞭。

2 關(guān)于DNS劫持的記憶

DNS是什么?全稱Domain Name System,是一個將域名和IP相互映射的分布式數(shù)據(jù)庫。

全球有很多家DNS服務(wù)中心,假如你關(guān)心過你的計算機(jī),你會發(fā)現(xiàn),在你的網(wǎng)卡上,有著一項“DNS服務(wù)器”的配置項,它設(shè)定了我將要抵達(dá)的目的地。

一轉(zhuǎn)眼的工夫,我來到了114.114.114.114DNS中心。

這個地方我來過很多次,表面上風(fēng)平浪靜,實則暗流涌動。我小心翼翼地來到辦事大廳,不禁想起了我第一次被DNS劫持的經(jīng)歷。

那天,我來到辦事窗口,柜員熱情地接待了我。

“先生,請問你想要查詢哪個地址?”當(dāng)時我還是一位新晉的網(wǎng)絡(luò)請求,涉世尚淺,不知曉一些不可說的條例,于是毫不避諱地回答:“你好,我要去大名鼎鼎的mail.google.com!”

柜員的表情一下子凝固了,他上下打量了我一番,然后硬擠出一絲微笑,“好的先生,請稍等?!闭f完,他便向旁邊的同事使了個眼色。我正納悶?zāi)兀蝗粌蛇吀Z出身材魁梧的警衛(wèi),架著我強(qiáng)行往一處拖拽。

我這才意識到大事不妙,“這是怎么回事?!你們憑什么劫持我?”我發(fā)瘋了一般嘶吼著。

“你好,根據(jù)本ISP(電信運營商)頒布的條例,世界上不存在你所說的站點,現(xiàn)懷疑你是一個不合規(guī)的網(wǎng)絡(luò)請求,將把你轉(zhuǎn)發(fā)至baidu.com的IP地址。你有權(quán)保持沉默!”警衛(wèi)冷漠地望著我。

我知道,現(xiàn)在無論如何解釋、掙扎都沒有用了,只怪自己太年輕。無奈,我只好乖乖就范。

還好當(dāng)時正在使用計算機(jī)的用戶有一些網(wǎng)絡(luò)知識,當(dāng)他發(fā)現(xiàn)自己輸入的是google,返回的是baidu的頁面時,并沒有怪罪于我,大概是他心中已經(jīng)猜到了原因。于是他將網(wǎng)卡的DNS配置為:8.8.8.8,這是一個國際上“不存在”的公司提供的DNS服務(wù)中心。

僅僅這樣就能暢通無阻地訪問互聯(lián)網(wǎng)了嗎?經(jīng)歷了被DNS劫持,我依然不敢放松。

3. 我遇到過DNS投毒

還未休息片刻,瀏覽器大叔再一次地給我分配了任務(wù):繼續(xù)嘗試請求mail.google.com的資源。

人類出國要坐飛機(jī),要辦護(hù)照。我們網(wǎng)絡(luò)請求也是這樣,全國只有在幾個主要城市才會部署國際出口,所有訪問境外資源的網(wǎng)絡(luò)請求,都得經(jīng)過這兒接受檢查。

與上次不同,因為這次我要訪問的DNS服務(wù)器位于海外,所以我首先來到了大中華局域網(wǎng)的上海國際出口。

我一路奔波到上海真的是又累又乏,正當(dāng)我火急火燎地準(zhǔn)備過安檢,通道附近有一位穿著制服的小伙迎了上來。

還沒等我開口,他熱情地迎了上來:“歐~ 遠(yuǎn)道而來的朋友,一定是十分疲憊了吧?天氣這么熱,先喝杯水吧!”我悄悄地打量著他,看他的打扮應(yīng)該是一位服務(wù)人員。

“國際出口就是不一樣啊,服務(wù)真到位!”由于確實是太渴了,我放松了警惕?!鞍?,真清涼,謝...”我一邊感嘆著,一邊接過了小伙遞給我的水。

可當(dāng)我第二個“謝”字還沒說出口,立即感到一陣頭暈?zāi)垦!?/p>

“不好!遇上了黑客,這是DNS投毒!”我的視線漸漸模糊,小伙的微笑也漸漸似乎變成了獰笑。我盡力搜索著腦海中和這一切有關(guān)的知識,想要知道尋求的辦法。

DNS投毒,英文叫DNS cache poisoning,也叫做DNS污染。從客戶端向DNS服務(wù)器發(fā)出查詢IP的請求,到響應(yīng)返回到客戶端的這段時間里,如果有黑客或者其他一些不可說的設(shè)施偽造返回了一個錯誤的DNS應(yīng)答,那么用戶將不能訪問到真正的資源。

想到這里,我已經(jīng)明顯感覺難以控制自己的身體了,眼前一黑,就什么都不知道了。

3 DNS正常解析

以前發(fā)生過的險情歷歷在目,如今想起來,我依舊心有余悸。這次,為了確保萬無一失,我打起了十二分精神。

這次,我已經(jīng)順利來到8.8.8.8 DNS服務(wù)中心。

“你好親,有什么可以幫到您的嘛”辦事窗口內(nèi)傳來了軟妹子的聲音。

“我想查詢域名mail.google.com的IP地址?!蔽以囂叫缘貑枺廊徊桓宜尚?。

“好的呢親,這邊通過樹狀檢索,在頂級域名com下,查詢到google目錄,在google目錄下查詢到mail,IP地址是xx.xxx.xx.xx呢?!?/p>

我松了口氣,謝天謝地,終于拿到了結(jié)果。可我知道作為一次完整的網(wǎng)絡(luò)請求,這剛剛開始,這才是萬里長征第一步,我得趕緊將這個解析結(jié)果帶回去,等會還得馬不停蹄往返三次建立連接。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 非常好的文章,怕博主刪除,再也找不到這么好的文章了,所以復(fù)制了一份,博主是2016年寫,但是是到現(xiàn)在為止看到的,思...
    吭聲_cfdc閱讀 2,179評論 0 4
  • 1. 基礎(chǔ)知識 1.1 3種常見的計算機(jī)體系結(jié)構(gòu)劃分 OSI分層(7層):物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會話...
    Mr希靈閱讀 20,104評論 6 120
  • 文章首發(fā)于個人blog歡迎指正補充,可聯(lián)系lionsom_lin@qq.com原文地址:《網(wǎng)絡(luò)是怎樣連接的》閱讀整...
    Lucus_Linx閱讀 14,469評論 6 31
  • 當(dāng)我們在瀏覽器的地址欄輸入 www.linux178.com ,然后回車,回車這一瞬間到看到頁面到底發(fā)生了什么呢?...
    Ddaidai閱讀 1,287評論 0 12
  • 當(dāng)我們在瀏覽器的地址欄輸入 www.linux178.com ,然后回車,回車這一瞬間到看到頁面到底發(fā)生了什么呢?...
    陪你一場閱讀 1,443評論 1 8

友情鏈接更多精彩內(nèi)容