1970年代,雖然盛行著電視這種又落后又簡陋的媒體,但還不至于蒼白得完全沒有現(xiàn)代通訊系統(tǒng)的色彩。 的確,當時美國國防部高級研究計劃署開發(fā)的最先進的阿帕網(wǎng)(The Advanced Research Projects Agency Network,世界上第一個運營的封包交換網(wǎng)絡(luò),全球互聯(lián)網(wǎng)的始祖),其調(diào)制解調(diào)器速度也僅為50 Kbps,且體積足有冰箱般巨大;至于流傳甚廣的貝爾103型調(diào)制解調(diào)器,其傳輸速度也只有可憐的每秒300比特。幸好隨著計算機總量的增加,長途數(shù)字通信已經(jīng)相當普及了。終端機也可以通過相對較短的幾根簡單線路或者更復(fù)雜的多點系統(tǒng),與大型計算機或微型計算機連接。
這些都是陳芝麻爛谷子了。七十年代真正的新鮮玩意兒是局域網(wǎng)(the local area network ,LAN)。它是怎么實現(xiàn)將所有計算機連接起來的呢?
局域網(wǎng)的亮點在于,它可以連接不止兩個計算機系統(tǒng)。因此,一根簡單的單線雙向傳輸線是不夠用的。理論上說,星型、環(huán)型、總線拓撲架構(gòu)都可以將成千上萬臺計算機連成局域網(wǎng)。星型總線拓撲架構(gòu)將每臺計算機與好幾個中心節(jié)點連接,這顯然可以勝任這一要求。總線拓撲結(jié)構(gòu)則是由唯一一根長電纜組成,計算機沿著電纜排布。而在環(huán)型拓撲結(jié)構(gòu)里,一根電纜將一臺臺計算機串起來,最后首尾相接,形成完整的環(huán)型結(jié)構(gòu)。
Pic: 拓撲結(jié)構(gòu)(Topology)
而在實際操作上,事情遠沒有理論簡單。令牌環(huán)網(wǎng)(Token Ring),是一種使用星型拓撲結(jié)構(gòu)的局域網(wǎng)技術(shù)。但這從線纜的連接方式上是看不出來的,因為所有計算機都被連接到中央監(jiān)控系統(tǒng)了(類似于今天以太網(wǎng)的交換機)。但是這些線路確實組成了一個環(huán)型結(jié)構(gòu)。令牌環(huán)網(wǎng)使用了一個復(fù)雜的令牌傳遞系統(tǒng),以此決定是哪一臺計算機、在什么時候可以發(fā)送數(shù)據(jù)封包。在環(huán)型結(jié)構(gòu)中流通著一個令牌,持有令牌的計算機就要負責發(fā)出信息。令牌總線使用了物理總線拓撲結(jié)構(gòu),但同時也有一個令牌傳遞方案,用來判決每臺計算機對總線的訪問權(quán)限。由于其復(fù)雜性,令牌網(wǎng)絡(luò)在很多種故障類型面前都顯得弱不禁風。但這種網(wǎng)絡(luò)形式確實具有“運行效果可以預(yù)測”的優(yōu)勢,網(wǎng)絡(luò)的運行效果可以事先精確地計算得知這一點,在某些應(yīng)用層面具有重要意義。
Pic: 令牌環(huán)網(wǎng)(Token Ring)
但在局域網(wǎng)標準化戰(zhàn)爭中笑到最后卻是以太網(wǎng)。游說標準化組織中的官員,同時倡導(dǎo)自己智能、簡潔、低實施成本的設(shè)計,是以太網(wǎng)的殺手锏。以太網(wǎng)堅持不懈地發(fā)掘、吸收更高速率的網(wǎng)絡(luò)傳輸協(xié)議,并將它們的技術(shù)優(yōu)勢據(jù)為己用,令這場網(wǎng)絡(luò)標準化之爭日益失去懸念。幾十年后,以太網(wǎng)終于一統(tǒng)江湖。
如果你曾經(jīng)留意過你家電腦屁股后面突出的網(wǎng)線,好奇過以太網(wǎng)是從哪里開始、跑了多遠、怎么運作的,不必再抓耳撓腮了。且聽我慢慢道來。
施樂PARC為您呈現(xiàn)
以太網(wǎng)是由鮑勃·麥特考菲(Bob Metcalfe)和其他施樂公司(Xerox) 帕羅奧圖研究中心(Palo Alto Research Center, PARC)的員工在1970年代中期發(fā)明的。PARC的實驗用以太網(wǎng)網(wǎng)速達3Mbps,“這個數(shù)據(jù)傳輸速度比計算機訪問主記憶體要慢,但已經(jīng)夠用了”。由于可觀的網(wǎng)速,數(shù)據(jù)封包不會在以太網(wǎng)接口被延遲。“以太網(wǎng)”這個名字來自“光以太”,一個曾經(jīng)被認為是電磁波傳遞介質(zhì)的虛構(gòu)概念(正如聲波的傳遞介質(zhì)是空氣)。
通過在粗同軸電纜中以廣播方式發(fā)送數(shù)據(jù)包,以太網(wǎng)把網(wǎng)線布線當作廣播用的“光以太”。計算機通過貫穿熔覆和外導(dǎo)體的小孔與內(nèi)導(dǎo)體接觸并相連,與以太網(wǎng)電纜建立起連接。同軸電纜不允許延伸旁路,其兩端配備了終端電阻,可以校正電纜的電氣性能,因此信號可以沿著電纜一直傳輸而不會被反射。所有計算機都能看到所有途經(jīng)的數(shù)據(jù)包,但以太網(wǎng)接口會忽略不是發(fā)送到本地計算機或本地播散地址的數(shù)據(jù)包,因此軟件只需處理發(fā)送至本機的數(shù)據(jù)包就可以了。
Pic: 同軸電纜(coaxial line)
其他的局域網(wǎng)技術(shù)都采用了分散式的機制來分配與共享通信介質(zhì)的訪問,這當中當然不包括以太網(wǎng)。PARC研發(fā)的分布式控制機制實在太高明了,令我想形容為“簡直是精神病人操控的精神病院才能想得出來”,雖然這顯然有失公允。不過我相信大型機和微機生產(chǎn)商們應(yīng)該都會覺得我的比喻還不算太離譜。
以太網(wǎng)的介質(zhì)訪問控制程序(mediaaccess control ,MAC)叫“帶有碰撞檢測的載波偵聽多路訪問”(CSMA/CD)。這一程序是建立在ALOHA網(wǎng)絡(luò)之上的。ALOHA網(wǎng)絡(luò)是1970年代早期搭建在幾個夏威夷小島之間的電臺網(wǎng)絡(luò),幾個發(fā)射站的遠距離無線發(fā)射機都使用相同的頻律。每個發(fā)射站都能隨心所欲地傳輸信息。顯然,當兩個發(fā)射站同時發(fā)射時,會發(fā)生干涉效應(yīng),雙方發(fā)射的信息都會丟失。
Pic: ALOHAnet
為了解決這個問題,網(wǎng)絡(luò)的中央位置在正確接收到數(shù)據(jù)包后要進行一次確認。如果發(fā)送方?jīng)]有收到來自中央位置的確認信息,就隔一段時間后再次發(fā)送相同的數(shù)據(jù)包。當兩個發(fā)射站同時發(fā)射產(chǎn)生了數(shù)據(jù)碰撞時,這個重發(fā)制度能保證雙方的數(shù)據(jù)最終都能發(fā)射出去。
以太網(wǎng)在ALOHA網(wǎng)絡(luò)的基礎(chǔ)上作了若干改進。首先是“載波感測”。以太網(wǎng)站先檢查“以太”是否空載,如果檢測到信號了就排隊等候自己的發(fā)送機會。其次是“多路訪問”和“碰撞檢測”。在共享介質(zhì)中發(fā)射數(shù)據(jù)前,以太網(wǎng)發(fā)射站通過比較準備發(fā)送的數(shù)據(jù)和目前正在電纜中傳輸?shù)臄?shù)據(jù),以免產(chǎn)生干涉效應(yīng)。如果兩者相同,就必然會產(chǎn)生數(shù)據(jù)碰撞。這種情況下,發(fā)送就失敗了。為了確保發(fā)送干涉信息的源頭也能知曉發(fā)生了數(shù)據(jù)碰撞,發(fā)射站在檢測到碰撞后,要發(fā)一個是32比特的倍數(shù)的擁塞信號。
Pic: CSMA/CD
現(xiàn)在雙方都知道它們的數(shù)據(jù)發(fā)送失敗了,因此它們要通過一個“指數(shù)型延遲存取程序”來重新發(fā)送數(shù)據(jù)。一方面,為了不浪費寶貴的帶寬,重新發(fā)送自然是越快越好;另一方面,若雙方都馬上重發(fā),必然會再次引起數(shù)據(jù)碰撞,重發(fā)就沒意義了。因此,每個以太網(wǎng)發(fā)射站都事先通過“某個整數(shù)*傳輸512比特數(shù)據(jù)所需的時間”求得一個最大延遲時間。當一個數(shù)據(jù)封包被成功發(fā)送后,最大延遲時間就被設(shè)定為1。數(shù)據(jù)碰撞發(fā)生時,就將最大延遲時間翻倍,直至漲到1024。之后,以太網(wǎng)系統(tǒng)會在最大延遲時間值內(nèi),隨機選擇一個數(shù)作為實際延遲時間。
比方說,發(fā)生第一次數(shù)據(jù)碰撞后,最大延遲時間變成2,可選的實際延遲時間就成了0和1。顯然,有50%的可能性兩個發(fā)射站都選擇0或者都選擇1,導(dǎo)致另一次數(shù)據(jù)碰撞。如果這樣,最大延遲時間就變成了4,這兩個發(fā)射站第三次發(fā)生數(shù)據(jù)碰撞的幾率降到了25%。如果人品太差連續(xù)發(fā)生了16次數(shù)據(jù)碰撞,以太網(wǎng)系統(tǒng)就認命了,乖乖放棄這個數(shù)據(jù)包。
數(shù)據(jù)碰撞對網(wǎng)絡(luò)運行效果造成的沖擊一度令人們充滿恐懼、不安和懷疑。但實際上,數(shù)據(jù)碰撞很快就能被檢測到,且發(fā)生碰撞的數(shù)據(jù)傳輸馬上就中斷了,所以整個過程都不會浪費太多時間。CSMA/CD制式的以太網(wǎng)在不超負荷的情況下,運行效果其實是相當好的:鮑勃·麥特考菲和大衛(wèi)·博格斯(David Boggs)在1976年發(fā)布的描述實驗用3Mbps以太網(wǎng)的文件里指出,即使256臺計算機都在不斷地發(fā)送大于等于500字節(jié)的數(shù)據(jù)包,仍有超過95%的網(wǎng)絡(luò)容量在成功地傳輸著數(shù)據(jù)。可見這系統(tǒng)實在高明。
標準化之路
直到1970年代末期,以太網(wǎng)的所有權(quán)都屬于施樂。但比起控制著一塊小蛋糕,施樂更愿意在一塊大蛋糕里切上一塊。所以施樂與數(shù)字設(shè)備(Digital)和英特爾(Intel)合作,合體后的DIX(三公司名稱縮寫)大財團創(chuàng)造了(或者至少說是共同投資了)10Mbps的以太網(wǎng)規(guī)格。之后還迅速修復(fù)了部分bug,推出了DIX以太網(wǎng)規(guī)格的2.0版本。
美國電機與電子工程協(xié)會(Instituteof Electrical and Electronics Engineers , IEEE)隨后也加入了這場游戲。最終,為免幫某些廠商賣廣告的嫌疑,IEEE在盡力避免使用“以太網(wǎng)”這一名稱的前提下,推出了如今被當作以太網(wǎng)官方標準的802.3標準。(除了在以太網(wǎng)這名字的范疇有所出入之外,DIX2.0和IEEE802.3是完全兼容的。)
pic: IEEE
盡管實際效果在剛開始時尚算可以,但工程師們不得不承認,整棟大廈的用戶只能用同一根電纜連接的效率實在有限。簡單地從粗同軸電纜上產(chǎn)生旁路是不可能的,這樣數(shù)據(jù)信號會受到不良影響。解決方案是使用中繼器。它們能重復(fù)產(chǎn)生信號,并實現(xiàn)了連接兩個以上的以太網(wǎng)電纜或以太網(wǎng)段。
還有另一個麻煩,足足9.5毫米粗的同軸電纜用起來也不甚方便。譬如說,我就好幾次見過電信公司的家伙在布線時為了令穿墻而過的電纜彎折往下走而不得不出動到大錘,還委實耗費了好一會兒功夫。此外還有人跟我說過,他喜歡將一整段筆直的同軸電纜放在車子里:“如果條子在你的車里翻到一根棒球棒,會告你私藏武器;而一根同軸電纜在干架時跟球棒一樣好使,但條子從來不會因為一根電纜我麻煩。”
盡管在威嚇流氓這種歪門邪道上的效果差些,但說到正兒八經(jīng)的用途,細同軸電纜可比粗同軸電纜好用多了。細同軸電纜只有粗同軸電纜一半粗,跟電視天線電纜很像。若一臺新的計算機想接入粗同軸電纜連接成的局域網(wǎng),必須像吸血鬼一樣吸附在網(wǎng)線的小孔上。細同軸電纜則擺脫了這種形式。細同軸電纜末端是BNC接頭,計算機可以通過T型接頭與之連接。但細同軸電纜構(gòu)成的以太網(wǎng)段也有一大缺點,一旦電纜在任何位置出現(xiàn)受損情況,就整個局域網(wǎng)都無法運行了。新電腦接入網(wǎng)絡(luò)時自然會出現(xiàn)這種情況。而且由于電纜必須穿過每一臺計算機,全網(wǎng)中斷的意外更是時有發(fā)生。所以必須尋求更好的網(wǎng)絡(luò)架建方法。
1980年代末出臺了一種新的規(guī)格,這種規(guī)格將以太網(wǎng)架建在非屏蔽雙絞線電纜上:用地球人的話來說就是架建在電話線上。以太網(wǎng)使用的非屏蔽絞線電纜(UTP),由四對細同軸電纜絞接而成。這種電纜可以用單一銅線或細銅線束構(gòu)成(前者電氣性能更好,后者更容易加工)。UTP電纜配備了如今很常見的RJ45型塑料卡標式連接器。架建在UTP上的10Mbps和100Mbps以太網(wǎng)則只需用到雙絞線:一根發(fā)送數(shù)據(jù),一根接收數(shù)據(jù)。
Pic: UTP雙絞線 (UTP with two twisted pairs)
搭建這種規(guī)格的局域網(wǎng)多了一個比以往稍顯復(fù)雜的問題,即每一根UTP電纜都是自身的以太網(wǎng)段。因此,為了在兩臺以上的計算機之間搭建局域網(wǎng),必須使用多端口中繼器(它更常見的名字是集線器)。簡單來說,中繼器將正常情況下收到的信號,和數(shù)據(jù)碰撞時產(chǎn)生的擁塞信號重復(fù)發(fā)送到所有的端口。在以太網(wǎng)絡(luò)環(huán)境里,復(fù)雜的規(guī)則制約了集線器的拓撲結(jié)構(gòu)和使用范圍。考慮到如今應(yīng)該沒人再對如何使用集線器搭建一個規(guī)模巨大的以太網(wǎng)感興趣了,具體細節(jié)姑且不表。
搭建局域網(wǎng)麻煩不少,到現(xiàn)在還一直糾纏著我們。計算機用1號和2號插腳(插腳是指在計算機和其它通訊設(shè)備中信號接口的接口處分叉的接觸處,插腳是陽性連接器的一部分,用來插進陰性連接器)發(fā)送信號,3號和6號插腳接收信號。但對于集線器和交換機而言,情況有所不同。這句話的意思是一臺計算機通過普通電纜和集線器連接,但需要連接兩臺計算機或兩臺集線器的話,就必須動用到交叉線纜,一頭把1、2號插腳相連,另一頭把3、6號插腳相連(反之亦然)。好玩的是,由蘋果公司領(lǐng)導(dǎo)的開發(fā)聯(lián)盟開發(fā)的火線接口(IEEE 1394,別名火線FireWire接口,一種高速傳送接口)干脆只允許使用交叉線纜,結(jié)果這樣一刀切反而降低了對用戶造成的不便。
Pic: 火線(FireWire)
無論如何,解決了以上種種復(fù)雜難題后,最終的碩果是一套高速而靈活的系統(tǒng)——這套系統(tǒng)快得目前仍在被使用。不過,我們需要更高的網(wǎng)速。
追求速度:快速以太網(wǎng)
盡管現(xiàn)在看來難以置信,但在1980年代初,10Mbps的以太網(wǎng)已經(jīng)是非常非常快的網(wǎng)速了。但不妨靜心想想:有哪項超過30年的技術(shù)現(xiàn)在的電腦還在用?300波特(每秒鐘發(fā)送300個bit數(shù)據(jù))的調(diào)制解調(diào)器?讀寫周期500ns的儲存器?菊瓣字輪式打印機?唯有10Mbps以太網(wǎng)。到了今天,10Mbps仍不算慢得完全沒法用的網(wǎng)速,它依然是我們電腦上10/100/1000Mbps以太網(wǎng)接口的組成部分。
到了1990年代初期,以太網(wǎng)不再像十年前那樣覺得自己快得無可匹敵了。不妨看看1977年迪吉多(Digital Equipment Corporation, DEC)發(fā)布的計算機VAX-11/780。780配有一些2MB的RAM,主頻為5MHZ。它幾乎每秒能處理一百萬條機器語言指令,1757條dhrystones指令(dhrystones是1984年開發(fā)的一個CPU性能基準程序,這一名字是對更古老的性能基準程序Whetstone的發(fā)揮)。目前流行的英特爾i7計算機可能有3GHz的主頻和3GB大的RAM,每秒能執(zhí)行1700萬條dhrystones指令。如果網(wǎng)速增長得跟處理器速度一樣快,今天的i7至少會有10GBps的網(wǎng)絡(luò)接口,也許還會有100Gbps的。
Pic: VAX11-780
但事實是網(wǎng)速的增長并沒有這么夸張。幸好,到了1990年代,有一種新的局域網(wǎng)技術(shù),足足比常規(guī)以太網(wǎng)快10倍:光纖分布式數(shù)據(jù)接口(FiberDistributed Data Interface, FDDI)。
FDDI使用的是一種速度高達100Mbps的環(huán)型拓撲結(jié)構(gòu)。當主環(huán)在某處發(fā)生問題整體崩潰時,F(xiàn)DDI還有另一個支持自動線路備份的后備環(huán)。一個FDDI網(wǎng)絡(luò)至少可以橫跨200公里。所以FDDI可以充當非常高效的跨局域網(wǎng)大容量網(wǎng)絡(luò)主干。盡管以太網(wǎng)和FDDI在很多方面不同,實現(xiàn)雙方數(shù)據(jù)封包格式互相轉(zhuǎn)化還是可以的,所以以太網(wǎng)和FDDI可以通過網(wǎng)橋?qū)崿F(xiàn)連接。
網(wǎng)橋連接在多個局域網(wǎng)段上,可以獲悉哪個地址在哪個網(wǎng)段被使用了。之后在必要時,網(wǎng)橋?qū)⒃淳W(wǎng)段的數(shù)據(jù)包重發(fā)送到終網(wǎng)段。這意味著,不同于中繼器,本地的信息傳輸(也包括數(shù)據(jù)碰撞!)會保留在本地。所以網(wǎng)橋?qū)⒕W(wǎng)絡(luò)分割為獨立的沖突域,但所有的數(shù)據(jù)封包依然在整個網(wǎng)絡(luò)里到處跑,所以使用了網(wǎng)橋的網(wǎng)絡(luò)依然是個單一的廣播域。
路由器可以將網(wǎng)絡(luò)劃分為多個廣播域。路由器在整個網(wǎng)絡(luò)模型的網(wǎng)絡(luò)層運行,比以太網(wǎng)高了一級。這意味著路由器在收到數(shù)據(jù)封包時就會去除以太網(wǎng)的數(shù)據(jù)頭信息,加上低一層的數(shù)據(jù)頭信息(以太網(wǎng)層或者其他層的),然后發(fā)送給下一方。
FDDI在連接以太網(wǎng)段和服務(wù)器時能發(fā)揮作用,但它和細同軸電纜以太網(wǎng)一樣有“牽一發(fā)而動全身”的問題,而且成本相當昂貴。隨后有人開發(fā)了CDDI,即改用銅線的FDDI,但這貨基本上一無是處。因此IEEE后來又開發(fā)了快速以太網(wǎng),即100Mbps版本的以太網(wǎng)。
10Mbps以太網(wǎng)使用了“曼切斯特編碼技術(shù)”傳輸數(shù)據(jù)。曼切斯特編碼技術(shù)將每一比特的數(shù)據(jù)轉(zhuǎn)換為一電纜上一個個或低或高的電壓。0被編碼為“低電壓-高電壓”的跳變波形,而1則是“高電壓-低電壓”的跳變波形。這種做法基本上把傳輸?shù)臄?shù)據(jù)量翻倍了,但可以避免數(shù)據(jù)中出現(xiàn)長串0或1的麻煩:傳輸介質(zhì)基本上無法長期維持低電壓或高電壓的狀態(tài),這樣信號看起來就跟直流電壓一樣毫無變動。這還會引起連鎖反應(yīng)。計算機也會發(fā)懵:“我剛剛看到那一長串零到底有幾個?93比特還是94比特?”曼切斯特編碼技術(shù)通過在每一比特數(shù)據(jù)之間插入一個高電壓或低電壓,避免了以上兩種問題。無論同軸電纜還是第三等級UTP線纜,都足以應(yīng)付這些額外所需的帶寬。
對100Mbps以太網(wǎng)而言,實現(xiàn)曼切斯特編碼技術(shù)自然不成問題。但對UTP來說,以這樣的速度傳輸數(shù)據(jù)就力不從心了。所以,100BASE-TX以太網(wǎng)從CDDI處借鑒了一種名為4B/5B MLT-3的編碼技術(shù)。這種技術(shù)將4比特的數(shù)據(jù)轉(zhuǎn)化為5比特。這樣的話,就能保證每個5比特的數(shù)據(jù)塊里肯定有2個跳變波形。這種做法也產(chǎn)生了一些特殊信號,例如說沒有數(shù)據(jù)供發(fā)送時產(chǎn)生的空白信號。
多階傳輸-3型編碼技術(shù)則是在做“-1, 0, +1, 0”的循環(huán)。如果在一個4B/5B數(shù)據(jù)塊里一比特的數(shù)據(jù)是1,那么就跳變到下一個值。如果該比特的數(shù)據(jù)是0,那么信號在這一比特里就維持在之前的電位。這種做法限制了數(shù)據(jù)頻率的峰值,使之與UTP線纜的局限性相匹配。但是,UTP線纜必須符合要求更嚴格的CAT-5型規(guī)格,而不僅僅是專供10BASE-T以太網(wǎng)使用的CAT-3型規(guī)格。除了100BASE-TX規(guī)格以外,還有很多CAT-5型UTP可用的快速以太網(wǎng)線纜規(guī)格,但只有100BASE-TX成為了大眾市場的產(chǎn)品。
評論
查看更多