漫畫 | 為什么美國(guó)人發(fā)明了互聯(lián)網(wǎng)?
我們的故事得從第二次世界大戰(zhàn)以后開始。
二戰(zhàn)后, 美國(guó)和蘇聯(lián)兩個(gè)超級(jí)大國(guó)劃分了各自的勢(shì)力范圍,在政治、經(jīng)濟(jì)、軍事等領(lǐng)域激烈較量,一道鐵幕在歐洲大陸落下, 冷戰(zhàn)開啟。
隨著蘇聯(lián)爆破成功原子彈和發(fā)射洲際導(dǎo)彈,美國(guó)本土立刻面臨遠(yuǎn)程核導(dǎo)彈的打擊,美國(guó)人開始慌了。
作為應(yīng)對(duì),美國(guó)總統(tǒng)艾森豪威爾授權(quán)成立了一個(gè)新的研究機(jī)構(gòu):高級(jí)研究計(jì)劃署(DARPA)

DARPA有很多項(xiàng)目,包括彈道導(dǎo)彈防御、衛(wèi)星導(dǎo)航、核試驗(yàn)檢測(cè)等等,其中一項(xiàng)是建立一個(gè)可經(jīng)受敵軍打擊的軍用通信系統(tǒng)。
1955年,蘭德公司的巴蘭被這個(gè)課題深深吸引。

經(jīng)過(guò)研究,巴蘭提出了兩個(gè)重要思想,第一個(gè)是:網(wǎng)絡(luò)的控制權(quán)應(yīng)該完全分散



分布式的思想讓每個(gè)節(jié)點(diǎn)在路由數(shù)據(jù)流時(shí)都具備同等地位,這成為未來(lái)的互聯(lián)網(wǎng)的最根本特征。
巴蘭的第二個(gè)思想是“分組交換”, 要向理解它,我們得先看看“電路交換”, 最典型的就是電話網(wǎng)絡(luò)

由于有專有的連接,預(yù)留的帶寬,那么發(fā)送方可以用固定的速率向接收方傳輸數(shù)據(jù)。
但是電路交換的缺點(diǎn)也很明顯,假設(shè)兩個(gè)人打電話,突然,其中一個(gè)人離開了,這個(gè)時(shí)候預(yù)覽的帶寬沒(méi)法被別的通信復(fù)用,白白浪費(fèi)了。

巴蘭提出的分組交換,不會(huì)為兩個(gè)用戶建立物理的連接, 也不會(huì)預(yù)留帶寬,相反, 數(shù)據(jù)被劃分成一個(gè)個(gè)小的數(shù)據(jù)塊進(jìn)行傳輸,稱為“分組”。
就像把一封長(zhǎng)信分割為幾十張明信片一樣,每張明信片都有編號(hào),目標(biāo)地址也一樣。每張明信片可能會(huì)通過(guò)不同的路徑抵達(dá)終點(diǎn),然后它們會(huì)被重新拼在一起。

可以說(shuō),巴蘭提出的思想,正好和DARPA要做的事情不謀而合,當(dāng)時(shí)的項(xiàng)目主管是羅伯茨, 他已經(jīng)做出了規(guī)劃,要建立一個(gè)叫做阿帕網(wǎng)的網(wǎng)絡(luò)。

但是,當(dāng)時(shí)的每種計(jì)算機(jī)都有自己獨(dú)特的控制方式和文件組織方式,相當(dāng)于每個(gè)人都在說(shuō)自己的語(yǔ)言,根本無(wú)法交談,這怎么能夠?qū)崿F(xiàn)聯(lián)網(wǎng)呢?
解決的辦法就是制定一套通用的協(xié)議。
協(xié)議聽起來(lái)很高大上,但實(shí)際上就是通信雙方的一種約定而已,例如兩個(gè)人見(jiàn)面了,可能會(huì)這么說(shuō):

再來(lái)看一個(gè)計(jì)算機(jī)發(fā)信的協(xié)議:


可以看出,和人類對(duì)話是很相似的, 但是有三個(gè)非常重要的要素:

阿帕網(wǎng)的通信協(xié)議叫1822, 這是因?yàn)槟欠輬?bào)告的編號(hào)是1822, 可見(jiàn)當(dāng)時(shí)工程師也不知道該起什么名稱。
在羅伯茨的規(guī)劃中,主機(jī)不應(yīng)該處理數(shù)據(jù)路由的任務(wù),這個(gè)任務(wù)應(yīng)該有一個(gè)小型的廉價(jià)計(jì)算機(jī)來(lái)承擔(dān), 羅伯茨把它稱為IMP 。

主機(jī)把數(shù)據(jù)包發(fā)給IMP,IMP查看目標(biāo)地址,或者把它傳遞到本地連接的主機(jī),或者傳遞給另外一個(gè)IMP。
為了防止數(shù)據(jù)包丟失,發(fā)送方IMP會(huì)暫存數(shù)據(jù)包,直到獲得接收方IMP的確認(rèn)為止, 如果沒(méi)能收到確認(rèn),它就重新發(fā)送。(注意,這時(shí)候是中間的路由節(jié)點(diǎn)實(shí)現(xiàn)了失敗重傳)
1969年底, 阿帕網(wǎng)初步建成,將位于加州大學(xué)洛杉磯分校,加州大學(xué)圣巴巴拉分校,猶他大學(xué),斯坦福研究院的4個(gè)計(jì)算機(jī)中心成功連接在一起,人類從此進(jìn)入了網(wǎng)絡(luò)時(shí)代。

