- 一本書讀懂TCP/IP
- 王元杰 楊波 周亞寧 陳志剛 紀旻旻
- 8461字
- 2019-11-22 18:56:10
2.5 信息大腦——主機
主機從來都覺得自己是IP世界的主人,IP世界所有其他元素都是為它服務的。
沒錯,站在自己的角度看世界,誰都會認為自己是絕對的主角。
TCP/IP世界的信息,是在主機之間進行交互的。PC、服務器、工控機,這些都是主機!還有人會問,上網本是不是主機?各種PAD是不是主機?智能手機是不是主機?這些問題的確讓我們有點難以回答。廣義點講,具有計算、存儲能力的通信終端,都可以歸為主機,本書并不打算過多地糾纏于這些概念的嚴肅厘清(其實再嚴肅也很難厘清),這方面的似是而非無傷大雅。
我們說“互連”,其目的就是為了把所有的主機連接在一起,其他元素,路由器、交換機、防火墻、網線、無線電頻率,似乎都是陪襯。主機不但有存儲功能,還要接收、發送、生成、處理IP包,并將IP包中的信息通過外設呈現出來,使人的感官能感受到,也就是聽到或者看到(未來可能會有“聞到”)。
TCP/IP世界的主機除了CPU、內存、用于等硬件連網的網絡硬件卡外,通常具備以下的幾類部件與IP有直接聯系:以太網卡、操作系統、協議棧、數據庫、應用軟件。
1.PC
PC(個人計算機)這個名詞我們就不解釋了,就是那個你辦公桌上擺著的,每天都要面對的,干什么工作似乎都離不開的、讓你又愛又恨的家伙。
1981年8月,國際巨頭IBM在紐約曼哈頓華爾道夫飯店的會議廳展示了一款小型計算機。在此之前,計算機是普通用戶難以企及的龐然大物。IBM公司為它的新產品命名為IBM PC(Personal Computer,個人計算機)。
盡管之前已經有幾家公司在做類似的產品,但因為IBM的實力和它準確的價格、性能定位,使其迅速成為個人計算機業的霸主。

