文/神們自己* 圖/視覺(jué)中國(guó)

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