- 計算機網絡簡明教程
- 謝希仁編著
- 6048字
- 2018-12-29 00:01:08
1.3 因特網的組成
因特網的拓撲結構雖然非常復雜,并且在地理上覆蓋了全球,但從其工作方式上看,可以劃分為以下的兩大塊:
(1)邊緣部分 由所有連接在因特網上的主機組成。這部分是用戶直接使用的,用來進行通信(傳送數據、音頻或視頻)和資源共享。
(2)核心部分 由大量網絡和連接這些網絡的路由器組成。這部分是為邊緣部分提供服務的(提供連通性和交換)。
圖1-5給出了這兩部分的示意圖。下面分別討論這兩部分的作用和工作方式。

圖1-5 因特網的邊緣部分與核心部分
1.3.1 因特網的邊緣部分
處在因特網邊緣的部分就是連接在因特網上的所有主機。這些主機又稱為端系統(end system),“端”就是“末端”的意思(即因特網的末端)。端系統在功能上可能有很大的差別,小的端系統可以是一臺普通個人電腦甚至是很小的掌上電腦,而大的端系統則可以是一臺非常昂貴的大型計算機。端系統的擁有者可以是個人,也可以是單位(如學校、企業、政府機關等),當然也可以是某個ISP(即ISP不僅向端系統提供服務,它也可以擁有一些端系統)。邊緣部分利用核心部分所提供的服務,使眾多主機之間能夠互相通信并交換或共享信息。
我們先要明確下面的概念。我們說:“主機A和主機B進行通信”,實際上是指:“運行在主機A上的某個程序和運行在主機B上的另一個程序進行通信”。由于“進程”就是“運行著的程序”,因此這也就是指:“主機A的某個進程和主機B上的另一個進程進行通信”。這種比較嚴密的說法通常可以簡稱為“計算機之間通信”這種一般的說法。
在網絡邊緣的端系統中運行的程序之間的通信方式通??蓜澐譃閮纱箢悾嚎蛻?服務器方式(C/S方式)和對等方式(P2P方式)。下面分別對這兩種方式進行介紹。
1.客戶-服務器方式
這種方式在因特網上是最常用的,也是傳統的方式。我們在上網發送電子郵件或在網站上查找資料時,都是使用客戶-服務器方式(或客戶/服務器方式)。
大家知道,當我們打電話時,電話機的振鈴聲使被叫用戶知道現在有一個電話呼叫。計算機通信的對象是應用層中的應用進程,顯然不能用響鈴的辦法來通知所要找的對方的應用進程。然而采用客戶-服務器方式可以使兩個應用進程能夠進行通信。
客戶(client)和服務器(server)都是指通信中所涉及的兩個應用進程??蛻?服務器方式所描述的是進程之間服務和被服務的關系。在圖1-6中,主機A運行客戶程序而主機B運行服務器程序。在這種情況下,A是客戶而B是服務器,客戶A向服務器B發出請求服務,而服務器B向客戶A提供服務。這里最主要的特征就是:客戶是服務請求方,服務器是服務提供方。

圖1-6 客戶-服務器工作方式
服務請求方和服務提供方都要使用網絡核心部分所提供的服務。
在實際應用中,客戶程序和服務器程序通常還具有以下一些主要特點。
客戶程序
(1)被用戶調用后運行,在通信時主動向遠地服務器發起通信(請求服務)。因此,客戶程序必須知道服務器程序的地址。
(2)不需要特殊的硬件和很復雜的操作系統。
服務器程序
(1)是一種專門用來提供某種服務的程序,可同時處理多個遠地或本地客戶的請求。
(2)系統啟動后即自動調用并一直不斷地運行著,被動地等待并接受來自各地的客戶的通信請求。因此,服務器程序不需要知道客戶程序的地址。
(3)一般需要強大的硬件和高級的操作系統支持。
客戶與服務器的通信關系建立后,通信可以是雙向的,客戶和服務器都可發送和接收數據。
順便要說一下,上面所說的客戶和服務器本來都指的是計算機進程(軟件)。使用計算機的人是計算機的“用戶(user)”而不是“客戶(client)”。但在許多國外文獻中,經常也把運行客戶程序的機器稱為client(在這種情況下也可把client譯為“客戶機”),把運行服務器程序的機器稱為server。因此我們應當根據上下文來判斷client或server是指軟件還是硬件。在本書中,有時為了清楚起見,我們也使用“客戶端”(或“客戶機”)或“服務器端”來表示“運行客戶程序的機器”或“運行服務器程序的機器”。
2.對等連接方式
對等連接(peer-to-peer,簡寫為P2P)是指兩臺主機在通信時并不區分哪一個是服務請求方還是服務提供方。只要兩臺主機都運行了對等連接軟件(P2P軟件),它們就可以進行平等的、對等連接通信。這時,雙方都可以下載對方已經存儲在硬盤中的共享文檔。因此這種工作方式也稱為P2P文件共享。在圖1-7中,主機C,D,E和F都運行了P2P軟件,因此這幾臺主機都可進行對等通信(如C和D,E和F,以及C和F)。實際上,對等連接方式從本質上看仍然是使用客戶服務器方式,只是對等連接中的每一臺主機既是客戶同時又是服務器。例如,當主機C請求D的服務時,C是客戶,D是服務器。但如果C又同時向F提供服務,那么C又同時起著服務器的作用。