圖2.10 PC
1982年,美國《時代》周刊評選這臺PC的老祖宗為“年度封面人物”,在隨后的兩年時間里,IBM賣出了20多萬臺PC,這可是它當初確定的未來5年的銷售目標!
《時代》周刊當時還預測“2000年將會有8 000萬臺PC投入使用”,但實際上21世紀初全球個人電腦總數已達5億臺!更重要的是,PC給人們生活帶來了無法逆轉的改變。
我們有必要了解一下IBM,這家1911年創立于美國的企業(剛成立時候叫作CTR公司,1924年改名為IBM,即“國際商用機器公司”),總部位于紐約阿蒙克市,目前擁有全球雇員30多萬人,是全球最大的信息技術和業務解決方案公司。
然而在IBM創立之初,該公司的主要業務是商用打字機、員工計時系統、磅秤(雷倒!)、自動切肉機(再次雷倒!),而后轉為文字處理機、穿孔卡片設備等。第二次世界大戰期間,IBM甚至還造過武器。
今天的IBM是一艘工業企業的超級航母,在多個領域都有很高造詣。
在計算機產業,它是長期的領導者,在大型機/小型機和便攜機方面的成就舉世矚目。當年與國際象棋世界冠軍卡斯帕羅夫對戰的超級計算機“深藍”以及“更深的藍”就出自IBM。
軟件方面,IBM是除微軟外的世界第二大實體,整合有五大軟件品牌,包括Lotus、WebSphere、IOD、Rational和Tivoli等,在各自方面都是領先者或強有力的競爭者。
2005年,IBM出售桌面計算機與筆記本電腦業務給中國IT企業——聯想集團。自此,Thinkpad易主Levono。
2009年,IBM的CEO彭明盛提出了一個龐大的近乎瘋狂的“智慧地球”計劃,這將成為未來10年藍色巨人IBM戰略發展的核心,每年將投入30億美元用于此計劃的實施。
這個計劃的定義大致是:將感應器嵌入和裝備到電網、鐵路、大壩、建筑等各種現實實體中,形成物物相聯,然后通過超級計算機和云計算將其整合,實現社會與物質世界的高度融合。在此基礎上,人類可以更加精細和動態地管理生產和生活,達到“智慧”狀態,提高資源利用率和生產力水平,改善人與自然界的關系。
在第10章的“物聯網”一節,我們將會重新開啟這一話題。
2.服務器與工控機
服務器是一種運行管理軟件以控制對網絡或網絡資源(磁盤驅動器、打印機等)進行訪問的計算機,并能夠為在網絡上的計算機提供資源,使其猶如工作站那樣地進行操作。
工控機(Industrial Personal Computer)是一種加固的增強型個人計算機,它可以作為一個工業控制器在工業環境中可靠運行。
我們知道,在工業現場,一般都有強烈的震動,灰塵特別多,還有很高的電磁場干擾,并且一般工廠都是連續作業的,工人三班倒,計算機極少關機。
在這樣的環境下,一般的PC機和服務器是支撐不住的,這就要工控機大顯身手了。
工控機的機箱采用鋼結構,有較高的防磁、防塵、防沖擊的能力,機箱內配置有專用電源,抗干擾能力很強。最為重要的一點是,工控機連續工作的能力很強,很多工控機都連續工作達數年之久!
早在20世紀80年代初期,美國AD公司就推出了類似工控機的MAC-150工控機,隨后IBM公司正式推出工業個人計算機IBM7532。
3.虛擬主機
一臺服務器,只提供一種資源,這種資源對硬件和帶寬的要求并不高,無論是CPU、內存還是硬盤,都是一種浪費。能不能在這臺服務器上運行多個應用呢?
虛擬主機將在這樣的應用中大顯身手。
虛擬主機是在網絡服務器上劃分出一定的磁盤空間供用戶放置站點和應用組件,提供必要的站點功能與數據存放,以及必要的傳輸功能。
CPU和內存,可以同時處理多個進程;硬盤是文件系統,多個應用之間并不沖突,甚至還互相有關聯。
這一方案的出現,對IP世界產生了重大貢獻!由于多臺虛擬主機共享一臺真實主機的資源,每個用戶承受的硬件費用、網絡維護費用、通信線路費用均大幅度降低,互聯網真正成為人人用得起的網絡,這對中小企業而言意義重大。
每一個虛擬主機都具有獨立的域名和完整的互聯網服務器(支持WWW、FTP、電子郵箱或其他互聯網服務)功能。從用戶角度根本看不出他們在同一臺服務器上。
當然,虛擬主機不是萬能的,它也會受到性能限制。一臺主機只能夠支持一定數量的虛擬主機,具體數量視主機性能而定;當超過這個數量時,性能急劇下降。
虛擬主機暫時介紹到這里,在云計算一節里,我們還會提到一個與此類似的概念——虛擬化。
4.以太網卡
以太網卡是一塊能插在計算機上的卡,一般它們都被插到計算機的PCI插槽上。這張卡一般至少有一個以太網接口(一般是RJ45的接口)。以太網卡的驅動程序會與操作系統中的協議棧接駁。
以太網卡上有自己的地址——MAC地址,以太網卡在誕生之日就被寫死了MAC地址,當然,黑客高手們有辦法修改這些地址。
目前大量的計算機主板已經集成了以太網卡,用戶無需單獨購買,即可連接以太網線。而在10多年前,網卡曾被認為是計算機的高級外設。

圖2.11 計算機裝上了以太網卡,就不再是“信息孤島”
5.操作系統
操作系統是控制程序運行,管理系統資源(尤其是磁盤、內存、接口和外設),并為用戶提供操作界面的系統軟件的集合。
自計算機誕生以來,人類創造了至少100種操作系統,而真正能否發揚光大被人們廣泛使用的,除了之前提到的UNIX和LINUX,還有微軟的DOS和Windows、蘋果的MAC等,以及后面我們會介紹的手機操作系統。
為什么會出現“操作系統”這一概念?應用軟件不能直接運行在計算機硬件上嗎?加上中間這個“系統”,會不會對性能造成影響?

