電腦店訊 自世上出現“電信”或“遠程通信”技術那一天起,“連網”(N e t w o r k i n g)的概念恐怕便已產生了。想想生活在石器時代的人,若相距較遠,那麼可通過鼓聲,相互間傳遞消息。現在,假定穴居人A想邀請穴居人B參加投擲石塊的游戲。但是,他們離得實在太遠了,以至於B聽不到A的鼓聲。那麼,穴居人A該采取何種對策呢?他面臨著三種選擇: 1 )步行到B處;2 )做一只更大的鼓; 3 )請求住在A和B之間的穴居人C,幫助轉發消息。最後一種選擇便叫做“連網”!
當然,人類進化到今天,我們再也不會使用老祖宗那些簡陋的工具。今天,我們有了計算機,它們通過電纜、光纖、微波以及其他媒介,相互間可以“交談”。相距遙遠的人,可使用計算機,約定在星期六玩一場足球比賽。後面,我們將探討達成這一目標的途徑及方式。但是,不打算涉及通信線纜的問題。當然,足球比賽也請暫時拋在一邊吧!在此,有兩種類型的網絡是我們感興趣的:以U U C P為基礎的網絡,以及以T C P / I P為基礎的網絡。U U C P和T C P / I P均屬於“協議套件”或者“軟件包”的類別,它們提供了在兩台計算機之間傳輸數據的途徑。我們打算來看看這兩種類型的網絡,並討論它們的基本原理。
我們將“網絡”(N e t w o r k)定義成一系列“主機”(H o s t)的集合,不同主機相互間能夠通信。通常,這種通信要依賴某些“專用主機”或“服務器”(S e r v e r),在參與通信的兩部主機之間,對數據進行轉發或“中繼”(R e l a y)。當然,最常見的主機便是計算機,但也並不全是。例如,X終端或智能打印機也屬於主機的一種類型。小范圍內的主機集合亦稱作“站點”(S i t e)。無論人還是主機,相互間想實現通信,不采用某種形式的語言或代碼,那是根本不可能的。在計算機網絡中,這些語言統稱為“協議”(P r o t o c o l)。但是,不要把它們想象成書寫的那種“協議”。相反,它們實際是一些高度規范化的代碼,嚴格約束著通信雙方的行為。用最簡單的話來說,計算機網絡中采用的協議就是一系列非常嚴格的規則,規定著兩個或更多主機相互間如何交換消息。
1.1 UUCP網絡
U U C P是“U n i x到U n i x拷貝”(Unix-to-Unix Copy)的簡稱。開始時,它以一個軟件包的形式出現,通過串行線路傳輸文件,對文件傳輸進行安排和調度,並發起程序在遠程站點的執行。自7 0年代末首次問世以來,盡管它在許多方面發生了重大變化,但就其提供的服務來說,卻變化不大。它仍然主要應用於廣域網( WA N)環境。在這種環境中,主機的連接要通
過撥號電話線路來進行。
U U C P是由美國貝爾實驗室於1 9 7 7年開發出來的,用於在他們的U n i x開發站點之間實現通信。到1 9 7 8年年中,這個網絡總共已連接了超過8 0個站點。除了運行非常原始的電子郵件(E - m a i l)服務之外,還支持遠程打印功能。然而,該系統的用途還是發布新軟件和錯誤修正文件(補丁文件)。今天, U U C P已經不再局限在那樣的環境內。在這個網絡內,目前運行著各式各樣的平台,比如A m i g a O S,D O S,A t a r i的TO S等等。它們有的提供免費服務,有的則提供商業服務。
U U C P網絡最大一個缺點便是帶寬較低。一方面,電話設備緊緊限死了最大的傳輸速度;另一方面,U U C P中極少存在永久性的連接。相反,各主機以固定的周期,通過撥號方式建立與對方的連接。所以大多數時候,郵件消息往往不能一下子送至目的地;而是先躺在某個主機的硬盤裡,等待下一次連接建立的時候再發送出去。盡管存在這些限制,目前世界上仍運行著為數眾多的U U C P網絡。它們主要由一些業余人員負責維護,有時收取低廉的價格,讓私人用戶接入網絡。U U C P之所以仍然受到某些人的青睐,主要原因便是和通過專線永久性接入I n t e r n e t相比,它需要的費用便宜得多。要想使您的計算機成為U U C P的一個節點,需要的全部家當只有一部M o d e m、一個適合U U C P運行的軟硬件環境以及另外一個UUCP節點(願意為你提供郵件和新聞轉發服務,亦即你的“上游節點”)。
如何使用UUCP
U U C P的工作方式非常簡單。從它的名字( U n i x到U n i x拷貝)便可知道,它主要負責將文件從一個主機拷貝(復制)到另一個主機。但除此以外,它還允許在遠程主機上采取一些特定的行動。假定你的機器有權訪問一個名為S w i m的主機,現在想讓它為自己執行l p r這條打印命令。如何做到呢?可在自己的命令行鍵入下述命令,讓這本書在S w i m機器上打印出來:
$ uux -r swim!lpr !netguide.dvi
這樣一來,便可指示u u x(來自U U C P套件的一個命令)為S w i m安排一項作業。在這個作業中,包括一個輸入文件,名為n e t g u i d e . d v i;另外,還包括將該文件送給l p r的請求。其中,- r參數告訴u u x不要馬上呼叫遠程系統,而是將這個作業暫存下來,等稍後建立了一次連接再說。這個過程稱作“緩沖”(S p o o l i n g)。
U U C P的另一個特點便是允許經由幾個主機,對作業及文件進行轉發,只要各主機相互間能夠協作。現在,假定上例的主機S w i m建立了與G r o u c h o的一條U U C P鏈路,後者維護著一個大型的應用程序檔案庫。那麼,為了將文件t r i p w i r e - 1 . 0 . t a r. g z下載到自己的站點,需執行下述命令:
$ uucp -mr swim!groucho!~/security/tripwire-1.0.tar. g z t r i p . t g z
創建的這個作業會請求S w i m幫自己從G r o u c h o處取得文件,並將其發至自己的站點。在自己的站點,U U C P會將文件保存為t r i p . t g z,並發一封電子郵件,通知文件已經到達。整個過程分三步走:第一步,從自己的站點將作業發給S w i m。第二步,在S w i m處,下一步請求建立同G r o u c h o主機的連接,並從它那裡下載回指定的文件。最後一步是將文件從S w i m實際傳回自己的主機(站點)。
對U U C P網絡來說,目前它提供的最重要的一種服務便是電子郵件和新聞。以後,我們還會講述這方面的問題。在這裡,僅對它們進行一番簡要的介紹。
電子郵件,簡稱E - m a i l、e m a i l,使我們能直接與遠程主機交換消息或信件,而不用知道如何訪問這些主機。將一條消息(信件)從自己的站點引導至目標站點的任務完全是由郵件控制系統執行的。在U U C P環境中,郵件傳輸通常需要在一個相鄰的主機上執行r m a i l命令,將郵件正文和接收方的地址傳遞給它。隨後, r m a i l會將郵件轉發至另一個主機……以此類推,
直到最後抵達目標主機。
至於“新聞”(News),可想像成一種分布式的電子公告板系統。通常說到“新聞”的時候,是指通過U s e n e t新聞組發布的新聞,它目前是應用得最廣的新聞交換網絡,總共有大約1 2萬個成員站點。U s e n e t的起源可追溯到1 9 7 9年。當時,與新出的U n i x - V 7一道發布了U U C P之後,三位應屆畢業生產生了一個想法,打算在U n i x社區中實現常規的信息交換。他們設計了一些腳本,形成了世界上第一個網絡新聞系統的雛形。1 9 8 0年,這個網絡在北卡州的兩所大學裡,成功地聯通了D u k e,U N C和P H S等大學,同時連通了北加州的兩家大學。以此為基礎, U s e n e t逐漸發展壯大。盡管它起源於UUCP網絡,但現在已跨越了多種形式的網絡,並不單單UUCP一種。
在U s e n e t中,最基本的信息單元便是“文章”或者“帖子”。所有文章都要投遞到與主題對應的新聞組內。按主題分類,各個新聞組構成了一個層次分明的結構。由於每天發布的帖子數量眾多,大多數站點(亦稱“新聞組服務器”)只接收自己選擇的一部分新聞組。即便這樣,每天平均也會增加近6 0 M B的新帖子。在U U C P世界中,通常先從要求的新聞組中收集好所有文章,然後通過一條U U C P鏈路發送出去。如果數量較大,一次傳不完,便打包後,分成數次傳輸。打包(壓縮)的新聞送至接收站點,由它們執行r n e w s命令,進行解包和其他處理。
最後,U U C P也是許多通過撥號連接的文件下載站點的一種傳輸媒介。這些站點通常允許公共訪問,讓人們免費下載需要的文件或軟件。通常要通過U U C P撥入這些站點,以一名“訪客”(G u e s t)的身份登錄,然後從公開的檔案區下載需要的文件。這些G u e s t賬號通常以g u e s t或a n o n y m o u s(匿名)作為登錄用戶名,然後用u u c p / n u u c p或類似的信息作為登錄密碼使用。
1.2 TCP/IP網絡
盡管U U C P特別適合希望以低廉費用建立撥號網絡連接的用戶,但在其他許多情況下,這種“存儲轉發”技術也顯得非常不靈活。比如在局域網中,數量不多的機器位於同一幢建築物中,甚至位於同一層樓、同一個房間裡。這些機器相互連接在一起,營造一個能夠協同工作的環境。在這種情況下,我們需要在不同的主機間共享文件,或者在不同的機器上運行分布式的應用程序。
所有這些任務都要求以一種全然不同的方式來建立網絡連接。此時,不再是將整個文件都“存儲”起來,同時為其賦予一個作業說明,而是將所有數據都分割為較小的數據包(P a c k e t),立即轉發至目標主機。抵達目標主機後,再在那裡重新“組裝”回原來的樣子。
這種類型的網絡叫作“包交換”網絡。它的最基本的一個應用便是通過網絡運行分布式的應用(程序)。當然,這樣做的代價會比U U C P高出許多—這主要反映在軟件和協議的復雜程度上。目前,許多系統(包括非L i n u x站點)選擇的協議都是T C P / I P。在這一節裡,我們打算就其基本概念作一番論述。
1.2.1 TCP/IP網絡入門
T C P / I P的歷史可追溯到1 9 6 9年由美國國防部高級研究計劃局( D A R PA)投資進行的一個研究項目。項目的宗旨是建立一個實驗性網絡,名叫A R PA N E T(阿帕網)。1 9 7 5年,項目完成,網絡正式投入運行。1 9 8 3年,新協議套件T C P / I P被接納為正式標准,網絡上的所有主機都必須使用它。當這個阿帕網最終進化成I n t e r n e t後(阿帕網於1 9 9 0年正式退出歷史舞台),T C P / I P的應用范圍已不僅僅在I n t e r n e t之內。它最引人矚目的應用是在局域網中;但隨著快速數字電話設備比如I S D N的問世,T C P / I P也昭示著撥號網絡的未來。為便於下文對T C P / I P的討論,我們在此打算以位於芬蘭某地的Groucho Marx大學(G M U)為例。在這所大學中,大多數系都運行有自己的局域網( L A N)。一些系和別的系共享一個網
絡,另一些系則同時運行著幾個網絡。所有網絡相互間都是連接起來的(互聯)。整個校園網通過一條高速鏈路,接入I n t e r n e t。
假定我們的機器掛接的是數學系的L A N,名字叫做E r d o s。要想訪問物理系中名為Q u a r k的一個主機,需要執行下述命令:
$ rlogin quark.physics
Welcome to the Physics Department at GMU
(ttyq2) login:
在提示行,需要輸入自己的登錄名: A n d r e s,以及正確的密碼。隨後,便可獲得在Q u a r k機器上的一個外殼,可在其中鍵入任何命令,就像自己親身坐在那個系統的控制台前一樣。退出這個外殼後,便可返回自己機器(本機)的提示行。剛才,我們已試驗了由T C P / I P提供的一種實時的交互式應用:遠程登錄!登錄進Q u a r k的時候,有時也想運行一個以X 11為基礎的應用,比如一個函數演算程序,或者一個P o s t S c r i p t格式預覽程序。要想告訴應用程序你希望將它的窗口顯示在自己主機的屏
幕上,必須設置D I S P L AY環境變量:
$ export DISPLAY = e r d o s . m a t h s : 0 . 0
如果現在啟動程序,它便會同你的X服務器聯系,而不是同Q u a r k的服務器聯系,並將所有窗口都顯示在自己的屏幕上。當然,這要求你在E r d o s機器上運行X 11。這裡的關鍵在於,T C P / I P協議允許Q u a r k和E r d o s兩部主機來回傳送X 11數據包,從而營造在單個系統上運行的“假象”。此時的網絡永遠是“透明”的。
在T C P / I P網絡中,另一個非常重要的應用是N F S,亦即“網絡文件系統”(Network File S y s t e m)。它是讓網絡“透明”的另一種形式。N F S主要用來讓我們“復制”其他主機的目錄結構,令其看起來就像本機的文件系統。舉個例子來說,所有用戶的“主目錄”(H o m e D i r e c t o r y)都可存放在一台中心服務器中。從這台機器,局域網內的所有主機都復制它的目錄。這樣一來,用戶實際可登錄進入網內的任何一台機器,並發現自己處在一模一樣的主目錄中。類似地,可將那些要求占用大量磁盤空間的應用程序(如Te X)安裝到一台機器,然後將它的目錄導出至其他機器。
當然,這些僅僅是通過T C P / I P網絡能夠做到的一些事情的例子。事實上,用它能做到的事情幾乎是無限的。接下來,我們打算就T C P / I P的工作原理做一番詳細探討。只有掌握了這方面的知識,才能對自己機器的配置方法做到心中有數。首先從硬件開始,再從它慢慢地延伸開去。
1.2.2 以太網
目前在L A N中廣泛采用的硬件形式叫做E t h e r n e t,即“以太網”。其中包含了一條電纜,主機通過接頭、分路器或者收發器加以連接。簡單以太網的安裝費用十分低廉,最常見的傳輸速度是1 0 M b p s(每秒1 0兆位,而非1 0兆字節),但也有逐步向1 0 0 M b p s(百兆網)過渡的趨勢。以太網可劃分為三種實施形式。根據采用的電纜規格,可分別稱為粗纜、細纜以及雙絞線網絡。其中,細纜和粗纜以太網使用的都是同軸電纜,只是線纜粗細以及與主機的連接方式有所區別。細纜采用的是B N C接頭,俗稱T頭,需要“擰”入計算機背後的一個圓柱形接頭(做在網卡上)。粗纜要求在線纜上打一個小孔,然後用一個“ Vampire Ta p”連接一個收發器。隨後,一個或多個主機建立與這個收發器的連接。細纜和粗纜以太網電纜分別最多可以長達2 0 0和5 0 0米,所以也叫做1 0 B a s e - 2和1 0 B a s e - 5網絡。雙絞線電纜則由兩個銅芯線對繞合而成,類似於普通的電話線。但是,它通常要求新增額外的硬件。人們也把它叫做1 0 B a s e - T網絡,其中的“T”代表Twisted pair(雙絞線)。盡管在粗纜以太網中增加一個主機顯得比較麻煩,但在增加主機的同時,不會造成網絡的中斷。而要想在細纜網絡中新增一個主機,則必須讓網絡服務暫停幾分鐘,因為必須對線纜進行處理(通常需要割斷),插入新的接頭。大多數人都願意選擇細纜連接,因其造價相當低廉:一張網卡最多1 0 0元人民幣,線纜每米1 ~ 3元,其他便不再需要任何費用。但是,假如網絡的規模較大,粗纜以太網就顯得更為恰當。例如,G M U大學數學系的以太網采用的便是粗纜連接,所以每次有一個主機加入網絡時,不會造成整個網絡的中斷。
以太網技術的一個缺陷是電纜長度(布線長度)有限,所以只適用於L A N的建設。但是,利用轉發器、網橋或路由器,幾個獨立的以太網網段也可以相互連接到一起。其中,轉發器(R e p e a t e r)的作用最簡單,只是在兩個或更多的網段之間復制信號,使各個網段表面上似乎合並成了一個統一的以太網。
以太網工作起來就像一個總線系統,其中的一個主機可將單位長度多達1 5 0 0字節的數據包(或“幀”)發給同一以太網內的另一個主機。每個主機都分配有一個6字節的地址,這種地址需要固化到網卡內部,但也可以通過專門的軟件更改。通常,我們用兩位十六進制數字的一個序列來表達這種地址,每對數字之間用冒號分隔,例如a a : b b : c c : d d : e e : ff。
由一個主機發出的數據包可被網內其他所有主機“看到”。但是,只有目標主機才能實際地接收並處理它。假如兩個主機同時試圖發送數據,便會發生“沖突”。解決這種沖突的辦法便是兩個主機都取消這一次發送,各自等待隨機的一小段時間,再進行發送數據包的嘗試。
1.2.3 其他類型的硬件
在規格較大的網絡中,比如像前例提到的G M U大學校園網,以太網通常並非唯一的一種網絡硬件安裝方式。在G M U大學,各個系的L A N都同校園干線連接,後者是一條光纖線纜,運行的是F D D I(光纖分布數據接口)。F D D I采用一種全然不同的形式來實現數據的傳送。其基本原理是發送大量“令牌”,令其在整個網絡內循環。只有某個主機拿到了一個令牌,才有權將數據送入網絡(隨那個令牌一道)。F D D I的主要優點在於,它可達到很高的數據傳輸速度,通常1 0 0 M b p s是沒有問題的,而且布線長度可以高達2 0 0公裡。對於遠距離網絡鏈接,通常還有另一種設備類型可供選擇,它建立在一種名為X . 2 5標准的基礎上。在美國,有許多所謂的“公共數據網絡”(Public Data Network,P D N),比如Ty m n e t,它們提供的便是這種服務;而在德國,D a t e x - P網絡提供的也是這種形式的服務。X . 2 5要求安裝一種特殊的硬件,名為PA D,亦即“包匯編/反匯編器”(Packet A s s e m b l e r/D i s a s s e m b l e r)。
X . 2 5定義了一系列網絡協議,由自己專用,但通常也用於連接運行T C P / I P和其他協議的網絡。由於I P包不能直接映射(轉換)為X . 2 5格式(反之亦然),所以其他協議的數據包只是簡單地封裝在X . 2 5包裡面,再通過網絡傳輸。通常,無線電愛好者利用自己的專門設備將計算機連成網絡;這種技術稱為“包無線電”,或稱“火腿無線電”。這些愛好者理所當然也叫做“火腿一族”。火腿無線電使用的協議叫做A X . 2 5,自X . 2 5衍生而來。
另一種技術需要使用速度較慢、但價格便宜的串行線路,用於撥號訪問。這要求另一種協議來進行數據包的傳送,比如S L I P或P P P,後文還會詳細講述。
1.2.4 網際協議
當然,我們的網絡連接並不僅僅限於一個以太網。在最理想的情況下,我們希望能任意使用一個網絡,無論它運行於什麼硬件形式之上,也無論它由多少個子網組成。比如,在像G M U校園網這樣規模較大的網絡中,通常包含了數量眾多的獨立以太網,它們需要以某種形式,相互連接到一起。在G M U大學,數學系運行著兩個以太網。其中一個網絡包含的都是快速機器,由教授和研究生使用;另一個網絡的機器速度較慢,由學生平時上機使用。兩個網絡都同時接入F D D I校園干線。這種連接是由一個專用主機控制的,名為“網關”。網關的作用是在兩個以太網和光纖線纜之間,通過復制數據包的方式,對數據包的接收和發送進行處理。舉個例子來說,如果你在數學系,想訪問物理系的局域網上Q u a r k,然而連網軟件不能直接向Q u a r k發送數據包,因
為它們不在同一個以太網上。因此必須依靠網關來“轉發”數據包。然後,網關(命名為S o p h u s)再把數據包轉發到物理系的、它的同級網關N i e l s,由N i e l s把數據包轉發到目標主機。
直接將數據導向遠程主機的方法稱作“路由”,數據包常常被稱作“數據報”。為使一切簡單化,數據報交換由一個獨立的、與所用硬件無關的協議進行管理。這個協議就是I P,或者說“網際協議”。I P的主要好處是:從物理上把不同的網絡變成了同一個網絡。這就是“聯網”技術,而這種“變形網”也就是i n t e r n e t(網間網)。注意,i n t e r n e t和I n t e r n e t之間,有明顯的區別。後者是一個特定的、官方命名的全球化“網間網”。當然, I P同時還需要一個與硬件無關的定址方案。也就是每台主機對應一個獨一無二的3 2位數,這個數便是該主機的I P地址。I P地址通常用“點分四段”的格式來表示,每一段以十進制表示其四字節中的一個字節,段間用句點分隔開。比如, Q u a r k可能有“ 0 x 9 5 4 C 0 C 0 4”這樣的一個I P地址,它對應的是1 4 9 . 7 6 . 1 2 . 4,前三個字節由I n t e r N I C注冊服務中心分配,標識主機接入的網絡,剩下的字節用來標識該主機本身。大家還會注意到,我們現在有三種地址類型:其一是主機名,比如說Q u a r k;其二是I P地址;最後是硬件地址,比如那個6字節的以太網地址。所有這些都必須彼此相符,只有這樣,在輸入rlogin quark時,聯網軟件才能給出Q u a r k的I P地址;而且,在“網際協議”向物理系以太網投遞數據時,必須找出其I P地址對應的那個以太網地址—這個地址是最容易搞
混淆的。我們不打算在此深入下去。目前,大家只需記住的一點是:尋找地址的過程叫做“主機名解析”(即把主機名映射成I P地址)和“地址解析”(把I P地址映射成硬件地址)。
1.2.5 串行線路網際協議
串行線路網際協議( S L I P ),又叫做“串行線路接口協議”。是一種允許通過撥號連接進行I P數據包傳輸的數據鏈路協議,使得計算機或局域網可以連接到因特網或其他網絡中。在串行線路上,常用的標准一般是S L I P或Serial Line IP。S L I P的修正版稱為C S L I P,或者壓縮過的S L I P,執行I P頭的壓縮,以便更好地利用串行鏈路提供的、相對較低的帶寬。另一個不同的串行鏈路協議是P P P,或者說“點到點傳輸協議”(P o i n t - t o - P o i n t)。和S L I P相比,P P P的特性更多,其中還包括一個鏈路協商段。但P P P領先於S L I P主要表現在沒有對I P數據報的傳輸進行限制,而且可以發送任何一種類型的數據報。
1.2.6 傳輸控制協議
當然,從目前看來,從一個主機向另一個主機發送數據報只是任務之一。如果你登錄到Q u a r k,還打算在E r d o s上的登錄協議命令( r l o g i n)進程和Q u a r k上的外殼進程之間建立一條可靠的連接,那麼,發送端必須把准備收發的信息分成若干個數據包,再由接收端把多個數據包重新組合成一個字符流。這樣不僅瑣碎,還會額外增加許多工作量。關於I P,不容忽視的另一點是:不可靠。假設你的以太網上有1 0名用戶,他們都通過G M U的F T P服務器開始下載X F r e e 8 6的最新版本。那麼所產生的通信量對網關而言,是難以應付的,因為速度太慢了,而且內存也非常的緊張。現在,如果你碰巧向Q u a r k發送一個數據包,
S o p h u s可能會出現緩沖區空間暫時短缺,導致不能轉發數據包的情況。I P解決此類問題的辦法是“丟棄”它。因此,這個包必定會被丟失。所以,通信主機的責任就是在出現錯誤的情況下,檢查數據的完整性、數據是否完全,以及另行轉發。然而,這是由另一個協議—T C P協議(也叫做傳輸控制協議)—來完成的。T C P在I P之上建立了一個可靠的服務。其本質特征是利用I P,向大家勾劃了主機和遠程機器上的兩個進程之間的一條簡單連接,這樣一來,就大可不必擔心你的數據實際上是沿著哪條路由,以及怎樣路由的了。從本質上來說, T C P連接的原理其實就像一條“雙向”管道,兩個進程可以邊讀取,邊寫入。也可把它想像成“打電話”。
T C P利用連接涉及的兩台主機之I P地址和各主機上的所謂“端口”號,來標識此類連接的端點。端口可被視為網絡連接的“附著點”(attatchment point)。如果把T C P連接想像成“打電話”,那麼I P地址就是區號(對應一個地區或城市),而端口號就是本地代號(對應各家各戶的電話機)。在“r l o g i n”這一例子中,客戶機應用程序( r l o g i n)打開E r d o s上的一個端口,並將它連接到Q u a r k上的5 1 3端口, r l o g i n d服務器將被告知對這個端口進行監聽。這樣便建立了一條T C P連接。利用這條連接, r l o g i n d執行了認證進程,然後衍生出外殼,該外殼的輸入和輸出被重新導向T C P連接,這樣一來,你在自己機器上輸入的任何“登錄協議命令”都會通過T C P數據流得以傳遞,並被當作標准輸入傳給外殼。
1.2.7 用戶數據報協議
當然,T C P / I P聯網中, T C P並不是唯一的用戶協議。雖然它非常適合於r l o g i n之類的應用程序,但萬萬不能用於N F S這樣的應用程序。相反地,應該用它的兄弟協議—U D P(也叫做“用戶數據報協議”)。和T C P協議一樣,U D P也允許應用程序和遠程機器某個特定端口上的服務取得聯系,但它不能為此而建立連接。取而代之的是,可通過它向目標服務發送獨立的數據包。
假設你已經通過本系的中心N F S服務器G a l o i s裝入了Te X目錄結構,並且打算查看一個關於如何使用L a Te X的文檔。啟動編輯器,先在整個文件中讀取。但是,要和G a l o i s建立一條T C P連接、發送並再次發布這個文件,會花相當長的時間。相反地,如果向G a l o i s發出請求,編輯器則會把該文件分成兩個U D P數據包發送,這種方式要快得多。但美中不足的是, U D P協議不會處理數據包的丟失或中斷。若出現這種情況,就由N F S對此進行處理。
1.2.8 端口問題
端口可以看作是網絡連接的附著點。如果一個應用程序想提供一項特定的服務,它就會把自己附著在一個端口上,等待客戶機(即所謂的“在該端口上監聽”)。想利用該項服務的客戶機便在其本地主機上分配一個端口,並連接到遠程主機的服務器端口。
端口的一個重要屬性是:客戶機和服務器之間的連接一旦建立,服務器的另一個副本可能就會附著在服務器端口,監聽更多的服務器。也就是說,允許若干個並發登錄利用同一個端口5 1 3登錄到同一個主機。T C P能夠把這些連接區分出來,因為它們來自不同的端口或主機。
舉個例子來說,如果你兩次均從E r d o s主機登錄進入Q u a r k,第一個r l o g i n客戶機就會采用1 0 2 3這個本地端口,第二個則采用1 0 2 2端口。然而,兩者均是連接到Q u a r k上同一個5 1 3端口上的。上面的例子說明了端口可用做集合點,客戶機通過它連接到另一個特定的端口,以獲得特定的服務。為了讓客戶機知道正確的端口號,兩個系統的主管必須在端口號的分配問題上
達成一致。對那些用得較廣的服務來說(比如r l o g i n),其端口號就必須進行集中管理。這是由I E T F(因特網工程任務組)來完成的, I E T F定期發布一個標題為“已分配號”的R F C。該R F C對分配給“眾所周知”的服務的端口號進行了說明。L i n u x采用的是一個文件,名為/ e t c / s e r v i c e s,該文件把服務名映射為端口號。值得注意的是,盡管T C P和U D P連接和端口有很大關系,但其端口號之間不會有沖突。在我們前面的例子中,這便意味著T C P端口5 1 3有別於U D P端口5 1 3。事實上,這些端口被用作兩類不同服務的訪問點,也就是r l o g i n(T C P)和r w h o(U D P)。
1.2.9 套接字庫
在操作系統中,執行所有任務的軟件和前面所講的協議通常是內核的一部分。全世界最流行的編程接口是Berkeley Socket Library(伯克利套接字庫)。其名字源於一個流行的比方,即把端口視作套接字,與端口之間的連接視作插撥。它提供了( b i n d ( 2 ) )調用,借此指定遠程主機、傳輸協議和一個程序可以連接或監聽的服務(利用連接( 2 )、監聽( 2 )和接受( 2 ))。但是,
這個套接字庫過於普通,不僅提供了一個基於T C P / I P套接字的類(A F I N E T套接字),還提供了一個可處理本地與遠程機連接的類( A F _ U N I X類)。有的實施方案中還可以對其他類進行處理,比如X N S(X e r o x連網系統)協議和X . 2 5。
L i n u x操作系統中,套接字庫是標准libc C-library 中的一部分。當前,它只提供了對A F I N E T和A F U N I X套接字的支持,但人們正在努力,提供對N o v e l l連網協議的支持,以便最後能增添更多的套接字類。
1.3 連網
由於世界各地程序員的共同協作, L i n u x才成為可能。沒有如此廣泛的協作, L i n u x不會有如此奪人的魅力。所以早期開發階段,寥寥數人著手提供連網功能的工程,其艱難程度簡直難以想象。U U C P實施的運作幾乎從零開始,基於T C P / I P連網的工作大約開始於1 9 9 2年秋,當時Ross Biro和其他人創建的即是後來人們熟知的“ N e t - 1”。1 9 9 3年5月,R o s s中止了這項活動的實施, Fred van Kempen開始著手一項新的實現,重新編寫主要的代碼,這就是N e t - 2。1 9 9 2年夏,首次公開發行N e t - 2 d(作為0 . 9 9 . 1 0內核的一部分),而且從此以後, N e t - 2 d得到了幾個人的維護和延伸,最值得一提的是Alan Cox。在對代碼進行繁重而龐雜的調試修改之後, Alan Cox在1 . 0發布之後,把N e t - 2改成N e t - 3。N e t - 3隨同S L I P(用於在串行線路上發送網絡數據流)和P L I P(針對並行線)一起,為各式各樣的以太網插板提供了設備驅動程序。N e t - 3中有一個T C P / I P實現,其性能像在本地網絡環境中一樣出色,甚至可以和商業P C軟件人員開發的軟件一比高下。不同的開發傾向
與此同時, F r e d繼續開發他的N e t - 2 e,主要對網絡層的設計進行了大量的修改。在編寫代碼的同時,N e t - 2 e仍然只是一個測試版軟件。關於N e t - 2 e,最值得一提的是它結合了D D I,即設備驅動程序接口。D D I針對所有的連網設備和協議,提供了一個統一的訪問和配置方法。然而,T C P / I P連網的另一種實現卻源於Matthias Urlichs,他曾經為L i n u x和F r e e B S D編寫
了一個I S D N驅動程序。這次,他在內核中集成了一部分B S D連網代碼。但在可以預見的將來, N e t - 3似乎停步不前了。A l a n目前在從事A X . 2 5協議實施的開發,該協議面向“火腿無線電發燒友”。但已准備開發的內核“模塊”代碼仍然會為連網代碼帶來
新的活力,卻是一個不爭的事實。模塊允許愛好者在運行時在內核中添加驅動程序。盡管這些不同實施都可利用同一個設備,但在內核和設備級還有明顯的差異。因此,你不能通過N e t - 2 d或N e t - 3,利用公用程序對正在運行N e t - 2 e內核的系統進行配置,反之亦然。這條規則只適用於對內核內部進行處理的命令、諸如r l o g i n或t e l n e t之類的應用程序和連網命令。
雖然如此,所有這些不同的網絡版本都不會讓你無所適從。除非你加入了活動開發行列,否則,就不必擔心自己運行的T C P / I P是什麼版本。正式發布的內核總附帶有一套連網工具,它們適用於內核中介紹的連網代碼。
1.4 系統維護
本書從頭到尾,都將為大家講解安裝和配置方面的問題。但提得更多的卻是管理。設立一項服務之後,還必須使之能夠運行。大多數服務的維護並不繁雜,但有的服務,比如郵件和新聞,則要求你執行常規任務,以保持系統的更新。維護系統過程中,最基本的要求是定期檢查系統和應用程序前的日志文件,以了解錯誤情況和異常事件。一般說來,大家可能想通過編寫兩個管理外殼腳本來執行該任務,並從c r o n周期性地運行這兩個腳本。有些主要應用程序(比如s m a i l和C - N e w s)的源代碼中包含有這樣的腳本。只須按照自己的要求和喜好,適當地增減。任何c r o n作業的輸出結果都會寄到一個管理性質的帳號上。默認狀態下,多數應用程序都會向根帳號發出錯誤報告、用法統計和登錄文件總結。如果你經常以根的身份登錄的話,這是很有用的;另一個較好的方案是把根的郵件轉發到你自己的私人帳號,設立一個郵件別名。
不管你配置自己的站點時有多細心,始終會產生問題。因此,系統維護的另一層含義是接受用戶的抱怨。通常情況下,人們希望通過電子郵件把自己的意思轉達給作為“ B O O T”的系統管理員,但同時還需要其他的地址,以便負責某一特定維護的人員也能夠看到這些郵件。舉個例子來說,報怨郵件配置故障的電子郵件通常被發送給郵局管理員;而和新聞系統有關的問題則向新聞管理員或新聞組報告。寄給主機管理員的郵件應該重新定向到主機基礎網絡服務的負責人,如果你運行的是命名服務器,則重定向到D N S命名服務。
系統安全網絡環境中,對系統進行維護的另一個不容忽視的重要原因是:避免自己的系統和用戶受到攻擊。管理疏忽的系統往往是那些心懷不軌的人攻擊的目標。攻擊手段相當多,從猜測密碼到以太網偷窺。導致的惡果輕重程度不一,從惡作劇式的郵件信息到數據丟失,或者侵犯用戶的隱私權。在討論出現這些特殊情況的背景時,我們將進一步深入這一話題,同時探討常見的防御手段。
本小節將討論幾個實例和處理系統安全的一些基本技巧。當然,我們所涉及的主題也許不夠全面;它們只對一些常見問題進行了說明。因此,找本安全方面的好書來讀是絕對必要的,尤其是在連網系統中。強烈推薦大家參考Simon Garfinkel 所著的《Practical UNIX S e c u r i t y》,該書由O’R e i l l y出版。還可以在w w w. o r e i l l y. c o m / c a t a l o g / p u i s /找到此書。
提起系統安全,首先得從優良的系統管理開始。這包括了檢查所有重要文件和目錄的屬主和許可,監視特權帳號的使用情況等等。比如, C O P S程序( w w w. c e r t . o rg / f t p / t o o l s / c o p s)將檢查你的文件系統和常用配置文件是否有異常許可或其他異常情況。它還聰明地采用了一個密碼套件,強制性地對用戶密碼實施某一特定的規定,這樣,密碼就很難被人破譯。比如
影子密碼套件,它要求密碼至少要有5個字母,而且還包括大、小寫形式的數字和數位。
在編寫供網絡訪問的服務時,務必確定賦予它“最低特權”,意思是除了為它設計的任務外,不允許它執行別的任務。比如,在根用戶和其他特權賬號的確需要s e t u i d程序時,就應該為他們賦予相應的特權。同時,如果希望服務只限於特定的應用時,不要遲疑,在特定應用允許的范圍內,盡可能地對它進行嚴格配置。例如,如果想允許通過你自己的機器啟動無盤主機,你必須為之提供T F T P(日常文件傳輸服務),以便它們能夠從/ b o o t目錄下下載基本配置文件。但是,如果在非限制條件下, T F T P允許全世界的用戶都可以從你的系統中下載這些文件。如果不希望如此暴露,就必須把T F T P服務限定在/ b o o t目錄下。
同樣的道理,大家肯定還想過如何在自己的局域網內,限制某些主機的用戶使用網絡服務。
另一個不容忽視的要點是避免使用“危險”的軟件。當然,我們平常所用的軟件都可能是危險的,因為軟件不可能總是十全十美的,難免存在錯誤,有些聰明人士肯定能夠找出其中的漏洞,進而造訪你的系統。這是常有的事兒,而且根本無法杜絕。但是,和其他程序比較起來,要求特殊權限的程序似乎更缺乏安全保障,因為任何一個漏洞都可能導致難以想象的後果。所以,在網絡中安裝s e t i u d程序時,一定要加倍小心,不能漏掉安裝文檔中的任何東西,以免無意中為“黑客”造成可乘之機。正如天有不測風雲,誰也料不到未來會發生什麼事情,因為無論我們多麼細心,總不能排除意外的發生。最好的辦法是防患於未然。首先從檢查自己的系統日志文件著手,但有些“闖入者”可能很聰明,會將自己的造訪痕跡清除掉。但是,像Tr i p w i r e(w w w. c e r t . o rg / f t p / t o -o l s / t r i p w i r e /)這類的工具,它們允許我們對重要的系統文件進行檢查,看其中的內容或許可權是否已被篡改。Tr i p w i r e對這些文件進行各種校驗和計算,並把它們保存在一個數據庫內。在之後的運行過程中,將對行些校驗和重新進行計算,並和數據庫內保存的校驗和進行比較,從而有效地防止旁人對系統數據的肆意篡改。
1.2.1 TCP/IP網絡入門
T C P / I P的歷史可追溯到1 9 6 9年由美國國防部高級研究計劃局( D A R PA)投資進行的一個研究項目。項目的宗旨是建立一個實驗性網絡,名叫A R PA N E T(阿帕網)。1 9 7 5年,項目完成,網絡正式投入運行。1 9 8 3年,新協議套件T C P / I P被接納為正式標准,網絡上的所有主機都必須使用它。當這個阿帕網最終進化成I n t e r n e t後(阿帕網於1 9 9 0年正式退出歷史舞台),T C P / I P的應用范圍已不僅僅在I n t e r n e t之內。它最引人矚目的應用是在局域網中;但隨著快速數字電話設備比如I S D N的問世,T C P / I P也昭示著撥號網絡的未來。為便於下文對T C P / I P的討論,我們在此打算以位於芬蘭某地的Groucho Marx大學(G M U)為例。在這所大學中,大多數系都運行有自己的局域網( L A N)。一些系和別的系共享一個網
絡,另一些系則同時運行著幾個網絡。所有網絡相互間都是連接起來的(互聯)。整個校園網通過一條高速鏈路,接入I n t e r n e t。
假定我們的機器掛接的是數學系的L A N,名字叫做E r d o s。要想訪問物理系中名為Q u a r k的一個主機,需要執行下述命令:
$ rlogin quark.physics
Welcome to the Physics Department at GMU
(ttyq2) login:
在提示行,需要輸入自己的登錄名: A n d r e s,以及正確的密碼。隨後,便可獲得在Q u a r k機器上的一個外殼,可在其中鍵入任何命令,就像自己親身坐在那個系統的控制台前一樣。退出這個外殼後,便可返回自己機器(本機)的提示行。剛才,我們已試驗了由T C P / I P提供的一種實時的交互式應用:遠程登錄!登錄進Q u a r k的時候,有時也想運行一個以X 11為基礎的應用,比如一個函數演算程序,或者一個P o s t S c r i p t格式預覽程序。要想告訴應用程序你希望將它的窗口顯示在自己主機的屏
幕上,必須設置D I S P L AY環境變量:
$ export DISPLAY = e r d o s . m a t h s : 0 . 0
如果現在啟動程序,它便會同你的X服務器聯系,而不是同Q u a r k的服務器聯系,並將所有窗口都顯示在自己的屏幕上。當然,這要求你在E r d o s機器上運行X 11。這裡的關鍵在於,T C P / I P協議允許Q u a r k和E r d o s兩部主機來回傳送X 11數據包,從而營造在單個系統上運行的“假象”。此時的網絡永遠是“透明”的。
在T C P / I P網絡中,另一個非常重要的應用是N F S,亦即“網絡文件系統”(Network File S y s t e m)。它是讓網絡“透明”的另一種形式。N F S主要用來讓我們“復制”其他主機的目錄結構,令其看起來就像本機的文件系統。舉個例子來說,所有用戶的“主目錄”(H o m e D i r e c t o r y)都可存放在一台中心服務器中。從這台機器,局域網內的所有主機都復制它的目錄。這樣一來,用戶實際可登錄進入網內的任何一台機器,並發現自己處在一模一樣的主目錄中。類似地,可將那些要求占用大量磁盤空間的應用程序(如Te X)安裝到一台機器,然後將它的目錄導出至其他機器。
當然,這些僅僅是通過T C P / I P網絡能夠做到的一些事情的例子。事實上,用它能做到的事情幾乎是無限的。接下來,我們打算就T C P / I P的工作原理做一番詳細探討。只有掌握了這方面的知識,才能對自己機器的配置方法做到心中有數。首先從硬件開始,再從它慢慢地延伸開去。
1.2.2 以太網
目前在L A N中廣泛采用的硬件形式叫做E t h e r n e t,即“以太網”。其中包含了一條電纜,主機通過接頭、分路器或者收發器加以連接。簡單以太網的安裝費用十分低廉,最常見的傳輸速度是1 0 M b p s(每秒1 0兆位,而非1 0兆字節),但也有逐步向1 0 0 M b p s(百兆網)過渡的趨勢。以太網可劃分為三種實施形式。根據采用的電纜規格,可分別稱為粗纜、細纜以及雙絞線網絡。其中,細纜和粗纜以太網使用的都是同軸電纜,只是線纜粗細以及與主機的連接方式有所區別。細纜采用的是B N C接頭,俗稱T頭,需要“擰”入計算機背後的一個圓柱形接頭(做在網卡上)。粗纜要求在線纜上打一個小孔,然後用一個“ Vampire Ta p”連接一個收發器。隨後,一個或多個主機建立與這個收發器的連接。細纜和粗纜以太網電纜分別最多可以長達2 0 0和5 0 0米,所以也叫做1 0 B a s e - 2和1 0 B a s e - 5網絡。雙絞線電纜則由兩個銅芯線對繞合而成,類似於普通的電話線。但是,它通常要求新增額外的硬件。人們也把它叫做1 0 B a s e - T網絡,其中的“T”代表Twisted pair(雙絞線)。盡管在粗纜以太網中增加一個主機顯得比較麻煩,但在增加主機的同時,不會造成網絡的中斷。而要想在細纜網絡中新增一個主機,則必須讓網絡服務暫停幾分鐘,因為必須對線纜進行處理(通常需要割斷),插入新的接頭。大多數人都願意選擇細纜連接,因其造價相當低廉:一張網卡最多1 0 0元人民幣,線纜每米1 ~ 3元,其他便不再需要任何費用。但是,假如網絡的規模較大,粗纜以太網就顯得更為恰當。例如,G M U大學數學系的以太網采用的便是粗纜連接,所以每次有一個主機加入網絡時,不會造成整個網絡的中斷。
以太網技術的一個缺陷是電纜長度(布線長度)有限,所以只適用於L A N的建設。但是,利用轉發器、網橋或路由器,幾個獨立的以太網網段也可以相互連接到一起。其中,轉發器(R e p e a t e r)的作用最簡單,只是在兩個或更多的網段之間復制信號,使各個網段表面上似乎合並成了一個統一的以太網。
以太網工作起來就像一個總線系統,其中的一個主機可將單位長度多達1 5 0 0字節的數據包(或“幀”)發給同一以太網內的另一個主機。每個主機都分配有一個6字節的地址,這種地址需要固化到網卡內部,但也可以通過專門的軟件更改。通常,我們用兩位十六進制數字的一個序列來表達這種地址,每對數字之間用冒號分隔,例如a a : b b : c c : d d : e e : ff。
由一個主機發出的數據包可被網內其他所有主機“看到”。但是,只有目標主機才能實際地接收並處理它。假如兩個主機同時試圖發送數據,便會發生“沖突”。解決這種沖突的辦法便是兩個主機都取消這一次發送,各自等待隨機的一小段時間,再進行發送數據包的嘗試。
1.2.3 其他類型的硬件
在規格較大的網絡中,比如像前例提到的G M U大學校園網,以太網通常並非唯一的一種網絡硬件安裝方式。在G M U大學,各個系的L A N都同校園干線連接,後者是一條光纖線纜,運行的是F D D I(光纖分布數據接口)。F D D I采用一種全然不同的形式來實現數據的傳送。其基本原理是發送大量“令牌”,令其在整個網絡內循環。只有某個主機拿到了一個令牌,才有權將數據送入網絡(隨那個令牌一道)。F D D I的主要優點在於,它可達到很高的數據傳輸速度,通常1 0 0 M b p s是沒有問題的,而且布線長度可以高達2 0 0公裡。對於遠距離網絡鏈接,通常還有另一種設備類型可供選擇,它建立在一種名為X . 2 5標准的基礎上。在美國,有許多所謂的“公共數據網絡”(Public Data Network,P D N),比如Ty m n e t,它們提供的便是這種服務;而在德國,D a t e x - P網絡提供的也是這種形式的服務。X . 2 5要求安裝一種特殊的硬件,名為PA D,亦即“包匯編/反匯編器”(Packet A s s e m b l e r/D i s a s s e m b l e r)。
X . 2 5定義了一系列網絡協議,由自己專用,但通常也用於連接運行T C P / I P和其他協議的網絡。由於I P包不能直接映射(轉換)為X . 2 5格式(反之亦然),所以其他協議的數據包只是簡單地封裝在X . 2 5包裡面,再通過網絡傳輸。通常,無線電愛好者利用自己的專門設備將計算機連成網絡;這種技術稱為“包無線電”,或稱“火腿無線電”。這些愛好者理所當然也叫做“火腿一族”。火腿無線電使用的協議叫做A X . 2 5,自X . 2 5衍生而來。
另一種技術需要使用速度較慢、但價格便宜的串行線路,用於撥號訪問。這要求另一種協議來進行數據包的傳送,比如S L I P或P P P,後文還會詳細講述。
1.2.4 網際協議
當然,我們的網絡連接並不僅僅限於一個以太網。在最理想的情況下,我們希望能任意使用一個網絡,無論它運行於什麼硬件形式之上,也無論它由多少個子網組成。比如,在像G M U校園網這樣規模較大的網絡中,通常包含了數量眾多的獨立以太網,它們需要以某種形式,相互連接到一起。在G M U大學,數學系運行著兩個以太網。其中一個網絡包含的都是快速機器,由教授和研究生使用;另一個網絡的機器速度較慢,由學生平時上機使用。兩個網絡都同時接入F D D I校園干線。這種連接是由一個專用主機控制的,名為“網關”。網關的作用是在兩個以太網和光纖線纜之間,通過復制數據包的方式,對數據包的接收和發送進行處理。舉個例子來說,如果你在數學系,想訪問物理系的局域網上Q u a r k,然而連網軟件不能直接向Q u a r k發送數據包,因
為它們不在同一個以太網上。因此必須依靠網關來“轉發”數據包。然後,網關(命名為S o p h u s)再把數據包轉發到物理系的、它的同級網關N i e l s,由N i e l s把數據包轉發到目標主機。
直接將數據導向遠程主機的方法稱作“路由”,數據包常常被稱作“數據報”。為使一切簡單化,數據報交換由一個獨立的、與所用硬件無關的協議進行管理。這個協議就是I P,或者說“網際協議”。I P的主要好處是:從物理上把不同的網絡變成了同一個網絡。這就是“聯網”技術,而這種“變形網”也就是i n t e r n e t(網間網)。注意,i n t e r n e t和I n t e r n e t之間,有明顯的區別。後者是一個特定的、官方命名的全球化“網間網”。當然, I P同時還需要一個與硬件無關的定址方案。也就是每台主機對應一個獨一無二的3 2位數,這個數便是該主機的I P地址。I P地址通常用“點分四段”的格式來表示,每一段以十進制表示其四字節中的一個字節,段間用句點分隔開。比如, Q u a r k可能有“ 0 x 9 5 4 C 0 C 0 4”這樣的一個I P地址,它對應的是1 4 9 . 7 6 . 1 2 . 4,前三個字節由I n t e r N I C注冊服務中心分配,標識主機接入的網絡,剩下的字節用來標識該主機本身。大家還會注意到,我們現在有三種地址類型:其一是主機名,比如說Q u a r k;其二是I P地址;最後是硬件地址,比如那個6字節的以太網地址。所有這些都必須彼此相符,只有這樣,在輸入rlogin quark時,聯網軟件才能給出Q u a r k的I P地址;而且,在“網際協議”向物理系以太網投遞數據時,必須找出其I P地址對應的那個以太網地址—這個地址是最容易搞
混淆的。我們不打算在此深入下去。目前,大家只需記住的一點是:尋找地址的過程叫做“主機名解析”(即把主機名映射成I P地址)和“地址解析”(把I P地址映射成硬件地址)。
1.2.5 串行線路網際協議
串行線路網際協議( S L I P ),又叫做“串行線路接口協議”。是一種允許通過撥號連接進行I P數據包傳輸的數據鏈路協議,使得計算機或局域網可以連接到因特網或其他網絡中。在串行線路上,常用的標准一般是S L I P或Serial Line IP。S L I P的修正版稱為C S L I P,或者壓縮過的S L I P,執行I P頭的壓縮,以便更好地利用串行鏈路提供的、相對較低的帶寬。另一個不同的串行鏈路協議是P P P,或者說“點到點傳輸協議”(P o i n t - t o - P o i n t)。和S L I P相比,P P P的特性更多,其中還包括一個鏈路協商段。但P P P領先於S L I P主要表現在沒有對I P數據報的傳輸進行限制,而且可以發送任何一種類型的數據報。
1.2.6 傳輸控制協議
當然,從目前看來,從一個主機向另一個主機發送數據報只是任務之一。如果你登錄到Q u a r k,還打算在E r d o s上的登錄協議命令( r l o g i n)進程和Q u a r k上的外殼進程之間建立一條可靠的連接,那麼,發送端必須把准備收發的信息分成若干個數據包,再由接收端把多個數據包重新組合成一個字符流。這樣不僅瑣碎,還會額外增加許多工作量。關於I P,不容忽視的另一點是:不可靠。假設你的以太網上有1 0名用戶,他們都通過G M U的F T P服務器開始下載X F r e e 8 6的最新版本。那麼所產生的通信量對網關而言,是難以應付的,因為速度太慢了,而且內存也非常的緊張。現在,如果你碰巧向Q u a r k發送一個數據包,
S o p h u s可能會出現緩沖區空間暫時短缺,導致不能轉發數據包的情況。I P解決此類問題的辦法是“丟棄”它。因此,這個包必定會被丟失。所以,通信主機的責任就是在出現錯誤的情況下,檢查數據的完整性、數據是否完全,以及另行轉發。然而,這是由另一個協議—T C P協議(也叫做傳輸控制協議)—來完成的。T C P在I P之上建立了一個可靠的服務。其本質特征是利用I P,向大家勾劃了主機和遠程機器上的兩個進程之間的一條簡單連接,這樣一來,就大可不必擔心你的數據實際上是沿著哪條路由,以及怎樣路由的了。從本質上來說, T C P連接的原理其實就像一條“雙向”管道,兩個進程可以邊讀取,邊寫入。也可把它想像成“打電話”。
T C P利用連接涉及的兩台主機之I P地址和各主機上的所謂“端口”號,來標識此類連接的端點。端口可被視為網絡連接的“附著點”(attatchment point)。如果把T C P連接想像成“打電話”,那麼I P地址就是區號(對應一個地區或城市),而端口號就是本地代號(對應各家各戶的電話機)。在“r l o g i n”這一例子中,客戶機應用程序( r l o g i n)打開E r d o s上的一個端口,並將它連接到Q u a r k上的5 1 3端口, r l o g i n d服務器將被告知對這個端口進行監聽。這樣便建立了一條T C P連接。利用這條連接, r l o g i n d執行了認證進程,然後衍生出外殼,該外殼的輸入和輸出被重新導向T C P連接,這樣一來,你在自己機器上輸入的任何“登錄協議命令”都會通過T C P數據流得以傳遞,並被當作標准輸入傳給外殼。
1.2.1 TCP/IP網絡入門
T C P / I P的歷史可追溯到1 9 6 9年由美國國防部高級研究計劃局( D A R PA)投資進行的一個研究項目。項目的宗旨是建立一個實驗性網絡,名叫A R PA N E T(阿帕網)。1 9 7 5年,項目完成,網絡正式投入運行。1 9 8 3年,新協議套件T C P / I P被接納為正式標准,網絡上的所有主機都必須使用它。當這個阿帕網最終進化成I n t e r n e t後(阿帕網於1 9 9 0年正式退出歷史舞台),T C P / I P的應用范圍已不僅僅在I n t e r n e t之內。它最引人矚目的應用是在局域網中;但隨著快速數字電話設備比如I S D N的問世,T C P / I P也昭示著撥號網絡的未來。為便於下文對T C P / I P的討論,我們在此打算以位於芬蘭某地的Groucho Marx大學(G M U)為例。在這所大學中,大多數系都運行有自己的局域網( L A N)。一些系和別的系共享一個網
絡,另一些系則同時運行著幾個網絡。所有網絡相互間都是連接起來的(互聯)。整個校園網通過一條高速鏈路,接入I n t e r n e t。
假定我們的機器掛接的是數學系的L A N,名字叫做E r d o s。要想訪問物理系中名為Q u a r k的一個主機,需要執行下述命令:
$ rlogin quark.physics
Welcome to the Physics Department at GMU
(ttyq2) login:
在提示行,需要輸入自己的登錄名: A n d r e s,以及正確的密碼。隨後,便可獲得在Q u a r k機器上的一個外殼,可在其中鍵入任何命令,就像自己親身坐在那個系統的控制台前一樣。退出這個外殼後,便可返回自己機器(本機)的提示行。剛才,我們已試驗了由T C P / I P提供的一種實時的交互式應用:遠程登錄!登錄進Q u a r k的時候,有時也想運行一個以X 11為基礎的應用,比如一個函數演算程序,或者一個P o s t S c r i p t格式預覽程序。要想告訴應用程序你希望將它的窗口顯示在自己主機的屏
幕上,必須設置D I S P L AY環境變量:
$ export DISPLAY = e r d o s . m a t h s : 0 . 0
如果現在啟動程序,它便會同你的X服務器聯系,而不是同Q u a r k的服務器聯系,並將所有窗口都顯示在自己的屏幕上。當然,這要求你在E r d o s機器上運行X 11。這裡的關鍵在於,T C P / I P協議允許Q u a r k和E r d o s兩部主機來回傳送X 11數據包,從而營造在單個系統上運行的“假象”。此時的網絡永遠是“透明”的。
在T C P / I P網絡中,另一個非常重要的應用是N F S,亦即“網絡文件系統”(Network File S y s t e m)。它是讓網絡“透明”的另一種形式。N F S主要用來讓我們“復制”其他主機的目錄結構,令其看起來就像本機的文件系統。舉個例子來說,所有用戶的“主目錄”(H o m e D i r e c t o r y)都可存放在一台中心服務器中。從這台機器,局域網內的所有主機都復制它的目錄。這樣一來,用戶實際可登錄進入網內的任何一台機器,並發現自己處在一模一樣的主目錄中。類似地,可將那些要求占用大量磁盤空間的應用程序(如Te X)安裝到一台機器,然後將它的目錄導出至其他機器。
當然,這些僅僅是通過T C P / I P網絡能夠做到的一些事情的例子。事實上,用它能做到的事情幾乎是無限的。接下來,我們打算就T C P / I P的工作原理做一番詳細探討。只有掌握了這方面的知識,才能對自己機器的配置方法做到心中有數。首先從硬件開始,再從它慢慢地延伸開去。
1.2.2 以太網
目前在L A N中廣泛采用的硬件形式叫做E t h e r n e t,即“以太網”。其中包含了一條電纜,主機通過接頭、分路器或者收發器加以連接。簡單以太網的安裝費用十分低廉,最常見的傳輸速度是1 0 M b p s(每秒1 0兆位,而非1 0兆字節),但也有逐步向1 0 0 M b p s(百兆網)過渡的趨勢。以太網可劃分為三種實施形式。根據采用的電纜規格,可分別稱為粗纜、細纜以及雙絞線網絡。其中,細纜和粗纜以太網使用的都是同軸電纜,只是線纜粗細以及與主機的連接方式有所區別。細纜采用的是B N C接頭,俗稱T頭,需要“擰”入計算機背後的一個圓柱形接頭(做在網卡上)。粗纜要求在線纜上打一個小孔,然後用一個“ Vampire Ta p”連接一個收發器。隨後,一個或多個主機建立與這個收發器的連接。細纜和粗纜以太網電纜分別最多可以長達2 0 0和5 0 0米,所以也叫做1 0 B a s e - 2和1 0 B a s e - 5網絡。雙絞線電纜則由兩個銅芯線對繞合而成,類似於普通的電話線。但是,它通常要求新增額外的硬件。人們也把它叫做1 0 B a s e - T網絡,其中的“T”代表Twisted pair(雙絞線)。盡管在粗纜以太網中增加一個主機顯得比較麻煩,但在增加主機的同時,不會造成網絡的中斷。而要想在細纜網絡中新增一個主機,則必須讓網絡服務暫停幾分鐘,因為必須對線纜進行處理(通常需要割斷),插入新的接頭。大多數人都願意選擇細纜連接,因其造價相當低廉:一張網卡最多1 0 0元人民幣,線纜每米1 ~ 3元,其他便不再需要任何費用。但是,假如網絡的規模較大,粗纜以太網就顯得更為恰當。例如,G M U大學數學系的以太網采用的便是粗纜連接,所以每次有一個主機加入網絡時,不會造成整個網絡的中斷。
以太網技術的一個缺陷是電纜長度(布線長度)有限,所以只適用於L A N的建設。但是,利用轉發器、網橋或路由器,幾個獨立的以太網網段也可以相互連接到一起。其中,轉發器(R e p e a t e r)的作用最簡單,只是在兩個或更多的網段之間復制信號,使各個網段表面上似乎合並成了一個統一的以太網。
以太網工作起來就像一個總線系統,其中的一個主機可將單位長度多達1 5 0 0字節的數據包(或“幀”)發給同一以太網內的另一個主機。每個主機都分配有一個6字節的地址,這種地址需要固化到網卡內部,但也可以通過專門的軟件更改。通常,我們用兩位十六進制數字的一個序列來表達這種地址,每對數字之間用冒號分隔,例如a a : b b : c c : d d : e e : ff。
由一個主機發出的數據包可被網內其他所有主機“看到”。但是,只有目標主機才能實際地接收並處理它。假如兩個主機同時試圖發送數據,便會發生“沖突”。解決這種沖突的辦法便是兩個主機都取消這一次發送,各自等待隨機的一小段時間,再進行發送數據包的嘗試。
1.2.3 其他類型的硬件
在規格較大的網絡中,比如像前例提到的G M U大學校園網,以太網通常並非唯一的一種網絡硬件安裝方式。在G M U大學,各個系的L A N都同校園干線連接,後者是一條光纖線纜,運行的是F D D I(光纖分布數據接口)。F D D I采用一種全然不同的形式來實現數據的傳送。其基本原理是發送大量“令牌”,令其在整個網絡內循環。只有某個主機拿到了一個令牌,才有權將數據送入網絡(隨那個令牌一道)。F D D I的主要優點在於,它可達到很高的數據傳輸速度,通常1 0 0 M b p s是沒有問題的,而且布線長度可以高達2 0 0公裡。對於遠距離網絡鏈接,通常還有另一種設備類型可供選擇,它建立在一種名為X . 2 5標准的基礎上。在美國,有許多所謂的“公共數據網絡”(Public Data Network,P D N),比如Ty m n e t,它們提供的便是這種服務;而在德國,D a t e x - P網絡提供的也是這種形式的服務。X . 2 5要求安裝一種特殊的硬件,名為PA D,亦即“包匯編/反匯編器”(Packet A s s e m b l e r/D i s a s s e m b l e r)。
X . 2 5定義了一系列網絡協議,由自己專用,但通常也用於連接運行T C P / I P和其他協議的網絡。由於I P包不能直接映射(轉換)為X . 2 5格式(反之亦然),所以其他協議的數據包只是簡單地封裝在X . 2 5包裡面,再通過網絡傳輸。通常,無線電愛好者利用自己的專門設備將計算機連成網絡;這種技術稱為“包無線電”,或稱“火腿無線電”。這些愛好者理所當然也叫做“火腿一族”。火腿無線電使用的協議叫做A X . 2 5,自X . 2 5衍生而來。
另一種技術需要使用速度較慢、但價格便宜的串行線路,用於撥號訪問。這要求另一種協議來進行數據包的傳送,比如S L I P或P P P,後文還會詳細講述。
1.2.4 網際協議
當然,我們的網絡連接並不僅僅限於一個以太網。在最理想的情況下,我們希望能任意使用一個網絡,無論它運行於什麼硬件形式之上,也無論它由多少個子網組成。比如,在像G M U校園網這樣規模較大的網絡中,通常包含了數量眾多的獨立以太網,它們需要以某種形式,相互連接到一起。在G M U大學,數學系運行著兩個以太網。其中一個網絡包含的都是快速機器,由教授和研究生使用;另一個網絡的機器速度較慢,由學生平時上機使用。兩個網絡都同時接入F D D I校園干線。這種連接是由一個專用主機控制的,名為“網關”。網關的作用是在兩個以太網和光纖線纜之間,通過復制數據包的方式,對數據包的接收和發送進行處理。舉個例子來說,如果你在數學系,想訪問物理系的局域網上Q u a r k,然而連網軟件不能直接向Q u a r k發送數據包,因
為它們不在同一個以太網上。因此必須依靠網關來“轉發”數據包。然後,網關(命名為S o p h u s)再把數據包轉發到物理系的、它的同級網關N i e l s,由N i e l s把數據包轉發到目標主機。
直接將數據導向遠程主機的方法稱作“路由”,數據包常常被稱作“數據報”。為使一切簡單化,數據報交換由一個獨立的、與所用硬件無關的協議進行管理。這個協議就是I P,或者說“網際協議”。I P的主要好處是:從物理上把不同的網絡變成了同一個網絡。這就是“聯網”技術,而這種“變形網”也就是i n t e r n e t(網間網)。注意,i n t e r n e t和I n t e r n e t之間,有明顯的區別。後者是一個特定的、官方命名的全球化“網間網”。當然, I P同時還需要一個與硬件無關的定址方案。也就是每台主機對應一個獨一無二的3 2位數,這個數便是該主機的I P地址。I P地址通常用“點分四段”的格式來表示,每一段以十進制表示其四字節中的一個字節,段間用句點分隔開。比如, Q u a r k可能有“ 0 x 9 5 4 C 0 C 0 4”這樣的一個I P地址,它對應的是1 4 9 . 7 6 . 1 2 . 4,前三個字節由I n t e r N I C注冊服務中心分配,標識主機接入的網絡,剩下的字節用來標識該主機本身。大家還會注意到,我們現在有三種地址類型:其一是主機名,比如說Q u a r k;其二是I P地址;最後是硬件地址,比如那個6字節的以太網地址。所有這些都必須彼此相符,只有這樣,在輸入rlogin quark時,聯網軟件才能給出Q u a r k的I P地址;而且,在“網際協議”向物理系以太網投遞數據時,必須找出其I P地址對應的那個以太網地址—這個地址是最容易搞
混淆的。我們不打算在此深入下去。目前,大家只需記住的一點是:尋找地址的過程叫做“主機名解析”(即把主機名映射成I P地址)和“地址解析”(把I P地址映射成硬件地址)。
1.2.5 串行線路網際協議
串行線路網際協議( S L I P ),又叫做“串行線路接口協議”。是一種允許通過撥號連接進行I P數據包傳輸的數據鏈路協議,使得計算機或局域網可以連接到因特網或其他網絡中。在串行線路上,常用的標准一般是S L I P或Serial Line IP。S L I P的修正版稱為C S L I P,或者壓縮過的S L I P,執行I P頭的壓縮,以便更好地利用串行鏈路提供的、相對較低的帶寬。另一個不同的串行鏈路協議是P P P,或者說“點到點傳輸協議”(P o i n t - t o - P o i n t)。和S L I P相比,P P P的特性更多,其中還包括一個鏈路協商段。但P P P領先於S L I P主要表現在沒有對I P數據報的傳輸進行限制,而且可以發送任何一種類型的數據報。
1.2.6 傳輸控制協議
當然,從目前看來,從一個主機向另一個主機發送數據報只是任務之一。如果你登錄到Q u a r k,還打算在E r d o s上的登錄協議命令( r l o g i n)進程和Q u a r k上的外殼進程之間建立一條可靠的連接,那麼,發送端必須把准備收發的信息分成若干個數據包,再由接收端把多個數據包重新組合成一個字符流。這樣不僅瑣碎,還會額外增加許多工作量。關於I P,不容忽視的另一點是:不可靠。假設你的以太網上有1 0名用戶,他們都通過G M U的F T P服務器開始下載X F r e e 8 6的最新版本。那麼所產生的通信量對網關而言,是難以應付的,因為速度太慢了,而且內存也非常的緊張。現在,如果你碰巧向Q u a r k發送一個數據包,
S o p h u s可能會出現緩沖區空間暫時短缺,導致不能轉發數據包的情況。I P解決此類問題的辦法是“丟棄”它。因此,這個包必定會被丟失。所以,通信主機的責任就是在出現錯誤的情況下,檢查數據的完整性、數據是否完全,以及另行轉發。然而,這是由另一個協議—T C P協議(也叫做傳輸控制協議)—來完成的。T C P在I P之上建立了一個可靠的服務。其本質特征是利用I P,向大家勾劃了主機和遠程機器上的兩個進程之間的一條簡單連接,這樣一來,就大可不必擔心你的數據實際上是沿著哪條路由,以及怎樣路由的了。從本質上來說, T C P連接的原理其實就像一條“雙向”管道,兩個進程可以邊讀取,邊寫入。也可把它想像成“打電話”。
T C P利用連接涉及的兩台主機之I P地址和各主機上的所謂“端口”號,來標識此類連接的端點。端口可被視為網絡連接的“附著點”(attatchment point)。如果把T C P連接想像成“打電話”,那麼I P地址就是區號(對應一個地區或城市),而端口號就是本地代號(對應各家各戶的電話機)。在“r l o g i n”這一例子中,客戶機應用程序( r l o g i n)打開E r d o s上的一個端口,並將它連接到Q u a r k上的5 1 3端口, r l o g i n d服務器將被告知對這個端口進行監聽。這樣便建立了一條T C P連接。利用這條連接, r l o g i n d執行了認證進程,然後衍生出外殼,該外殼的輸入和輸出被重新導向T C P連接,這樣一來,你在自己機器上輸入的任何“登錄協議命令”都會通過T C P數據流得以傳遞,並被當作標准輸入傳給外殼。
1.2.1 TCP/IP網絡入門
T C P / I P的歷史可追溯到1 9 6 9年由美國國防部高級研究計劃局( D A R PA)投資進行的一個研究項目。項目的宗旨是建立一個實驗性網絡,名叫A R PA N E T(阿帕網)。1 9 7 5年,項目完成,網絡正式投入運行。1 9 8 3年,新協議套件T C P / I P被接納為正式標准,網絡上的所有主機都必須使用它。當這個阿帕網最終進化成I n t e r n e t後(阿帕網於1 9 9 0年正式退出歷史舞台),T C P / I P的應用范圍已不僅僅在I n t e r n e t之內。它最引人矚目的應用是在局域網中;但隨著快速數字電話設備比如I S D N的問世,T C P / I P也昭示著撥號網絡的未來。為便於下文對T C P / I P的討論,我們在此打算以位於芬蘭某地的Groucho Marx大學(G M U)為例。在這所大學中,大多數系都運行有自己的局域網( L A N)。一些系和別的系共享一個網
絡,另一些系則同時運行著幾個網絡。所有網絡相互間都是連接起來的(互聯)。整個校園網通過一條高速鏈路,接入I n t e r n e t。
假定我們的機器掛接的是數學系的L A N,名字叫做E r d o s。要想訪問物理系中名為Q u a r k的一個主機,需要執行下述命令:
$ rlogin quark.physics
Welcome to the Physics Department at GMU
(ttyq2) login:
在提示行,需要輸入自己的登錄名: A n d r e s,以及正確的密碼。隨後,便可獲得在Q u a r k機器上的一個外殼,可在其中鍵入任何命令,就像自己親身坐在那個系統的控制台前一樣。退出這個外殼後,便可返回自己機器(本機)的提示行。剛才,我們已試驗了由T C P / I P提供的一種實時的交互式應用:遠程登錄!登錄進Q u a r k的時候,有時也想運行一個以X 11為基礎的應用,比如一個函數演算程序,或者一個P o s t S c r i p t格式預覽程序。要想告訴應用程序你希望將它的窗口顯示在自己主機的屏
幕上,必須設置D I S P L AY環境變量:
$ export DISPLAY = e r d o s . m a t h s : 0 . 0
如果現在啟動程序,它便會同你的X服務器聯系,而不是同Q u a r k的服務器聯系,並將所有窗口都顯示在自己的屏幕上。當然,這要求你在E r d o s機器上運行X 11。這裡的關鍵在於,T C P / I P協議允許Q u a r k和E r d o s兩部主機來回傳送X 11數據包,從而營造在單個系統上運行的“假象”。此時的網絡永遠是“透明”的。
在T C P / I P網絡中,另一個非常重要的應用是N F S,亦即“網絡文件系統”(Network File S y s t e m)。它是讓網絡“透明”的另一種形式。N F S主要用來讓我們“復制”其他主機的目錄結構,令其看起來就像本機的文件系統。舉個例子來說,所有用戶的“主目錄”(H o m e D i r e c t o r y)都可存放在一台中心服務器中。從這台機器,局域網內的所有主機都復制它的目錄。這樣一來,用戶實際可登錄進入網內的任何一台機器,並發現自己處在一模一樣的主目錄中。類似地,可將那些要求占用大量磁盤空間的應用程序(如Te X)安裝到一台機器,然後將它的目錄導出至其他機器。
當然,這些僅僅是通過T C P / I P網絡能夠做到的一些事情的例子。事實上,用它能做到的事情幾乎是無限的。接下來,我們打算就T C P / I P的工作原理做一番詳細探討。只有掌握了這方面的知識,才能對自己機器的配置方法做到心中有數。首先從硬件開始,再從它慢慢地延伸開去。
1.2.2 以太網
目前在L A N中廣泛采用的硬件形式叫做E t h e r n e t,即“以太網”。其中包含了一條電纜,主機通過接頭、分路器或者收發器加以連接。簡單以太網的安裝費用十分低廉,最常見的傳輸速度是1 0 M b p s(每秒1 0兆位,而非1 0兆字節),但也有逐步向1 0 0 M b p s(百兆網)過渡的趨勢。以太網可劃分為三種實施形式。根據采用的電纜規格,可分別稱為粗纜、細纜以及雙絞線網絡。其中,細纜和粗纜以太網使用的都是同軸電纜,只是線纜粗細以及與主機的連接方式有所區別。細纜采用的是B N C接頭,俗稱T頭,需要“擰”入計算機背後的一個圓柱形接頭(做在網卡上)。粗纜要求在線纜上打一個小孔,然後用一個“ Vampire Ta p”連接一個收發器。隨後,一個或多個主機建立與這個收發器的連接。細纜和粗纜以太網電纜分別最多可以長達2 0 0和5 0 0米,所以也叫做1 0 B a s e - 2和1 0 B a s e - 5網絡。雙絞線電纜則由兩個銅芯線對繞合而成,類似於普通的電話線。但是,它通常要求新增額外的硬件。人們也把它叫做1 0 B a s e - T網絡,其中的“T”代表Twisted pair(雙絞線)。盡管在粗纜以太網中增加一個主機顯得比較麻煩,但在增加主機的同時,不會造成網絡的中斷。而要想在細纜網絡中新增一個主機,則必須讓網絡服務暫停幾分鐘,因為必須對線纜進行處理(通常需要割斷),插入新的接頭。大多數人都願意選擇細纜連接,因其造價相當低廉:一張網卡最多1 0 0元人民幣,線纜每米1 ~ 3元,其他便不再需要任何費用。但是,假如網絡的規模較大,粗纜以太網就顯得更為恰當。例如,G M U大學數學系的以太網采用的便是粗纜連接,所以每次有一個主機加入網絡時,不會造成整個網絡的中斷。
以太網技術的一個缺陷是電纜長度(布線長度)有限,所以只適用於L A N的建設。但是,利用轉發器、網橋或路由器,幾個獨立的以太網網段也可以相互連接到一起。其中,轉發器(R e p e a t e r)的作用最簡單,只是在兩個或更多的網段之間復制信號,使各個網段表面上似乎合並成了一個統一的以太網。
以太網工作起來就像一個總線系統,其中的一個主機可將單位長度多達1 5 0 0字節的數據包(或“幀”)發給同一以太網內的另一個主機。每個主機都分配有一個6字節的地址,這種地址需要固化到網卡內部,但也可以通過專門的軟件更改。通常,我們用兩位十六進制數字的一個序列來表達這種地址,每對數字之間用冒號分隔,例如a a : b b : c c : d d : e e : ff。
由一個主機發出的數據包可被網內其他所有主機“看到”。但是,只有目標主機才能實際地接收並處理它。假如兩個主機同時試圖發送數據,便會發生“沖突”。解決這種沖突的辦法便是兩個主機都取消這一次發送,各自等待隨機的一小段時間,再進行發送數據包的嘗試。
1.2.3 其他類型的硬件
在規格較大的網絡中,比如像前例提到的G M U大學校園網,以太網通常並非唯一的一種網絡硬件安裝方式。在G M U大學,各個系的L A N都同校園干線連接,後者是一條光纖線纜,運行的是F D D I(光纖分布數據接口)。F D D I采用一種全然不同的形式來實現數據的傳送。其基本原理是發送大量“令牌”,令其在整個網絡內循環。只有某個主機拿到了一個令牌,才有權將數據送入網絡(隨那個令牌一道)。F D D I的主要優點在於,它可達到很高的數據傳輸速度,通常1 0 0 M b p s是沒有問題的,而且布線長度可以高達2 0 0公裡。對於遠距離網絡鏈接,通常還有另一種設備類型可供選擇,它建立在一種名為X . 2 5標准的基礎上。在美國,有許多所謂的“公共數據網絡”(Public Data Network,P D N),比如Ty m n e t,它們提供的便是這種服務;而在德國,D a t e x - P網絡提供的也是這種形式的服務。X . 2 5要求安裝一種特殊的硬件,名為PA D,亦即“包匯編/反匯編器”(Packet A s s e m b l e r/D i s a s s e m b l e r)。
X . 2 5定義了一系列網絡協議,由自己專用,但通常也用於連接運行T C P / I P和其他協議的網絡。由於I P包不能直接映射(轉換)為X . 2 5格式(反之亦然),所以其他協議的數據包只是簡單地封裝在X . 2 5包裡面,再通過網絡傳輸。通常,無線電愛好者利用自己的專門設備將計算機連成網絡;這種技術稱為“包無線電”,或稱“火腿無線電”。這些愛好者理所當然也叫做“火腿一族”。火腿無線電使用的協議叫做A X . 2 5,自X . 2 5衍生而來。
另一種技術需要使用速度較慢、但價格便宜的串行線路,用於撥號訪問。這要求另一種協議來進行數據包的傳送,比如S L I P或P P P,後文還會詳細講述。
1.2.4 網際協議
當然,我們的網絡連接並不僅僅限於一個以太網。在最理想的情況下,我們希望能任意使用一個網絡,無論它運行於什麼硬件形式之上,也無論它由多少個子網組成。比如,在像G M U校園網這樣規模較大的網絡中,通常包含了數量眾多的獨立以太網,它們需要以某種形式,相互連接到一起。在G M U大學,數學系運行著兩個以太網。其中一個網絡包含的都是快速機器,由教授和研究生使用;另一個網絡的機器速度較慢,由學生平時上機使用。兩個網絡都同時接入F D D I校園干線。這種連接是由一個專用主機控制的,名為“網關”。網關的作用是在兩個以太網和光纖線纜之間,通過復制數據包的方式,對數據包的接收和發送進行處理。舉個例子來說,如果你在數學系,想訪問物理系的局域網上Q u a r k,然而連網軟件不能直接向Q u a r k發送數據包,因
為它們不在同一個以太網上。因此必須依靠網關來“轉發”數據包。然後,網關(命名為S o p h u s)再把數據包轉發到物理系的、它的同級網關N i e l s,由N i e l s把數據包轉發到目標主機。
直接將數據導向遠程主機的方法稱作“路由”,數據包常常被稱作“數據報”。為使一切簡單化,數據報交換由一個獨立的、與所用硬件無關的協議進行管理。這個協議就是I P,或者說“網際協議”。I P的主要好處是:從物理上把不同的網絡變成了同一個網絡。這就是“聯網”技術,而這種“變形網”也就是i n t e r n e t(網間網)。注意,i n t e r n e t和I n t e r n e t之間,有明顯的區別。後者是一個特定的、官方命名的全球化“網間網”。當然, I P同時還需要一個與硬件無關的定址方案。也就是每台主機對應一個獨一無二的3 2位數,這個數便是該主機的I P地址。I P地址通常用“點分四段”的格式來表示,每一段以十進制表示其四字節中的一個字節,段間用句點分隔開。比如, Q u a r k可能有“ 0 x 9 5 4 C 0 C 0 4”這樣的一個I P地址,它對應的是1 4 9 . 7 6 . 1 2 . 4,前三個字節由I n t e r N I C注冊服務中心分配,標識主機接入的網絡,剩下的字節用來標識該主機本身。大家還會注意到,我們現在有三種地址類型:其一是主機名,比如說Q u a r k;其二是I P地址;最後是硬件地址,比如那個6字節的以太網地址。所有這些都必須彼此相符,只有這樣,在輸入rlogin quark時,聯網軟件才能給出Q u a r k的I P地址;而且,在“網際協議”向物理系以太網投遞數據時,必須找出其I P地址對應的那個以太網地址—這個地址是最容易搞
混淆的。我們不打算在此深入下去。目前,大家只需記住的一點是:尋找地址的過程叫做“主機名解析”(即把主機名映射成I P地址)和“地址解析”(把I P地址映射成硬件地址)。
1.2.5 串行線路網際協議
串行線路網際協議( S L I P ),又叫做“串行線路接口協議”。是一種允許通過撥號連接進行I P數據包傳輸的數據鏈路協議,使得計算機或局域網可以連接到因特網或其他網絡中。在串行線路上,常用的標准一般是S L I P或Serial Line IP。S L I P的修正版稱為C S L I P,或者壓縮過的S L I P,執行I P頭的壓縮,以便更好地利用串行鏈路提供的、相對較低的帶寬。另一個不同的串行鏈路協議是P P P,或者說“點到點傳輸協議”(P o i n t - t o - P o i n t)。和S L I P相比,P P P的特性更多,其中還包括一個鏈路協商段。但P P P領先於S L I P主要表現在沒有對I P數據報的傳輸進行限制,而且可以發送任何一種類型的數據報。
1.2.6 傳輸控制協議
當然,從目前看來,從一個主機向另一個主機發送數據報只是任務之一。如果你登錄到Q u a r k,還打算在E r d o s上的登錄協議命令( r l o g i n)進程和Q u a r k上的外殼進程之間建立一條可靠的連接,那麼,發送端必須把准備收發的信息分成若干個數據包,再由接收端把多個數據包重新組合成一個字符流。這樣不僅瑣碎,還會額外增加許多工作量。關於I P,不容忽視的另一點是:不可靠。假設你的以太網上有1 0名用戶,他們都通過G M U的F T P服務器開始下載X F r e e 8 6的最新版本。那麼所產生的通信量對網關而言,是難以應付的,因為速度太慢了,而且內存也非常的緊張。現在,如果你碰巧向Q u a r k發送一個數據包,
S o p h u s可能會出現緩沖區空間暫時短缺,導致不能轉發數據包的情況。I P解決此類問題的辦法是“丟棄”它。因此,這個包必定會被丟失。所以,通信主機的責任就是在出現錯誤的情況下,檢查數據的完整性、數據是否完全,以及另行轉發。然而,這是由另一個協議—T C P協議(也叫做傳輸控制協議)—來完成的。T C P在I P之上建立了一個可靠的服務。其本質特征是利用I P,向大家勾劃了主機和遠程機器上的兩個進程之間的一條簡單連接,這樣一來,就大可不必擔心你的數據實際上是沿著哪條路由,以及怎樣路由的了。從本質上來說, T C P連接的原理其實就像一條“雙向”管道,兩個進程可以邊讀取,邊寫入。也可把它想像成“打電話”。
T C P利用連接涉及的兩台主機之I P地址和各主機上的所謂“端口”號,來標識此類連接的端點。端口可被視為網絡連接的“附著點”(attatchment point)。如果把T C P連接想像成“打電話”,那麼I P地址就是區號(對應一個地區或城市),而端口號就是本地代號(對應各家各戶的電話機)。在“r l o g i n”這一例子中,客戶機應用程序( r l o g i n)打開E r d o s上的一個端口,並將它連接到Q u a r k上的5 1 3端口, r l o g i n d服務器將被告知對這個端口進行監聽。這樣便建立了一條T C P連接。利用這條連接, r l o g i n d執行了認證進程,然後衍生出外殼,該外殼的輸入和輸出被重新導向T C P連接,這樣一來,你在自己機器上輸入的任何“登錄協議命令”都會通過T C P數據流得以傳遞,並被當作標准輸入傳給外殼。