圖1-7 對等連接工作方式
對等連接工作方式可支持大量對等用戶(如上百萬個)同時工作?,F在很流行的BT或電驢(emule)都使用了P2P的工作方式。
1.3.2 因特網的核心部分
網絡核心部分是因特網中最復雜的部分,因為網絡中的核心部分要向網絡邊緣中的大量主機提供連通性,使邊緣部分中的任何一臺主機都能夠向其他主機通信(即傳送或接收各種形式的數據)。
在網絡核心部分起特殊作用的是路由器(router)。目前我們只需要知道,路由器是一種專用計算機(但不是主機)。如果沒有路由器,再多的網絡也無法構建成因特網。路由器是實現分組交換(packet switching)的關鍵構件,其任務是轉發收到的分組,這是網絡核心部分最重要的功能。為了弄清分組交換,下面先介紹電路交換的基本概念,在此基礎之上再討論分組交換的特點。
1.電路交換的主要特點
在電話問世后不久,人們就發現,要讓所有的電話機都兩兩相連接是不現實的。圖1-8(a)表示兩部電話只需要用一對電線就能夠互相連接起來。但若有5部電話要兩兩相連,則需要10對電線,如圖1-8(b)所示。當電話機的數量很大時,這種連接方法需要的電線數量就太大了(與電話機的數量的平方成正比)。于是人們認識到,要使得每一部電話能夠很方便地和另一部電話進行通信,就應當使用電話交換機將這些電話連接起來,如圖1-8(c)所示。每一部電話都連接到交換機上,而交換機使用交換的方法,讓電話用戶彼此之間可以很方便地通信。一百多年來,電話交換機雖然經過多次更新換代,但交換的方式一直都是電路交換(circuit switching)。