圖2.12 操作系統是計算機硬件和軟件之間的“橋梁”
我們知道,計算機的外設種類繁多,在一臺計算機上安裝外設,最關鍵的是需要讓計算機的CPU能夠有效管理此外設,而這種管理,是通過“驅動程序”進行的。驅動程序下對硬件外設,上對應用程序,它是這兩者之間的橋梁和紐帶。
很容易理解,應用程序必須能夠調用這種驅動程序,才能對此外設進行操作。假如沒有操作系統,應用程序必須直接與外設的驅動程序打交道,會讓社會分工變得混亂:做應用程序的軟件人員,必須了解硬件;做硬件的人,不得不去學習應用程序的內核——這是嚴重的資源浪費。操作系統就是基于這樣的背景下誕生的。
不可否認的是,當前主流的操作系統都包含了大量的應用程序,Windows就自帶各種游戲、記事本、寫字板、網頁瀏覽器(Internet Explorer)等,這些都是商業運作的需要,而非操作系統的初衷。
第一部計算機ENIAC沒有操作系統,其更像是一個機械算盤,這種計算機的建立方式與效能,不足以執行任何一種操作系統。1947年,晶體管發明,接著,莫里斯·威爾克斯發明了微程序方法,使得計算機不再是機械設備,而是電子產品。系統管理工具以及簡化硬件操作流程的程序很快就出現了,且成為操作系統的鼻祖。
20世紀60年代,商用計算機制造商開始制造所謂“批次處理系統”。這種系統可將工作的建置、調度以及執行序列化。此時,廠商為每一臺不同型號的計算機創造不同的處理系統,因為為某個特定型號計算機而寫的程序無法移植到其他計算機上執行。如果這種狀況持續下去,就根本不可能有計算機高度普及的今天。
計算機界大腕IBM深喑其道,銳意改革,于1964年推出了一系列用途和價位都不同的大型計算機——IBM System/360。這是大型主機的經典之作。他們都共享代號為OS/360的操作系統,這是一次偉大的嘗試!System/360系列大獲成功,直接導致其成為IBM以后大型系統的祖先。
接著發生的故事,我們之前已經講過,UNIX于20世紀60年代末呱呱墜地,LINUX于1991年橫空出世。
就在UNIX出現后的1975年,一個后來曾經成為全球市值最高的企業誕生了。這家公司開始非常低調,連起名字都非常“弱勢”——Micro(微小)-soft(柔軟),沒錯,Microsoft,微軟。他們開發的軟件,系統龐大;他們的行事風格,足夠的強硬,這與“微軟”二字完全不符。

