文/神們自己* 圖/視覺中國
打開瀏覽器,我們就進(jìn)入了互聯(lián)網(wǎng)世界?;ヂ?lián)網(wǎng)是由全球范圍內(nèi)的計算機(jī)組成的網(wǎng)絡(luò),通過標(biāo)準(zhǔn)的通信協(xié)議交換信息。簡而言之,互聯(lián)網(wǎng)是一個大型的計算機(jī)網(wǎng)絡(luò),讓我們可以通過電子設(shè)備彼此連接。
你可能很難想象,蒂姆·伯納斯·李在20 世紀(jì)80年代第一次發(fā)明互聯(lián)網(wǎng)時,他的同事們竟然不知道這是一個即將改變世界的發(fā)明。沒有人想到,短短幾十年后,互聯(lián)網(wǎng)就成為每個人生活中不可或缺的部分?;ヂ?lián)網(wǎng)技術(shù)本身只是改變世界的工具,而真正改變世界的,是使用互聯(lián)網(wǎng)的每一個人。
當(dāng)我們在瀏覽器中輸入網(wǎng)址時,該網(wǎng)址實際上是一個域名。但計算機(jī)并不能理解這個域名,所以這時會發(fā)生一個叫作“域名解析”的過程,要用到DNS(Domain Name System,域名解析系統(tǒng))。
DNS 就像一個囊括互聯(lián)網(wǎng)世界的電話簿,它將域名映射到相應(yīng)的IP 地址中。當(dāng)我們在瀏覽器中輸入域名時,瀏覽器會向我們的計算機(jī)或路由器中內(nèi)置的DNS 服務(wù)器發(fā)送一個查詢請求,詢問該域名對應(yīng)的IP 地址。如果DNS 服務(wù)器有這個域名對應(yīng)的IP地址緩存,就會直接返回;否則,DNS 服務(wù)器會向其他DNS 服務(wù)器發(fā)送查詢請求,直到找到域名對應(yīng)的IP地址為止。
DNS 是一個分布式的系統(tǒng),它由成千上萬臺位于世界各地的計算機(jī)和服務(wù)器組成。當(dāng)我們訪問一個從未訪問過的網(wǎng)站時,域名解析需要一點時間(雖然很短),而電腦會緩存之前的域名解析結(jié)果,當(dāng)我們再次訪問該網(wǎng)站時,速度就會快得多。
瀏覽器獲取域名對應(yīng)的IP 地址后,就可以建立與服務(wù)器的連接,發(fā)送請求,并獲取響應(yīng)。這樣,我們才能看到想要的網(wǎng)頁或使用應(yīng)用程序。DNS 是互聯(lián)網(wǎng)中至關(guān)重要的一部分,如果沒有它,我們就得記住所有網(wǎng)站的IP 地址才能上網(wǎng)——這是一件不可能的事情!
上網(wǎng)的本質(zhì)就是聊天——計算機(jī)與計算機(jī)之間的聊天。我們點擊鼠標(biāo),讓電腦通過網(wǎng)線向另一臺電腦(服務(wù)器)發(fā)送一個問題(比如網(wǎng)址),那臺電腦(服務(wù)器)給你的電腦發(fā)送了一個回答(比如網(wǎng)頁信息),我們再點擊鼠標(biāo),繼續(xù)發(fā)送新的問題……
網(wǎng)站其實就是一堆不同類型的文件的集合,包括Web 頁面、圖片、視頻等。當(dāng)我們用瀏覽器訪問網(wǎng)站時,服務(wù)器就會向我們的電腦回以這些文件信息,讓我們的電腦把這堆文件下載下來。瀏覽器讀取這些文件,處理后顯示在電腦屏幕上,變成我們看到的網(wǎng)頁內(nèi)容。
瀏覽器能夠讀取帶有HTML 標(biāo)記的文件。HTML是超文本標(biāo)記語言(Hyper Text Markup Language)的縮寫,它是Web 頁面編程的基礎(chǔ),HTML 標(biāo)記被用來描述網(wǎng)頁的內(nèi)容和結(jié)構(gòu)。當(dāng)瀏覽器發(fā)送請求后,服務(wù)器會將帶有HTML 標(biāo)記的文件發(fā)送回瀏覽器,瀏覽器會解析這些HTML 標(biāo)記,并顯示出網(wǎng)頁內(nèi)容。HTML 標(biāo)記是一對尖括號標(biāo)記出來的元素,如 表示文檔結(jié)束, 表示頭部信息, 表示網(wǎng)頁主體,等等。這些標(biāo)記簡單易用,讓開發(fā)人員可以方便地創(chuàng)建網(wǎng)站頁面。
如果有1 億人訪問百度網(wǎng)站,搜索不同的關(guān)鍵詞,按理說,百度服務(wù)器應(yīng)該準(zhǔn)備1 億份不同的文件,但這樣做既不現(xiàn)實,也毫無必要。每個人看到不同的網(wǎng)頁結(jié)果是服務(wù)器從數(shù)據(jù)庫中讀取不同的數(shù)據(jù),并通過算法處理后實時生成的。生成這些內(nèi)容的程序稱為“后端”,包括網(wǎng)站后臺的代碼和數(shù)據(jù)庫,在服務(wù)器上運行。而服務(wù)器發(fā)送到我們電腦的程序文件則是后端輸出或生成的內(nèi)容,它在我們的電腦中運行,稱為“前端”。
像百度這樣服務(wù)10 億多用戶的大型網(wǎng)站,需要用大量服務(wù)器組成分布式集群,每一個服務(wù)器都在參與計算、提供服務(wù),即使有幾個服務(wù)器突然死機(jī)了,也不會對整體造成任何影響,網(wǎng)站仍然能夠正常運行。這就是“云計算”解決的問題。
云計算是指使用互聯(lián)網(wǎng)提供的各種計算資源來管理、存儲和處理數(shù)據(jù)的方式。云計算是一種相對較新的技術(shù),它將計算資源(如處理器、存儲器等)分布在全球范圍內(nèi)的數(shù)據(jù)中心中,并通過互聯(lián)網(wǎng)進(jìn)行連接。用云計算來托管和運行網(wǎng)站與程序,是一種高度可伸縮、高度可靠且安全性強(qiáng)的方式。
云計算有多種形式,其中最常見的是基于虛擬化技術(shù)的云計算。在基于虛擬化的云計算中,物理服務(wù)器被劃分為多個虛擬機(jī),每個虛擬機(jī)可以運行不同的操作系統(tǒng)和程序。如果不用虛擬化技術(shù),當(dāng)程序運行出錯時,可能會導(dǎo)致操作系統(tǒng)死機(jī)。但是,如果我們用虛擬化技術(shù),在一臺物理服務(wù)器中運行N 個操作系統(tǒng),某個操作系統(tǒng)的出錯或者死機(jī)被隔離在服務(wù)器內(nèi)部,就不會造成物理服務(wù)器的死機(jī)。而且,每個虛擬機(jī)可以隨時啟動、關(guān)閉、升級或降級配置,從而實現(xiàn)資源的高度可伸縮性和靈活性運用。
互聯(lián)網(wǎng)已經(jīng)成為我們?nèi)粘I钪胁豢苫蛉钡囊徊糠?,我們早已?xí)慣了通過它與朋友聊天、聽音樂、看視頻、玩游戲……如果你對互聯(lián)網(wǎng)和計算機(jī)科學(xué)感興趣,不妨嘗試自學(xué)一些編程知識,以便更深入地了解互聯(lián)網(wǎng)背后的工作原理,同時也可以為個人發(fā)展乃至職業(yè)生涯打下堅實的基礎(chǔ)。