圖1-8 電話機的不同連接方法
當電話機的數量增多時,就要使用很多彼此連接起來的交換機來完成全網的交換任務。用這樣的方法,就構成了覆蓋全世界的電信網。
從通信資源的分配角度來看,交換(switching)就是按照某種方式動態地分配傳輸線路的資源。在使用電路交換打電話之前,必須先撥號請求建立連接。當撥號的信令通過許多交換機到達被叫用戶所連接的交換機時,該交換機就向被叫用戶的電話機振鈴。在被叫用戶摘機且摘機信令傳送回到主叫用戶所連接的交換機后,呼叫即完成。這時,從主叫端到被叫端就建立了一條連接,也就是一條專用的物理通路。這條連接占用了雙方通話時所需的通信資源,而這些資源在雙方通信時不會被其他用戶占用,此后主叫和被叫雙方才能互相通電話。正是因為有了這個特點,電路交換對端到端的通信質量有可靠的保證,此后主叫和被叫雙方才能互相通電話。通話完畢掛機后,掛機信令告訴這些交換機,使交換機釋放剛才使用的這條專用的物理通路(即把剛才占用的所有通信資源歸還給電信網)。這種必須經過“建立連接(占用通信資源)→通話(一直占用通信資源)→釋放連接(歸還通信資源)”三個步驟的交換方式稱為電路交換。如果用戶在撥號呼叫時電信網的資源已不足以支持這次的呼叫,則主叫用戶會聽到忙音,表示電信網不接受用戶的呼叫(呼叫失?。S脩舯仨殥鞕C,等待一段時間后再重新撥號。
圖1-9(a)為電路交換的示意圖。圖中的用戶線是電話用戶到所連接的市話交換機的連接線路,是用戶專用的線路,而對交換機之間擁有大量話路的中繼線則是許多用戶共享的,正在通話的用戶只占用了中繼線中的一個話路。電路交換的一個重要特點是,在通話的全部時間內,通話的兩個用戶始終占用端到端的通信資源。例如,圖中電話機A和B之間的通路共經過了四個交換機(如果A和B相距很遠,那么就可能要經過多個交換機)。這就是說,在A和B的通話過程中,它們就始終占用這條已建立的通話電路(A-C-D-E-F-B)。圖1-9(b)表示在通話過程中,雙方的話音信號沿著所占用的通話電路雙向傳輸的示意圖。通話完畢后(掛機),A和B就沒有連接了,原來曾占用的電路又可以為其他用戶使用。

圖1-9 電路交換
當使用電路交換來傳送計算機數據時,其線路的傳輸效率往往很低。這是因為計算機數據是突發式地出現在傳輸線路上的,因此線路上真正用來傳送數據的時間往往不到10%甚至1%。實際上,已被用戶占用的通信線路在絕大部分時間里都是空閑的。例如,當用戶閱讀終端屏幕上的信息或用鍵盤輸入和編輯一份文件時,或計算機正在進行處理而結果尚未返回時,寶貴的通信線路資源并未被利用而是白白被浪費了。
2.分組交換的主要特點
分組交換則采用存儲轉發技術。圖1-10所示的是把一個報文劃分為幾個分組的概念。通常我們把要發送的整塊數據稱為一個報文(message)。在發送報文之前,先把較長的報文劃分成為一個個更小的等長數據段,例如,每個數據段為1024bit。在每一個數據段前面,加上一些由必要的控制信息組成的首部(header)后,就構成了一個分組(packet)。分組又稱為“包”,而分組的首部也可稱為“包頭”。分組是在因特網中傳送的數據單元。分組中的“首部”是非常重要的,正是由于分組的首部包含了諸如目的地址和源地址等重要控制信息,每一個分組才能在因特網中被正確地交付到分組傳輸的終點。

圖1-10 劃分分組的概念
圖1-11(a)強調因特網的核心部分是由許多網絡和把它們互連起來的路由器組成的,而主機處在因特網的邊緣部分。在因特網核心部分的路由器之間一般都用高速鏈路相連接,而在網絡邊緣的主機接入到核心部分則通常以相對較低速率的鏈路相連接。

圖1-11 分組交換的示意圖
主機和路由器都是計算機,但它們的作用很不一樣。主機的用途是為用戶進行信息處理的,并且可以和其他主機通過網絡交換信息。路由器的用途則是用來轉發分組的,即進行分組交換的。路由器收到一個分組,先暫時存儲下來,再檢查其首部,查找路由表,按照首部中的目的地址,找到合適的接口轉發出去,把分組交給下一個路由器。這樣一步一步地(有時會經過幾十個不同的路由器)以存儲轉發的方式,把分組交付到最終的目的主機。各路由器之間必須經常交換彼此掌握的路由信息,以便創建和維持在路由器中的路由表(這一概念將在4.6節討論),使轉發分組時能夠查找出應當從哪一個接口把分組轉發出去。
當我們討論因特網的核心部分中的路由器轉發分組的過程時,往往把單個的網絡簡化成一條鏈路,而路由器成為核心部分的結點,如圖1-11(b)所示。這種簡化圖看起來可以更加突出重點,因為在轉發分組時最重要的就是要知道路由器之間是怎樣連接起來的。
現在假定圖1-11(b)中的主機H1向主機H5發送數據。主機H1先將分組逐個地發往與它直接相連的路由器R1。此時,除鏈路H1-R1外,其他通信鏈路并不被目前通信的雙方所占用。需要注意的是,即使是鏈路H1-R1,也只是當分組正在此鏈路上傳送時才被占用。在各分組傳送之間的空閑時間,鏈路H1-R1仍可為其他主機發送的分組使用。
路由器R1把主機H1發來的分組放入緩存。假定從路由器R1的路由表中查出應把該分組轉發到鏈路R1-R3。于是分組就傳送到路由器R3。當分組正在鏈路R1-R3上傳送時,該分組并不占用網絡其他部分的資源。
路由器R3繼續按上述方式查找路由表,假定查出應轉發到路由器R5。當分組到達R5后, R5就最后把分組直接交給主機H5。
圖1-12(a)~(d)表示分組在從H1向H5傳輸的過程中,并非像電路交換那樣,自始至終占用整個端到端的電路資源,而是逐段地占用—在哪段鏈路傳輸,就占用該鏈路的資源。這對整個網絡資源的利用是有好處的。圖1-12(e)表明分組在從主機H1傳送到H5的過程中,就像接力賽跑那樣,先傳送到一個路由器,然后暫存一下,查找路由表,再轉發到下一個路由器。這就是分組交換的“存儲轉發”過程。從這里可以看出,分組交換和電路交換有著很大的區別。

圖1-12 分組交換
假定在某一個分組的傳送過程中,鏈路R1-R3的通信量太大,那么路由器R1可以把分組沿另一個路由轉發到路由器R2,再轉發到路由器R5,最后把分組送到主機H5。在網絡中可同時有多臺主機進行通信,如主機H2也可以經過路由器R2和R5與主機H6通信。
這里要注意,路由器暫時存儲的是一個個短分組,而不是整個的長報文。短分組暫存在路由器的存儲器(即內存)中而不是存儲在磁盤中,這就保證了較高的交換速率。
在圖中只畫了一對主機H1和H5在進行通信。實際上,因特網可以容許非常多的主機同時進行通信,而一臺主機中的多個進程(即正在運行中的多道程序)也可以各自和不同主機中的不同進程進行通信。
總之,分組交換在傳送數據之前不必先占用一條端到端的通信資源。分組在哪段鏈路上傳送才占用這段鏈路的通信資源。分組在傳輸時就這樣一段接著一段地斷續占用通信資源,而且還省去了建立連接和釋放連接的開銷,因而數據的傳輸效率更高。
因特網采取了專門的措施,保證了數據的傳送具有非常高的可靠性(在第5章討論運輸層協議時要著重討論這個問題)。當網絡中的某些結點或鏈路突然出故障時,在各路由器中運行的路由選擇協議(protocol)能夠自動找到其他路徑轉發分組。這些將在第4章中詳細討論。
從以上所述可知,采用存儲轉發的分組交換,實質上是采用了在數據通信的過程中斷續(或動態)分配傳輸帶寬的策略(關于帶寬的進一步討論見后面的1.6.1節),這對傳送突發式的計算機數據非常合適,使得通信線路的利用率大大提高了。
為了提高分組交換網的可靠性,因特網的核心部分常采用網狀拓撲結構,使得當發生網絡擁塞或少數結點、鏈路出現故障時,路由器可靈活地改變轉發路由而不致引起通信的中斷或全網的癱瘓。此外,通信網絡的主干線路往往由一些高速鏈路構成,這樣就可以較高的數據率迅速地傳送計算機數據。
綜上所述,分組交換網的主要優點可歸納如表1-2所示。
表1-2 分組交換的優點

分組交換也帶來一些新的問題。例如,路由器在轉發分組時需要花費一定的時間,這就會造成了時延。因此必須盡量設法減少這種時延。此外,由于分組交換不像電路交換那樣通過建立連接來保證通信時所需的各種資源,因而無法確保通信時端到端所需的帶寬。
分組交換網帶來的另一個問題是,各分組必須攜帶的控制信息也造成了一定的開銷(overhead)。整個分組交換網還需要專門的管理和控制機制。
應當指出,從本質上講,這種斷續分配傳輸帶寬的存儲轉發原理并非完全新的概念。自古代就有的郵政通信,就其本質來說也是屬于存儲轉發方式。而在20世紀40年代,電報通信也采用了基于存儲轉發原理的報文交換(message switching)。在報文交換中心,一份份電報被接收下來,并穿成紙帶。操作員以每份報文為單位,撕下紙帶,根據報文的目的站地址,拿到相應的發報機轉發出去。這種報文交換的時延較長,從幾分鐘到幾小時不等。現在報文交換已經很少有人使用了。分組交換雖然也采用存儲轉發原理,但由于使用了計算機進行處理,這就使分組的轉發非常迅速。例如ARPANET建網初期的經驗表明,在正常的網絡負荷下,當時橫跨美國東西海岸的端到端平均時延小于0.1秒。這樣,分組交換雖然采用了某些古老的交換原理,但實際上已變成了一種嶄新的交換技術。