圖2.13 微軟公司的標志變遷
19歲的哈弗大學輟學生比爾·蓋茨和他的高中校友保羅·艾倫建立了微軟公司,總部設在華盛頓州的雷蒙德市,注意,華盛頓州和華盛頓市完全是兩回事。華盛頓州位于美國西部,與汽車城西雅圖毗鄰。
像所有剛剛創業的年輕人一樣,他們首先得找到能填飽肚子的家伙事兒。于是他們根據自己的特長,開賣當時流行的BASIC解譯器,也順手做點其他小生意。
由于微軟是少數幾個BASIC解譯器的商業生產商,很多家庭計算機生產商在其系統中采用微軟的BASIC解譯器。很快,微軟BASIC解譯器成為公認的市場標準。但是BASIC再成功,也無法讓微軟變成一家世界級的大公司。這讓雄心勃勃的蓋茨很苦惱。
1980年,一個重大事件改變了微軟和這對高中好友——IBM選擇微軟為其新PC機編寫關鍵的操作系統軟件!促成這件事兒的,很可能是蓋茨的母親——當時她是IBM的董事。
俗話說“背靠大樹好乘涼”,這可是千載難逢的好機會!如果運氣好,說不定能成為IBM的永久合作伙伴,這個涼如果不乘,那豈不太傻了?如果蓋茨先生這么想,他也許會成為IBM的一個部門經理,成為一名高級白領,年薪300萬或者500萬美元,并于某年某日光榮退休,榮歸故里,諸如此類。
然而蓋茨先生不是這么想的,因為他不僅僅是個技術高手,更是個絕頂聰明和富有雄心(也許是野心)的商人。
他以5萬美元的價格從西雅圖一位程序編制者手中買下了一個操作系統——QDOS的使用權,在進行部分改寫后提供給IBM,并將其命名為Microsoft DOS。IBM-PC的普及使MS-DOS取得了巨大的成功,因為其他PC制造者都希望與IBM兼容。
1984年,微軟公司的銷售額超過1億美元。隨后,微軟公司繼續為IBM、蘋果公司以及無線電器材公司的計算機開發軟件。但隨著微軟公司的日益壯大,IBM愈發感覺到,微軟雖然是自己的供應商,但其野心似乎太大了!因為微軟已經在許多方面與IBM成為競爭對手!
終于,在1991年,IBM和蘋果分別與微軟解除了合作關系。但IBM與微軟的合作關系從未間斷過,兩個公司保持著既競爭又合作的復雜關系——一個軟硬件兼顧的帝國,一個純軟件大鱷,唇齒相依,唇亡齒寒,誰都清楚,做自己最擅長的事情,方為正道!
在隨后的30年間,在各自的主營業務方面,IBM和微軟從未大規模正面相撞。而蘋果公司,在著名的Apple II過氣后就沉睡了,直到21世紀,蘋果公司才在喬布斯的帶領下重振雄風。有關蘋果公司和喬幫主的故事,第8章給讀者詳細介紹。
1998年,蓋茨的個人資產總值超過了500億美元大關,據福布斯統計,他連續十多年成為全球首富。
Windows操作系統(中文翻譯為“視窗”)是微軟公司最著名的產品,它在高峰時曾占據全世界90%以上的個人計算機桌面。
北京奧運會前1個多月,比爾·蓋茨正式退休,淡出微軟日常管理工作。現任CEO是蓋茨的大學好友——史蒂芬·鮑爾默。
又一個同學!看來做蓋茨的同學,真是一件幸運的事。
按照中國人起小名的傳統,給孩子起個“爛”名字好養活,這在微軟身上獲得了應驗。因為在今天看來,雖然微軟一直致力于軟件開發,卻既不“微”又不“軟”,它已經成為全球歷史上最強大的軟件帝國!
6.數據庫
無論是金融行業、教育行業,還是零售、衛生、公共安全、運輸業,從業人員都要面對龐大的數字集合,他們需要對這些數字進行記錄和存儲,需要隨時查詢,經常性地分析。
任何一個天才都不可能用大腦記錄這所有的數字,必須借助于計算機,我們也無須記錄這些龐大數量的數字。在計算機里面,如果我們安裝一類軟件,它專門負責對數據信息進行存儲、查詢、調用和分析,看來是十分必要的。
這類軟件,就是數據庫。今天我們對數據庫這個東西都不會陌生,它為人類海量數據的處理提供最基本的支持能力。
而在60多年前,人們對數據的管理還處于初級階段。那時候的數據管理,都是通過大量的分類、比較和表格繪制的機器運行數百萬穿孔卡片來進行,并將運行結果在紙上打印出來或者制成新的穿孔卡片。而數據管理,則是對這些穿孔卡片進行物理的存儲和處理。
1951年,美國雷明頓蘭德公司Univacl計算機推出了一種一秒鐘可以輸入數百條記錄的磁帶驅動器,數據管理的革命就此開始。
手筆最大的還是藍色巨人。1956年,IBM制造了一款“海量存儲器”,這個驅動器有50個盤片,每個盤片直徑2英尺,可以存儲5MB的數據!別笑,這在當時已經是非常大的信息量了!250萬漢字的書,也就占用5MB的存儲量,這難道不算海量嗎?想想一部《辭海》也才只有2 200萬字!也就是說,9張這樣的驅動器就可以存儲整個《辭海》了。
數據庫系統的萌芽出現于20世紀60年代。當時計算機開始廣泛地應用于數據管理,對數據的共享提出了越來越高的要求。傳統的文件系統已經明顯落后于時代。這時,能夠統一管理和共享數據的數據庫管理系統(DBMS)降臨人間。
數據庫系統的核心和基礎是數據模型,各種數據庫管理系統軟件都是基于某種數據模型建立起來的。所以通常,人們按照數據模型原理,將數據庫系統分成網狀數據庫、層次數據庫和關系型數據庫三類。
有趣的是,最早出現的網狀數據庫的所有者,是今天以醫療、金融、塑料、飛行器引擎和杰克·韋爾奇聞名于世的GE公司,他們在1961年開發成功的IDS系統,是最早的網狀數據庫系統。這也是第一個數據庫管理系統——集成數據存儲。
在當時,IDS得到了廣泛的應用。它具有數據模式和日志的特征,但只能在GE主機上運行,并且數據庫只有一個文件,數據庫所有的表必須通過手工編碼來生成。
之后,GE的一個客戶——古德里奇公司重新寫了這個系統,并命名為集成數據管理系統(IDMS)。1973年,一家叫作Cullinane公司開始出售古德里奇公司的IDMS改進版本,并逐漸成為當時世界上最大的軟件公司。后來,Cullinane改名為Cullinet。
Cullinet是大名鼎鼎的Powerbuilder的最早規劃和開發者。Powerbuilder是基于PC的圖形化數據庫開發工,目前歸Sybase公司所有。
層次型數據的鼻祖,還是那個藍色巨人——IBM。
1968年,IBM推出了全世界最早的層次型數據庫系統——IMS,一種適合其主機的層次數據庫。從20世紀60年代末至今,已經發展到第6版本,提供群集、N路數據共享、消息隊列共享等一大堆先進特性的支持。這個具有40多年歷史的數據庫產品在如今的WWW應用、商務智能(BI)應用中仍然扮演著重要角色。
網狀數據庫和層次數據庫很好地解決了數據的集中和共享問題,但是在數據庫獨立性和抽象級別上仍有很大缺陷。用戶在對這兩種數據庫進行存儲時,仍然需要明確數據的存儲結構,指出存取路徑。而后來出現的關系型數據庫,則沒有這些麻煩。
1970年,IBM研究院的科德博士最早提出了“關系模型”的概念,奠定了關系模型的理論基礎,后來這位仁兄又多次發表論文,論述了范式理論和衡量關系系統的12條標準,用數學理論奠定了關系型數據庫的基礎。
1974年的一次技術研討會,開展了一場以科德博士為首的支持關系數據庫的派系和反對關系數據庫的派系的大辯論。這次著名的辯論推動了關系數據庫的發展,使其最終成為現代數據庫產品的主流。
關系模型建立之后,IBM公司在圣何塞實驗室增加了更多的研究人員研究這個項目,這個項目就是著名的System R。
System R的目標,是論證一個全功能關系數據庫管理系統的可行性。該項目結束于1979年,完成了第一個實現SQL的關系型數據庫。然而令人遺憾的是,IBM對IMS的承諾阻止了System R的投產,一直到1980年,System R才作為一個產品正式推向市場。
1976年,霍尼韋爾公司開發了第一個商用關系數據庫系統——Multics Relational Data Store。關系型數據庫系統以關系代數為堅實的理論基礎,經過幾十年的發展和實際應用,技術越來越成熟和完善。其代表產品有Oracle、IBM公司的 DB2、微軟公司的MS SQL Server以及Informix、ADA等。
1974年,IBM的博伊斯和金柏林將科德關系數據庫的12條準則的數學定義以簡單的關鍵字語法表現出來,里程碑式地提出了今天在關系數據庫領域最最基礎的一個指令語言——SQL語言。
SQL語言的功能包括查詢、操縱、定義和控制,是一個綜合的、通用的關系數據庫語言,同時又是一種高度非過程化的語言,只要求用戶指出做什么而不需要指出怎么做。
SQL集成了數據庫生命周期中的全部操作,提供了與關系數據庫進行交互的方法,它可以與標準的編程語言一起工作。
自產生之日起,SQL語言便成了檢驗關系數據庫的試金石,而SQL語言標準的每一次變更都指導著關系數據庫產品的發展方向。