在阿帕網(wǎng)的激勵(lì)下,越來(lái)越多的網(wǎng)絡(luò)建立起來(lái),夏威夷建立了無(wú)線電網(wǎng)絡(luò),硅谷發(fā)明了以太網(wǎng),太空的衛(wèi)星也組建了衛(wèi)星網(wǎng)絡(luò)。
它們雖然都是分組交換網(wǎng),但是都不兼容,無(wú)法互聯(lián)。

1973年, 鮑伯·卡恩(Bob Kahn)決定解決這個(gè)問(wèn)題,他拉來(lái)了溫頓·瑟夫(Vinton G.Cerf)當(dāng)合作伙伴。


鮑伯·卡恩和溫頓·瑟夫做出的這個(gè)決定極其關(guān)鍵:可靠性的重?fù)?dān)從此由終端(發(fā)送和接收信息的主機(jī))來(lái)負(fù)責(zé),這樣網(wǎng)絡(luò)自身就可以極大簡(jiǎn)化。

這樣就對(duì)網(wǎng)絡(luò)的要求就達(dá)到了最低:只需要接過(guò)這個(gè)數(shù)據(jù)包,盡力地傳遞它就好了。
在此思想的基礎(chǔ)上, 卡恩和瑟夫最后寫出了著名的TCP/IP協(xié)議草案。
但是TCP/IP到底怎么樣呢?1977年11月,卡恩和瑟夫做了一個(gè)有里程碑意義的實(shí)驗(yàn)。
數(shù)據(jù)包從一輛載有無(wú)線傳輸器的箱式貨車發(fā)出,進(jìn)入阿帕網(wǎng),然后通過(guò)專用衛(wèi)星鏈路到達(dá)倫敦,再通過(guò)衛(wèi)星傳輸網(wǎng)絡(luò),到達(dá)阿帕網(wǎng), 最后傳回南加州大學(xué)信息科學(xué)研究所,行程 9.4 萬(wàn)英里,沒(méi)有丟失一個(gè)比特的數(shù)據(jù)信息!

TCP/IP的發(fā)展也不是一帆風(fēng)順的,它遇到了一個(gè)強(qiáng)勁的競(jìng)爭(zhēng)對(duì)手:國(guó)際標(biāo)準(zhǔn)化組織(ISO)。
幾十年以來(lái),ISO曾經(jīng)為一系列產(chǎn)品制定了世界標(biāo)準(zhǔn),這一次他們希望主導(dǎo)網(wǎng)絡(luò)領(lǐng)域, 于是一個(gè)叫做OSI的參考模型被制訂出來(lái),并且大力推廣。

瑟夫努力勸說(shuō)讓 IBM、DEC、HP 等大廠支持 TCP/IP, 但都遭拒絕,在他們看來(lái)TCP/IP只是一項(xiàng)研究試驗(yàn),甚至是學(xué)術(shù)玩具。

1988年,歐洲很多國(guó)家都加入了OSI的陣營(yíng),美國(guó)政府立即回應(yīng),將TCP/IP作為官方標(biāo)準(zhǔn)。 如果有更多的國(guó)家選擇OSI,互聯(lián)網(wǎng)的歷史將會(huì)徹底被改寫。
然而,多年前的一次無(wú)心之舉,讓TCP/IP取得了關(guān)鍵的競(jìng)爭(zhēng)優(yōu)勢(shì)。
1981年,DARPA資助BBN公司(阿帕網(wǎng)的承包商)和加州大學(xué)伯克利分校,把TCP/IP協(xié)議加入U(xiǎn)nix操作系統(tǒng)。
當(dāng)時(shí)還在上研究生的天才Bill Joy拒絕了BBN公司的代碼,理由是BBN寫的TCP/IP代碼實(shí)在是差勁,Bill Joy另起爐灶,很快就在BSD Unix當(dāng)中實(shí)現(xiàn)了一個(gè)高性能的TCP/IP協(xié)議。

Unix的廣泛傳播極大助力了TCP/IP的發(fā)展,事實(shí)證明,從實(shí)踐中來(lái)的TCP/IP協(xié)議非常優(yōu)秀,非常開放,很快,TCP/IP無(wú)處不在,輕松擊退了OSI的進(jìn)攻,成為互聯(lián)網(wǎng)的標(biāo)準(zhǔn)。
OSI現(xiàn)在只能停留在教科書中,讓大家瞻仰了。

1989年,歐洲原子能研究中心的蒂姆·伯納斯·李提出了萬(wàn)維網(wǎng)(World Wide Web)的概念, 并且基于TCP/IP發(fā)明了HTTP協(xié)議、 HTML頁(yè)面和Web服務(wù)器。
這三項(xiàng)技術(shù)迅速普及開來(lái),構(gòu)建了無(wú)比精彩的互聯(lián)網(wǎng)世界。
向這些互聯(lián)網(wǎng)的先驅(qū)們致敬!
如需轉(zhuǎn)載,請(qǐng)通過(guò)作者微信公眾號(hào)coderising獲取授權(quán)。