圖2.14 數據庫的應用
這里又有一個小插曲。
當科德博士發表題為“R系統:數據庫關系理論”的時候,一個技術敏感人士,勞倫斯·埃里森非常仔細地閱讀了這篇文章,被其內容震驚,這是第一次有人用全面一致的方案管理數據信息!
震驚之余,埃里森敏銳意識到在這個研究基礎上可以開發商用軟件系統。而當時大多數人認為關系數據庫不會有商業價值。埃里森認為,他的機會來了。很快,一款通用商用數據庫系統 “Oracle”誕生了——這個名字來源于他們曾給中央情報局做過的項目名。
不過,Oracle 1.0版本僅僅是一個“玩具”,除了完成簡單關系查詢外,做不了太多的事情,他們花相當長的時間才使Oracle變得可用,維持公司運轉主要靠承接一些數據庫管理項目和做顧問咨詢工作。
IBM醒得早,卻起得太晚,這給埃里森了一個時間差。1985年,當IBM發布DB2時,Oracle已經家喻戶曉。
經歷過網狀、層次型和關系型數據庫系統后,有人提出了新的面向對象數據模型的數據庫系統,其特征是數據模型更加豐富,數據管理功能更強大,能夠支持傳統數據庫難以支持的新應用。比較典型的有IBM的db4o、EyeDB等。
7.應用軟件
應用軟件是主機中與業務關系最為密切的組成部分,是人機交互的主要介質之一。無論是我們玩的網絡游戲,還是即時通信軟件,以及CRM系統的服務器端軟件,都屬于應用軟件的范疇。
單機版的應用軟件并不在我們本節的討論范疇。我們討論的應用軟件一定是基于IP應用的。
在IP世界中,用戶端的應用軟件和服務器端的應用軟件進行交互,其交互信息采用TCP/IP協議。根據用戶端應用軟件的界面形態,我們將兩者之間的關系分為Client/Server和Browser/Server兩種類型。
Client/Server(簡稱C/S)是指用戶端采用專門的GUI(圖形用戶界面)軟件。最典型的是即時通信軟件和郵件處理軟件,QQ、MSN、Skype都有自己的客戶端軟件,Outlook、Foxmail也都是獨立的用戶端GUI軟件。自己設計客戶端軟件,可塑性強,個性化強,并可靈活添加各種增值功能。
Brower/Server(簡稱B/S)是指用戶端采用瀏覽器訪問服務器,WWW服務是其中最常見的應用,越來越多的OA系統、呼叫中心坐席軟件采用B/S結構。

圖2.15 C/S和B/S結構
關于兩種模式的爭論,從來都沒有停止過。
C/S模式有以下特點。
◆客戶端實現與服務器的直接連接,沒有中間環節,響應速度比較快,客戶端界面設計個性化,直觀、簡單、方便。
由于開發是針對性的,因此操作界面漂亮、形式多樣,可以充分表現客戶自身的個性,但缺少通用性的特點,業務變更或改變的靈活度不夠,需要重新設計和開發,因此維護和管理難度較大,進一步的業務拓展門檻很高。
◆對于客戶而言,每次新安裝計算機,都需要重新安裝客戶端軟件,分布功能弱,不能實現快速部署安裝和配置。最為重要的是,C/S的兼容性差,對于不同的開發工具,相互之間很難兼容,具有較大的局限性,這就造成開發成本高,需要具有一定專業水準的技術人員才能完成。
B/S結構具有很強的分布特點。
可以隨時隨地進行業務處理。
業務拓展簡單方便,通過增加網頁即可增加服務器功能,維護簡單方便,只需要改變網頁,即可實現所有用戶的同步更新。開發簡單,共享性強。
個性化特點明顯降低,無法實現具有個性化的設計要求。
以鼠標為最基本的操作方式,無法滿足快速操作的要求。要知道,鍵盤快捷鍵還是比鼠標操作要快得多,而B/S結構幾乎不能支持快捷鍵的使用。
頁面動態刷新,響應速度明顯降低。功能弱化,難以實現傳統模式下的特殊功能要求。
專用性打印輸出難以實現,尤其對票據等打印,難以實現套打輸出,無法實現分頁顯示,給數據庫訪問造成較大的壓力。這就是為什么營業廳使用的軟件都是C/S結構而非B/S結構的原因。
當前,移動互聯網APP模式的應用越來越多,這些具體的應用更類似于C/S結構。
最后需要給各位介紹全球Web服務器軟件排名第一的“Apache(阿帕奇)”系統。這里的“Apache”,既不是一款武裝直升機,也不是那個著名印第安部落的名字,而是可以架構在幾乎所有正被廣泛使用的計算機平臺上的開源代碼。
這是一款自由軟件,取名自“a patchy server”的讀音,意思是“充滿補丁的服務器”。的確,給它打補丁的人很多,他們開發新的功能、特性,并修改原來的缺陷,使Apache使用簡單、速度快、穩定性強。
Apache擁有多個著名項目,而最被人熟知的是HTTP Server。如果你在公網服務器上(比如安裝了LINUX或者UNIX操作系統)運行了Apache軟件,這臺服務器就可以當做一臺HTTP Server來使用。