![]() | 網路概論 |
何為網路﹖
在定義上非常簡單﹕網路就是一群通過一定形式連接起來的電腦。一個網路可以由兩台電腦組成﹐也可以擁有在同一大樓裡面的上千台電腦和使用者。我們通常指這樣的網路為局域網(LAN﹐ Local Area Network)﹐由LAN再延伸出去更大的範圍﹐比如整個城市甚至整個國家﹐這樣的網路我們稱為廣域網(WAN﹐ Wide Area Network)﹐當然您如果要再仔細劃分的話﹐還可以有MAN(Matropolitan Area Network) 和 CAN(Citywide Area Network)﹐這些網路都需要有專門的管理人員進行維護。而我們最常觸的Internet則是由這些無數的LAN和WAN共同組成的﹐Internet僅是提供了它們之間的連接﹐但卻沒有專門的人進行管理(除了維護連接和制定使用標準外)﹐可以說Internet是最自由和最沒王管的地方了。在Internet上面是沒有國界種族之分的﹐只要連上去﹐在地球另一邊的電腦和您室友的電腦其實沒有什麼兩樣的。
因為我們最常使用的還是LAN﹐(即使我們從家中連上Internet﹐其實也是先連上ISP的LAN)﹐所以這裡我們主要討論的還是以LAN為主。LAN可以說是眾多網路裡面的最基本單位了﹐等您對LAN有了一定的認識﹐再去了解WAN和Internet就比較容易入手了﹐只不過需要了解更多更複雜的通訊手段而已。
在沒有網路的年代裡面﹐電腦和電腦之間要進行資料交換﹐最普遍的方法就是通過磁片等儲存媒體了﹕您得先從一台機器將資料copy到磁片﹐然後把磁片拿到另一台電腦再copy到上面去。但這樣的方法有其極不良的弊端﹕
工作站(Workstation)
任何能夠提供對網路環境進行輸入的機器﹐都可以說是工作站﹐其主要定義元素就是“輸入”。這可以包括個人電腦、手持式掃描器、終端機、等等。每一工作站都有其自己的網路卡。
節點(Node)
每一個工作站、網路傳真機、網路印表機、檔案伺服器、或任何其它擁有自己唯一網路地址的設備都是節點。它們是怎樣獲得網路地址的呢﹖從網路卡那裡獲得。每一張網路卡在出廠的時候都會被廠家分配一個地址﹐使用者是不可能變更此地址的。
這樣的地址安排就如我們日常的家庭地址一樣﹐是用來區分各自的身份的。您的網路必須有能力去區別這一個地址有別於其它的地址。在網路裡面﹐有很多資料封包會由一個節點傳送到另一個節點﹐同時要確定封包會被正確的傳達目的地﹐而這個目的地就必須依靠這個網路卡地址來認定了。
伺服器(Server)
從技術角度而言﹐伺服器就是在網路中具備某些特定功能的集散地。伺服器也有分好些類型﹐比如﹐一個印表伺服器就是一台讓一群使用者儲列和處理列印工作的機器﹔一台傳真伺服器可以接受傳真請求、儲列和處理傳真等工作。建立一個印表伺服器﹐您可能需要騰空一台機器只用來專門處理列印服務﹐或是需要一些本身帶有網路卡的印表機。
最常見的伺服器莫過于檔案伺服器了。一個檔案伺服器就是一台儲存和管理檔案、應用程式和數據、以及對其負責保安服務的電腦。它可以對您的數據提供集中控制﹐和建立一個共同的地方為您的檔案進行集中備份。
封包(Packet)
封包是能夠在網路上面進行傳輸的最小資訊單位。一個封包包含有發送端節點地址、接收端節點地址、和這兩個節點之間需要傳送的數據。
網路形態(Topology)
這一解釋牽涉到網路上的各節點之物理和邏輯關係。從表面上看﹐就是這網路的“長像”。可以從兩個角度(或曰形態)看待您的網路﹕物理上的和邏輯上的。
網路物理形態
這種形態就是講述一個網路上面的各個節點之間在物理上面的佈置﹐和它們在總體配置上看去的樣子。如果您在紙上將各台電腦的位置標示出來﹐同時將連接它們的網線(Cable)也畫出來﹐您就會比較清楚的看到其物理形態了。比如﹕總線狀(bus)、環狀(ring)、或是星狀(star)。
網路邏輯形態
這種形態講述的是信息如何在網路中行走。我們不妨舉個例子來模擬一下﹐好讓我們更好理解邏輯形態﹕
假如您有一份長達400頁的文件由台南送到台北﹐而且必須最遲明天送到﹐那麼您很可能會使用網中人快遞服務(假設已經成立 ^_^)了。不過要處理這個傳送﹐您還必需要使用網中人快遞的信封和地址標籤。同時﹐您必需提供發信人和接收人的地址﹐當然少不了您那400頁文件啦。
在您的網路上﹐從一台電腦傳送數據到另一台電腦﹐也需要相同的資料﹕它需要您的發送端地址、接收端地址和數據數項資料。正如剛剛所述﹐這些資料都包含在封包裡面了。邏輯形態就接管著如何將這封包在網路從傳輸了。
在後面﹐我們將會對不同的邏輯形態進行講述﹐包括它們各自的優缺點。這是一個非常重要的題目﹐因為不同類型的網路形態會影響到您需要在您的網路安裝什麼類型的網路卡。在一個複雜的網路裡面﹐可以由好幾種不同類型的網路形態共同組成。
網路卡
如果您還記得在電腦基礎裡面的知識﹐在設定任何插卡的時候﹐我們都需要知道它的IO和IRQ(有些還需要DMA)等設定。因為網路卡可以說是我們進入網路世界之門﹐如果網路卡不工作﹐那麼您也就被屏之門外了。所以﹐首先要選擇和安裝好網路卡是非常重要的一關。
現在的網路卡多會帶有一張磁片﹐除了裡面提供了給不同作業系統使用的Driver之外﹐應該還有一個設定程式的。它可以用來設定網卡的IO、IRQ、DMA、或是使用PnP﹔也可以設定連線類型﹐比如﹕BNC、RJ45﹐或AUTO﹔同時還可以選擇使用Boot ROM與否。有些還帶有測試程式來確定網卡是否正常工作。
也如前面所述﹐不同的網路形態會決定不同的網路卡﹐但不管使用何種類型的網路卡﹐關鍵的還是它是工作的﹐而且還要考慮到它的穩定性和速度。現在市面上通常見到的是Ethernet 10/100網路卡﹐那個10/100就是速度﹐也可以說是傳輸量﹕100Megabits/每秒﹐注意﹕千萬不要將Mbps和MBps搞混了﹐因為前者是每秒Millions of bits﹐而後者是每秒Millions of bytes (1byte=8bits﹐相差8倍之多哦~~ Byte是電腦的運算單位﹐而bit則是網路的傳輸單位﹐要注意分清楚)。那個10/100的意思就是支持10Mbps和100Mbps兩種速度的網卡。以前10/100Mbps網卡的價錢比單純10Mbps的網卡貴幾乎十倍價錢﹐不過現在它們的價錢也相差不多了﹐(當然﹐名牌子的10/100網卡還依然很貴)。
要連上網路﹐首先要設定好網路卡。
網線
雖然網路卡設定好了﹐離開網線什麼地方也接不上去。
選擇一個網線系統也要考慮到很多因素﹐比如﹐您的網路架構---您需要什麼樣的物理形態和邏輯形態﹖什麼樣的網線既不會超支預算又可以符合傳輸要求(速度和距離)﹖您需要什麼樣的接頭來連接它們﹖等等。同時﹐不同類型的數據要求(如純文字、大量的圖片、影象、和語音等)﹐以及電腦之間的距離長短﹐也會影響到網線的取材。
網線也有分好幾種類型﹕
好了﹐那麼我們也應該知道10Base5裡面的Base是怎麼樣的頻寬了吧。不過在講到頻寬的時候﹐我們還要了解一個概念﹐就是流量﹕即是資料每秒所流過的數量(以頻寬乘以時間為極限)。頻寬的流量都是有極限的﹐我們可以稱這個極限為100%飽和量。因為我們在網路中使用bit來做單位﹐而電腦運算則以byte單位(1byte=8bits)﹐所以在數值上﹐流量只是頻寬的1/8。例如您使用56KMODEM來下載資料﹐如果您發現程式顯示的是4Kps的話﹐那麼您當時的流量就是50%了。
這裡我還要提醒一下10Base2的2並不是真正的200米﹐準確來說應該是185米﹐200只是取比較好聽的近似值罷了。而10BaseT的T則代表Twisted Pair。
網線接頭
網線類型 | 傳輸速度 | 傳輸距離 | 接頭類型 |
BNC RG58 | 10 Mbps | 185 m | BNC |
CAT3 UTP | 10 Mbps | 91 m | RJ-45 / Token Ring |
CAT4 UTP | 16 Mbps | 91 m | RJ-45 / Token Ring |
CAT5 UTP | 100 Mbps | 91 m | RJ-45 / Token Ring |
CAT3 STP | 10 Mbps | 91 m | RJ-45 / Token Ring |
CAT4 STP | 16 Mbps | 91 m | RJ-45 / Token Ring |
CAT5 STP | 100 Mbps | 91 m | RJ-45 / Token Ring |
Fiber Optic | 155 Mbps | 4827 m | ST |
在這裡我們將要討論一些網路物理和邏輯形態﹐以及它們各自的特征﹐同時也會開始介紹IEEE的802.x標準。
網線的困繞
要組網﹐當然先要將個機器連接起來啦。假如您喜歡的話﹐我們可以將每兩個網路節點都直接用網線連接起來﹐如果材料夠﹐地方又允許的話﹐這完全是有可能的。那麼按此接法﹐我們需要的網線數量 = 節點數目 x ( 節點數目 - 1 ) / 2 ﹐也可以從下面的列表中直接看出來﹕
節點數目 | 所需網線數量 |
5 | 10 |
8 | 28 |
25 | 300 |
物理形態
邏輯形態
雖然我也知道我很囉嗦﹐但我還是要提醒大家﹐網路形態和邏輯形態是兩碼子事情﹐在學習邏輯形態的時候我建議您先將物理形態忘記掉。
任何類型的數據要在這一網路上面傳遞的話﹐都必須嚴格的遵循既定的封包格式﹕Data Link Layer Frame 格式﹐是給網路用來安排數據的。Ethernet的Data Link Layer Frame看起來如圖﹕
序言 (Preamble) | 目的地 地址 (Destination) | 來源地址 (Source) | 信息類型 (Message Type) | 數據 (Data) | 封包監測資料 (Frame check sequence) |
8 bytes | 6 bytes | 6 bytes | 2 bytes | 46-1500 bytes | 4 bytes |
在網路上﹐我們稱這樣的方法為 CSMA/CD (Carrier-Sensing Multiple Access with Collision Dectection)。要注意的是﹐所有這些處理過程都必須在Ethernet 網卡上面進行﹐也就是說﹐如果您要選用Ethernet形態﹐那麼你就必須全部使用Ethernet網卡。
Ethernet可以在bus, star 或者ring 等物理形態上面使用。10baseT就是使用star的物理形態﹐但邏輯上卻是bus形態來的﹐同樣也是Ethernet﹐使用的是IEEE802.3標準。
在網路上﹐我們稱這種方法做﹕Token Passing。
特性類項 | IEEE 802.3 | IEEE 802.5 |
邏輯形態 | Bus | Single Ring |
物理形態 | Star, Bus | Star |
介質 | Optic fiber, Twisted Pair, Coaxial Cable | Twisted Pair |
頻寬 | 10 Mbps | 4 or 16 Mbps |
連接形式 | CSMA/CD | Token Passing |
過載信息 | Single | 1(4 Mbps)或 Multiple(16 Mbps) |
最大封包體積 | 1518 bytes | 4500 (4 Mbps) 18000 (16 Mbps) |
節點數目 | 1024 | 260 |
節點間隔 | 2.8m (minimum) | 100m (maximum) |
最長網路距離 | 2.8km | 不等 |
另外還要一提的是﹐有個IEEE802.4標準﹐在物理上使用bus形態的﹐但卻以Token Passing的形式來傳遞資料。和Token Ring一樣﹐只有得到Token的節點才可以發送資料﹐但一旦其獲得了接收節點的確認回應﹐就得把Token交給下一節點了。在網路裡必須有一套機制來追蹤哪一個節點會是下一個得到Token的節點。在網路上面會有一個master的角色﹐如果token丟失或由某些原因不能傳送﹐master會先對全網路發出請求﹐然後宣佈取消舊的token而重新發放一個﹐它比任何其它節點要有最優先權獲得Token。
不過比起Token Ring的star形態來說﹐802.4畢竟還是有其不足之處的。比如在802.5裡面使用的mart hub﹐有能力偵測到工作不良的節點﹐從而可以把Token繞過它來傳遞﹐同時會指示出哪一個節點有問題﹐而802.4則做不到這點。
五四三原則
我們知道網線的傳輸距離都是有限的﹐如果節點之間的距離太遠﹐我們就需要在中間使用增益器(Repeater)來將信號放大後繼續傳輸。如果使用802.3協定的時候﹐有一個原則我們是必需遵守的﹕五四三原則。意思就是網路上最多只能有﹕
在前面我們已經講過網路的物理形態和邏輯形態了﹐雖然很不好理解和容易混亂﹐但對於學習網路來說卻是不可少的一課。採用什麼樣的網路管理模式﹐可以不受網路形態的限制﹐但離開了網路形態則什麼模式也是徒然的。在這一章裡﹐我們主要講述 Client / Server 和 Peer / Peer 的網路管理模式﹐同時也會對各自的優缺點進行評估。
Client / Server 網路
類似于歷史悠久的Mainframe/Terminal網路﹐Client/Server網路也有一個中央電腦來看管整個網路和處理client的請求﹐但主要分別是﹐client電腦都有能力處理自己的電腦運算﹐而dumb terminal則只俱有輸出和輸入功能而已。一般在比較大型的辦公室裡面﹐使用的都是Client/Server網路。
相對於Peer/Peer網路﹐Client/Server網路可以提供更好的集中管理和控制﹐同時在擴展能力上也比較強﹐(雖然P/P網路也容易擴展﹐但如果超過50台電腦就不那麼好玩了)。或許C/S網路最討好的是能夠提供嚴謹和更充份的網路安全服務﹐而避免了沒有經過批准的連接。大多數C/S網路使用者必須先輸入使用者名稱(ID)和密碼(password)才能連接網路﹐ID和password永遠是一對的。當使用者繼續嘗試使用到網路服務(如檔案﹐程式)的時候﹐不同的ID所擁有的權限是不同的﹐比如有些只能讀取﹐有些則可以修改﹐有些甚至可以刪除和建立。再到程式的使用﹐也可以在設定上是否需要秘密﹐如果有設定需要﹐可以使用相同的網路密碼﹐也可以使用不同的ID和密碼。離開了ID和密碼﹐您將使用不到任何的網路資源。雖然在P/P網路上面也有密碼﹐但其設定和管理上面則比C/S鬆散得多。
下面讓我們看看各種不同的Server(伺服器):
當您聽到有關於檔案伺服器的討論的時候﹐或許您還聽過指定指定檔案伺服器(Dedicated file server)和非指定檔案伺服器(non-dedicated file server)。它們又是什麼東東呢﹖前者是一個專門負責檔案管理的工作﹐除此之外別的什麼都不管﹐其終生目標就是提供檔案服務﹔而後者通常是一台工作站﹐只不過分擔著檔案服務功能﹐其記憶體也分一半給工作站事務﹐另一半則提供檔案服務。既然如此﹐為什麼不乾脆使用指定伺服器呢﹖這樣又快又安全~~~ 。哎呀~﹐以前的PC可不同現在這樣便宜哦﹐如果那時候您是老闆的是﹐就不是這麼想了。
Peer / Peer 網路
Peer/Peer 網路帶出的是和 Client/Server 完全不同的網路概念。與其在網路上建立中央控制的機器﹐取而代之的是﹐每台電腦都保存著自己的程式在本地硬碟上﹐它們也各自有著自己的週邊設備。
通過共享﹐每一台電腦都可以是工作站﹐同時也可以是一個伺服器﹐它們之間的地位都是平等的。在使用中﹐將它們集中在同一工作組就可以了﹐您可以為每一個共享的服務設立密碼保護﹐只有知道密碼才可以使用。
沒有任何一種網路可以說是對任何情形都是最好的。Client/Server網路擁有比較好的網路安全服務﹐但Peer/Peer相對來說卻提供了比較靈活且便宜的方案﹔Client/Server通常都需要由專門的人員來管理﹐也比較難安裝﹐而Peer/Peer卻需要比較少的培訓則可使用了。
由于網路的的迅猛發展﹐出現了許多供網路使用的軟體和硬體﹐為了讓它們都能夠有效的溝通﹐我們需要建立一些規則。在這一章裡面﹐會向大家介紹目前比較通用的網路通訊協定﹐和模擬數據是如何的從一個節點傳送到另一個節點﹐從功能上面看看通訊協定的定義。
何為通訊協定﹖
如果節點A要將一個packet送給節點B﹐它們就必須使用相同的通訊協定了。一個比較好理解的講法是﹕通訊協定就是一些標準和規則。例如﹐電話響起來的時候﹐為什麼接電話的人先說“喂~”﹐而不是打電話的人先介紹自己呢﹖我們可以說習慣上如此﹐那麼這個習慣行為就是回答電話的通訊協定了。當然﹐您和您親愛的或許不是這樣接電話的﹐那麼您們使用的就是另一套協定了。
LAN的工作就是幫助應用程式利用網路獲得、管理、和安排數據。每一個節點都通過一張網路卡(NIC, Network Interface Card)連接到網路﹐再由此和其它的節點溝通。在每一個獨立的工作站上面﹐已經安裝了一些應用程式﹐如Word, Excel等。這些程式如果想使用網路上面的資源﹐比如在伺服器上面的數據、網路印表機、電子郵箱等等﹐會使用網路軟體(network software)去和NIC溝通﹐然後NIC再和網路上的其它節點溝通。所有這些信息都要經過轉換﹐就必須要使用通訊協定來確保所有這些參與者﹐能夠彼此理解對方和進行有效的溝通。
正如您所見到的﹐在節點與節點之間﹐最先的交流是在NIC的層次上。當數據從一個節點通過NIC傳送到另一個節點的時候﹐然後數據再從NIC傳送到網路軟體。而這個網路軟體就是我們所說的傳輸通訊協定(Transport protocol)了﹐在雙方的機器上都會有這些transport protocol。對於這個網路軟體﹐我們可以從好些不同的角度去理解﹐不過我們可以簡單的從三個層次去看﹕
第一﹐也是最容易的理解的﹐就是NIC的驅動程式。他負責處理網路卡和傳輸協定之間的溝通。網路卡的廠家都會提供一支驅動程式讓您使用一些特定的協定﹐您可以使用同一張卡來供不同的作業系統使用。只要這張網卡在“物理”上是兼容的﹐那你就可以在作業系統上面使用了﹐當然﹐您不能將Ethernet網路卡當Token Ring來使用啦。也就是說﹐您大可不必只依賴一個牌子的廠家。
我們也知道要讓網路卡工作﹐除了要使用正確的驅動程式之外﹐您還得要確定IRQ和IO要正確。另外﹐在網路卡上面﹐還有一個以12個十二進位數字的48bit的物理地址(Physical Address)﹐也叫MAC(Media Access Control) Address或 Node ID﹐等名稱﹐相信我們前面也聽過數次了。這個地址其實分為兩個部份﹐前面六個數字為Manufacture ID﹐也就是廠家ID﹔而後面的六個才是Card ID。如果我們見到一張卡的MAC地址是﹕02608C67CD54﹐那麼我們可以知道這張卡是3Com的﹐因為02608C就是3Com的ID。然後基于這個物理地址﹐我們就可以把邏輯地址設定於其上了。物理地址我們是無法更改的﹐而且您也很難找到兩張相同物理地址的網路卡﹔但邏輯地址則是由網路管理者設定。就好比您不能將公司門牌給改了﹐但您喜歡給您的公司起什麼名字都可以﹐只要不會和其它公司搞混了就行。如果使用不同的傳輸協定﹐邏輯地址的格式也不相同﹐後面我們會就會講到這問題了。但無論是物理地址還是邏輯地址﹐要在網路上面溝通的話﹐就必須不同﹐否則就是所謂的地址衝突了。
下面我們以IPX為例子認識一下邏輯地址﹕
第二。在網路處理程式的另一端﹐有一個軟體叫重導向(Redirector)。我們知道在單機作業模式下﹐當程式呼叫檔案IO的時候﹐會由作業系統接管這個請求﹐然後再傳給BIOS﹐再到硬體那裡。如果當程式呼叫的檔案IO為網路地址的時候﹐那麼redirector就會接管這個請求﹐而重新導向到網路上面去﹐把請求交給對方機器。
例如﹐當您使用Word的之後﹐要開啟一個在網路磁碟上面的檔案﹐將會如何呢﹖從Word的角度去看﹐它根本不知道有網路這回事﹐它只知道有一個和多個像A﹕、B﹕、C﹕這樣的磁碟。就像您吃麥當勞的時候﹐您不用知道漢堡包是怎樣製作出來的﹐您只需知道魚柳包、雞柳包和拿到什麼樣的Kitty貓就是了。Word在設計上並不是應用於非本地磁碟上的﹐當要使用存儲在網路上面的數據的時候﹐就必須有一種軟體能夠以磁碟代號的形式告訴Word才行。所以﹐如果您告訴Word去一個在叫FILESER1的伺服器之DOC目錄下面找檔案﹐那麼redirector軟體就會接管這個請求了。
第三。終于來到這章的戲肉了﹗出場的就是通訊協定﹐也就是節點和節點之間在網路上搬運數據的方法。我之所以將這三個層次的中間部份留在現在才說﹐是因為它是最抽象的。您或許可以這樣想象﹕NIC驅動程式接管和NIC之間的溝通且儘力討其歡心﹔在client上面的redirector和在server上面的mounter﹐則和程式溝通﹐也極盡體貼之能事﹔然後通訊協定﹐則出盡法寶綴合NIC驅動程式和redirector(或mounter)﹐並建立起網路通訊的交通規則。
正如前述﹐通訊協定只是一些標準和規則而已﹐而這些規則令到交流的融合性得以標準化。就如我們不能離開一些經已認同的規矩去使用電話一樣﹐我們的網路也需要一些共同的溝通語言﹐才能讓所有機器相互交流而不至于混亂。LAN和LAN之間的通訊也一樣需要一些網路語言﹐所以它們都需要有語言大師的本領才行。事實上﹐網路語言有多種多樣﹐由于它們在設計之初只為了應付不同的工作﹐而且它們大部份都從來不考慮要和其它網路兼容的。傳輸協定雖然可說琳琅滿目﹐然而不幸得很﹐各自的廠商都有各自的一套偏好﹐但又非常幸運的是﹐大部份新的網路作業程式都支持超過一種協定﹐可以和不同的作業系統溝通﹐比起以前獨沽一味的情形的確容易多了。
下面我們就淺略的瀏覽一些您將會在網路上運用到的通訊協定。
NetBEUI
讓我們回到IBM最初進軍個人電腦網路的時代﹐他們當時的確需要一個很基本的網路通訊協定﹐他們並不打算用此來建構大型網路﹐僅僅供數十台電腦甚至更小的網路而已。基于這個訴求﹐就誕生了Network Basic Input/Output System﹐或稱NetBIOS。NetBIOS其實只有18個命令(command)來讓網路的電腦能夠建立、維持、和使用連接服務。不過IBM在不久後又再推出了NetBIOS的延伸版本﹕NetBIOS Extened User Interface﹐或稱NetBEUI﹐基本上是BetBIOS的改良版本而已。然而﹐BetBIOS和NetBEUI終究是不同的﹕BetBEUI事實上可以說是一個傳輸協定﹐而NetBIOS充其量只是一組命令來讓系統可以使用網路而已﹐在技術角度來看﹐它是一個Application Program Interface (API)。
NetBEUI可以算是您能夠用到的最快通訊協定了。這個“最快”是指它可以將格式化資料放進封包裡面﹐而接收節點又可以迅速的解讀到內容。然而﹐NetBEUI卻有一個最致命的弱點﹕它不是可路由(routable)協定﹐也就是不能夠和其它使用別的通訊協定的機器對講。NetBEUI在本地網路裡面是非常優秀的協定﹐但如果您想和設在其它網路的機器溝通﹐NetBEUI就不是您所需要的了。如果您想實現和其它網路的電腦溝通﹐您極有可能必需通過路由設備或路由軟體來實現﹐但無論用哪一樣﹐很遺憾﹐NetBEUI都做不到。
TCP/IP
美國國防部開發的 Transmission Control Protocol / Internet Protocol (TCP/IP)﹐當初是用來配合ARPANET (Advanced Research Projects Agency Net)來處理不同硬體之間的連接問題的﹐比如Sun系統和Mainframe、Mainframe和個人電腦之間的連接。
Internet Protocol (IP)工作於網路層(以後會繼續和大家探討OSI的網路層級)﹐它提供了一套標準讓不同的網路有規則可循﹐當然﹐前提是您想使用IP從一個網路將封包路由到另一個網路。IP在設計上是用來在LAN和LAN及PC和PC之間進行傳輸的。
您可以把IP看成是游戲規則﹐而TCP則用來詮釋這些規則的。雖然TCP/IP原先是專門為幾所大學和機構的使用而設計的﹐但現在TCP/IP已經成為最流行的通訊協定了﹐我們使用的Internet就是用TCP/IP來傳送封包的了。下面就讓我們看看TCP/IP是怎樣工作的﹕
假如您的公司在好些地方都有分公司﹐各自都有著自己的本地網路(LAN)﹐在總公司跑的是Novell網路﹐但分公司大部份都是用麥金塔電腦。當Mac有數據要傳送給PC的時候將會如何呢﹖
首先﹐TCP會在這兩個平臺建立起一個可以提供全雙工檢錯(對雙向的數據都進行錯誤檢測)的連接。
接著﹐IP制定好溝通規則以及Mac和PC之間的連接port。到這裡為止﹐TCP已經準備好數據了﹐如果數據太大﹐IP就將之分拆成幾份較小的封包﹐並且在封包上面加上一個新的header(轉送地址)﹐確保封包會被正確傳送。TCP還會加上標籤說明數據的種類及其長度。
再下來﹐IP將封包轉換成標準的編碼格式並將之傳送給PC。
最後﹐在PC上面的TCP將封包解碼並翻譯成PC能夠懂的格式﹐也就是它自己所使用的網路協定。您可以從下圖看到這個過程﹕
DLC
Data Link Control協定﹐為國際標準IEEE802.2協定﹐它主要被用於兩個主要原因﹕
第一﹐許多Token Ring網路是使用DLC來讓PC工作站和mainframe網關(gateway)溝通的。如果您使用Token Ring而且在CONFIG.SYS裡面又有三個裝置驅動程式是以DXM開頭的﹐那您就是使用DLC驅動程式了。
第二﹐如果您有一些網路印表機本身直接通過JetDirect網卡連上網路的﹐那麼您或許需要DLC來控制印表機了。
IPX/SPX
Internetwork Packet Exchange (IPX) 是一個Novell協定﹐可以在網路設備之間建立、維持和終止通訊連接﹐他既負責數據的傳出﹐也負責傳入。當數據抵達的時候﹐IPX會讀取數據的地址﹐和將之搬運到網路伺服器或工作站的正確地方。如果伺服器或工作站需要送出數據﹐IPX則會確定好數據封包地址﹐然後再通過網路路由出去。
Sequenced Packet Exchange (SPX) 協定則是用來控制網路處理過程﹐諸如處理丟失封包或其它狀況。
雖然IPX和SPX都是屬于Novell的﹐但他們的使用並不限制於Novell網路。作為一個傳輸協定﹐IPX/SPX可以被用在許多不同的硬體上面﹐所以IPX/SPX也是一個可路由協定。
多種傳輸堆疊(Multiple Transport Stack)
到現在﹐有兩件事情是最明顯不過的﹕首先﹐沒有任何一個協定說得上是最好的﹔其次﹐您或者很想將上面所說的四個協定全跑上﹐而好消息是﹕您可以這樣做﹗
現行網路模式是可以支持多傳輸協定的﹐我們稱之為協定堆疊(protocol stack)。比如﹐您可以在client機器上面安裝多個協定﹐而server機器卻只裝一個協定。如果您的client同時連接好幾個server﹐這完全是可能的﹕IPX可以和Novell server溝通、DLC可以讓工作站和mainframe gateway對講、和TCP/IP可以使用Internet mail路由、等等。
但要令到以上這些協定同時工作﹐我們還需要用一個方法將網路卡和協定堆疊連接在一起﹐也就是將網路傳輸層和網路卡驅動程式捆綁在一起﹐即在NIC driver和transport stack之間建立一個軟體連接﹐這樣在它們之間就需要一個很重要的標準界面了。通常有兩個競爭者在爭拼這一戰場﹕Novell的ODI和Mircosoft的NDIS。下面我們就探討一下網路捆綁界面和應用程式界面是如何工作的。
網路捆綁界面 (NBI)
由於網路卡驅動程式的不足﹐您還必需額外的軟體來令到通訊協定工作﹐因為NIC driver在設計上只會和一個協定對講﹕IPX/SPX或NetBEUI或TCP/IP。這時﹐ Network Binding Interface (NBI)就派得上用場了﹐NBI 可以提供一個共同的前端接面給設備驅動程式﹐Open Datalink Interface (ODI) 和 Network Driver Interface Specification (NDIS)都可以做到這點。這樣﹐NIC driver就無需再直接和什麼IPX、TCP/IP或NetBEUI之類的協定打交到了﹐它只需要一個ODI和NDIS界面就可以了﹐它們可以將這些協定“翻譯”給NIC聽。
我們可以從下圖看看client和server的傳輸過程中﹐網路軟體中各組件之間的關係﹕
網路應用程式界面 (API)
正如您在上面所讀到的﹐大多數應用程式其實都不為意到網路的存在﹐不過有些程式﹐如果e-mail或群組程式﹐是必須認知到網路﹐更可以說﹐它們是應網路而生的。它們要能夠“插入”到網路中﹐並和其它在網路機器上面跑的程式溝通。程式設計者建立的網路應用程式﹐都要適應於網路給應用程式的一套指令﹐這些指令就是所謂的 API 了。
如果您懂得開汽車的話﹐您一定知道當初學開車的時候是先學如果踏油門、如何踩煞車、如何轉向等基本動作。我們可以將這些動作看成是一些“原始命令”﹐通過這些命令我們就可以做出將汽車倒出車庫然後開到目的地﹐雖然學車的時候是沒有諸如“倒出車庫”的動作。那麼我們就可以將API當成是那些學車的“基本動作”的操作界面。
在那些網路服務中﹐比如redirector﹐可以居於各種不同的傳輸協定之上﹐如果沒有API﹐您的網路軟體程式就要開發一個redirector程式來接通IPS/SPX﹐又要另外一個redirector程式接通TCP/IP了。其實來來去去都是同一個redirector﹐只是和不同的協定連接而已﹐而API則提供了一個共同的界面給所有網路服務使用。這個redirector並不是寫來供通訊協定使用﹐而是給一個API (在我們的例子中是NetBIOS)使用﹕NetBIOSI可以居於IPX/SPX、NetBEUI、和TCP/IP 這些協定之上。這樣有個好處是﹐您可以改變您的通訊協定﹐而無需重寫您的網路服務﹐因為您的網路服務是針對API來寫的。API會接管您的網路請求﹐然後運用正確的通訊協定進行工作。
您或許聽過 socket 這個詞﹐它其實就是API了。有網路世界中﹐有三種API您或許會接觸到的﹕
OSI 模式
有好幾個主要電腦廠家﹐如IBM、DEC、Burroughs等﹐都有設計它們各自的網路結構和通訊協定﹐如果採用這些設計的機器﹐在其各自的網路上面運作良好﹐但卻不能在不同廠家的機器之間進行溝通。為了解決這個問題﹐International Standardization Organisation (ISO) 於1978年開始開發一套標準架構﹐終於成功推出 Reference Model for Open System Interconnection (OSI) 作為其標準﹐它提供了一個很有用的模式去了解各個不同層面的網路協定。
OSI 模式共有七個層面﹐且它們可以被劃分為兩組﹕
應用層 (Ppplication) |
表現層 (Presentation) |
會談層 (Session) |
傳輸層 (Transport) |
網路層 (Network) |
資料連接層 (Data Link) |
實體層 (Physical) |
在開始的三層之上﹐還有四層是屬于使用者功能範圍的﹐不過它們也常常會被整合在一起。您要記住的一點是﹕無論程式設計者如何定義這些協定﹐(例如﹐把它們分為兩層或四層)﹐這四層在實際上都會被執行的。
當您在計劃網路的過程中﹐使用什麼樣的網路作業系統(NOS, Network Operating System)會是一個非常關鍵的考慮﹐其直接影響到您連到其它網路的能力﹐和節點間如何交流﹐還有您可以使用哪些應用程式﹐以及數據的可攜性﹐等等因素。我們將會在這章裡面看看一些比較流行的NOS和其功能﹐這將有助於您選擇一個適合自己的NOS。
Client / Server 系統
如果您要集中控制和管理您的網路和資源的話﹐您就應該找Client/Server的網路作業系統了﹐比如LAN Manager、LAN Server、Windows NT、NetWare、和BanyanVINES等﹐當然還有現在熾手可熱的Linux啦。
在網路安全方面(這是任何client/server系統的重要功能)﹐LAN Manager採用的是美國政府的DES (Data Encryption Standards) 標準﹐對網路密碼進行加密。如果一個使用者開啟了一個帶有網路密碼的檔案﹐可是他卻不能夠知道其它使用者的密碼的。就如其它網路一樣﹐LAN Manager也能讓網路管理員保護特定的目錄、甚至整個檔案伺服器、或個別檔案。作為網路管理員﹐您可以決定哪些使用者可以連接哪些網路資源﹐這完全由您做主。
LAN Manager還有一個很好用的工具叫hot fix﹐當網路要將一個資料寫進硬碟的時候﹐如果hot fix檢測到上面有壞磁區的話﹐馬上會將資料再複製一份另外存到一個保留的空間去﹐然後嘗試修復這個壞區﹐如果失敗則會將壞區做好記號再把資料寫到另外的地方去。
LAN Manager還可以和Mac機器溝通﹐讓您可以和Mac工作站交換資料。同時還支持TCP/IP﹐它有一整套工具可以輔助TCP/IP協定﹐所以網路也就具備了擴展的餘地了。除了TCP/IP﹐LAN Manager也支持Novell網路﹐使用其自帶的工具﹐您可以很輕鬆的就連上Novell網路。
如果您要安裝LAN Manager的話﹐有幾個服務您是要知道的﹕
Redirector (RDR)﹐它可以讓工作站對網路發出請求﹐諸如使用網路印表機或從檔案伺服器獲取檔案等
Messager (MSG)﹐可以讓您在工作站之間發送、接收、儲存、和轉送訊息(message)﹐如果您想接受諸如“Network is going down in five minutes”這樣的信息﹐那麼您就需要跑message服務了。
Receiver (RCV)﹐只允許您使用網路磁碟發送和接收信訊息﹐不過這個服務顯然已經過時且很少有人用的了。
Server (SRV)﹐讓您擁有全部的功能﹐如果您要這台工作站或伺服器可以分享它的硬碟、印表機、等設備﹐那麼您就要跑server服務了。
不過有一個安裝指引您或許可以借鑒﹕所有的工作站都要跑redirector服務﹐否則就不能發出網路請求了﹐如果您要安裝的機器是一台client機器﹐或許這個服務就可以了。在您的AUTOEXEC.BAT檔案裡面加入NET START這個命令﹐就可以載入這個服務了。是否要在client上面安裝message服務﹐則是見人見智了﹐因為它有時候會令到機器當機﹗
NetWare對您的磁碟作業系統來說是一個殼程式(shell﹐就如一個外殼一個把DOS包在其中﹐其名因此而起)﹐當有指令到達﹐不管是來自本機的還是網路的﹐都必需經過shell。和redirector的功能一樣﹐shell會知道一個功能是本機的還是網路的﹐如果是本地的﹐他讓本機動作業系統來接管﹔但如果是網路的﹐NetWare就接下來並自己和伺服器的BIOS對講。
列如﹐有一個工作站程式要儲存一份檔案﹐它會告訴作業系統﹐然後再到BIOS﹐再到磁碟將資料寫上。當一個在Novell網路的工作站告訴作業系統它要儲存資料﹐這時候NetWare就會插話來問程式需要存到哪裡去。程式當然不知道網絡磁碟和本地磁碟的分別啦﹐它或許隨便回答﹕“H:磁碟吧。”而這個磁碟正是伺服器磁碟在工作站上面的對應邏輯磁碟名稱﹐這樣NetWare就會接管這個操作﹐然後發出指令到伺服器的檔案系統將資料寫入。
NetWare在系統安全上面也是非常考究的﹐您可以分別從下面的項目來了解﹕
Linux是由一位名叫Linus B. Tovalds的芬蘭人在1991年推出來的﹐它是一套類UNIX的桌上型系統。眾所週知﹐UNIX的商業版本價格都相當昂貴﹐並非一般用戶玩得起﹐Liux系統﹐好比是UNIX這隻昔日王府堂前燕一樣﹐飛入了尋常百姓家﹕因為它是免費的﹗而且系統要求一點也不高﹐如果您嫌棄您的486機器跑Windows NT實在老態籠鐘﹐換Linux試試﹐您會覺驚奇這機器怎麼忽然後生百倍了呢﹗而且它提供的服務比NT毫不遜色﹐甚至更加穩定﹗
哇﹗﹗還不趕快找Linux試試﹖﹖﹗且慢﹐Linux也不是毫無暇瞝的。首先﹐Linux雖然對硬體要求不高﹐但對使用者要求卻不低﹕如果您對電腦和網路沒一定基礎﹐要玩Linux恐怕會感到非常吃力(這其實是我寫這個網頁的真正動機)﹔而且如果您對技術問題沒有持之以恆的解決精神﹐您的脾氣最好多修養修養﹐否則很容易暴三字經(其實對任何系統都如此)﹔如果您獨愛Windows的花俏﹐您會覺得它醜醜的﹐當然情人眼裡出西施﹐等你發現已經迷戀上了她﹐您或許視其它的界面如糞土(不過也不應該夜郎自大﹐開口閉口除了Linux其它都一文不值﹐沒有虛懷若谷的胸襟﹐其實和Linux自由奔放的精神格格不入﹐充其量只是葉公好龍而已﹐也徒增別人的反感﹐唉~~~ 題外話啦﹐暫且打住 ^_^ )。
好了﹐閒話休提﹐言歸正傳。Linux主要部份是其核心(kernel)﹐且版本更新得比較頻繁﹐目前或許已經到了2.1x的版本了。然後一些distributor另外加上一些軟體連同kernel組合在一起﹐以package的形式推出Linux﹐這樣就成了各種不同的Linux版本了﹐我們比較熟悉的有RedHat、Slackware、Debian、SuSE等distribution﹐它們也有各自的發行版本。雖然這些distribution也會對其包裝收取一定的費用﹐但如果您有Internet連線﹐和肯花時間蒐集﹐其實裡面的所有package連同kernel都可以免費的得到。更值得一提的是﹐您可以對您的kernel進修更新而無需重新安裝所有的軟體。
Linux主要是以TCP/IP為通訊協定﹐而且許多功能都必需依靠TCP/IP﹐不過它也提供了和Netware及Microsoft Network的連接能力。而且Linux的架構和服務都是Unix的標準﹐許多程式已經經過多年的開發和改進﹐比如 FTP、Telnet、SMTP、HTTP等﹐所以穩定性和效率上面都非常優秀﹐因而備受近年來蓬勃發展的互聯網服務供應商(ISP)的青睞。假如您本來就對Unix有所接觸﹐那麼學起Linux將完全不會感覺陌生﹔如果您想進入Unix的世界﹐Linux可以說是最佳之門了。
和Unix系統一樣﹐Linux也是一個完全的多人多工(Multi User & Multi Task)的網絡系統﹐這概念和NT網絡的資源分享完全不同﹕在NT網絡中﹐每台工作站(或伺服器)每次只能允許一位使用者登陸﹐雖然其它使用者也能從網絡中使用到其共享出來的資源﹐但這些動作歸根結底都只是redirector的傑作而已﹐使用者本身還是必需使用自身的CPU和程式來做到這些動作﹔然而﹐在Linux網絡上面﹐一台工作站可以允許多位使用者同時登陸﹐並使用的資源完全是本機的(除了基本的輸入輸出和網卡這些設備)﹐也就是說﹐在這台機器上面的設備和程式﹐都是直接給使用者支配﹐而不僅是共享著。不過﹐現在Microsoft的Back Office 系列(基本上以NT為主)的Terminal Server﹐也開始具備相似Linux的多使用者環境了。
為了讓操作更加方便和更具親和力﹐Unix一早(甚至比MS Windows更早)就已經有圖像界面的Xwindows系統了﹐今天Linux之XWindows更加好用和漂亮﹐而且可供選擇的X-server也非常多種多樣﹐如﹕Open Look、Fvwm、KDE、等等。只要您喜歡﹐您可以在同一台機器上配置多個X-server並輕易的在它們之間切換﹐這可不同于MS Windows的換換背景和顏色那樣哦﹐而是整個外觀都是不同的。
Linux也支援中文環境﹐比如聞名台灣的CLE (Chinese Linux Extensions)﹐就可以將純英文環境的Linux給改頭換面到中文環境去﹐不過﹐純中文的Linux也在相機推出和開發中﹐比如大陸的Turbo Linux就是一個純中文的Linux系統。
以往玩Linux的時候﹐硬體的支援是一個很頭痛的問題﹐不過現在的Linux kernel所支持的硬體也越來越多﹐且也越來越新﹐有些硬體廠家在其新產品上已經加進了Linux版本的驅動程式了。當然﹐無可否認的是﹐Linux的硬體支援方面在目前來說﹐還不及Windows那麼普遍﹐尤其是對一些最新的顯示卡和一些古怪週邊來說。
和NT一樣﹐以後我門還會另闢專門的文章討論Linux的各種服務及其架設。
Peer / Peer 系統
正如前面在比較Client/Server和Peer/Peer網絡的時候已經提到﹐P/P網絡在成本和管理難度上面都要比C/S網絡要低﹐所以在一些較小型的公司網絡裡面﹐Peer/Peer還是有其受歡迎之處的。下面讓我們一起看看幾個主要的P/P網絡操作系統﹕
既然同是Mircosoft的產品﹐他們當然支持NDIS這個網卡驅動界面了﹐不過他們同時對ODI也是支持的﹐這樣令到這些系統受到的硬體支援也特別多﹐而且有些網絡卡廠商只提供MS Windows的驅動程式而已。
配合著它們的圖形界面﹐在這些平臺上面分享磁碟、檔案、打印機等動作﹐很輕鬆的就可以完成。假如您使用Windows95/98系統來架設一個50台機器或更小的P/P網絡﹐相信並不需要很大的力氣﹕只要將網卡和連線設定好﹐然後安裝相同的通訊協定(比如NetBEUI)﹐再逐一設定好資源分享﹐這樣就大功告成了﹗
當初蘋果公司開發AppleTalk的目的也只是針對P/P網絡而已﹐不過 AppleShare File Server或其類似程式﹐也可以當client/server來跑。AppleTalk其實是一個很簡單的LAN﹐而且它令到Mac的傳統用戶免除了硬體方面的頭痛﹕所有System 7.x 的Mac都本身自帶有peer/peer網路卡了﹐如果您想用這些系統開啟網路的時候﹐您全部要做的就是﹕找一根電話線﹐兩個終端器﹐然後啟動另外一台Mac而已。
不過 Mac網路使用的物理網路形態和我們前面討論的網路形態卻是不同的﹐它跑的是 daisy-chain topology﹐看起來有的像bus﹐不過布線比較整齊﹐通常會走在牆壁裡面而不是到處掛得像意大利麵條一樣﹐而且使用的不是coaxial而是UTP網線。不過﹐您也可以在star形態上面跑Mac﹕一種是靜態punchdown blocks﹐並沒有增益和路由功能﹐網路總長只有3000英尺﹔另一種為動態的concentrator﹐具有多埠(Multiport)增益器﹐且每一條網線都可以支持3000英尺的傳輸距離。
不過Mac卻可以跑任何種類的邏輯形態﹕Ethernet、Token Ring、或者AppleTalk等。AppleTalk盡管可以使用增益器(repeater)﹐但由於節點ID的限制﹐最多只能支持254個設備﹕128個工作站和126個伺服器/印表機。它的網路距離也因採用的種類不同而異﹕LocalTalk﹐這是一個PC版本的AppleTalk﹐使用的是STP網線﹐它可以有24個節點且可以擴展至1800英尺﹔PhoneNet﹐使用的是UTP網線﹐可以擴展到1000英尺﹐但就可以有32個節點。如果您想要一個大的和快的(AppleTalk只有230.4Kbps的傳輸速度)網路﹐您最好還是使用Ethernet了。
Mac的Ethernet也有兩種﹕Phase 1可以有最多254個設備﹐除了速度可以有10Mbps之外﹐其它和AppleTalk一樣﹔Phase 2也可以支持254個設備﹐不過還可以橋接(bridge)到另外一個Phase 2 網路。技術上而言﹐在Phase 2 上您可以有一千六百萬個地址(因為Ethernet卡採用的是48-bit的地址)﹐但您卻要有一個大得駭人的辦公室和冷卻系統。
網路系統比較
我們已經簡單地認識了一些主要的網路作業系統﹐不過您或許會有花多眼亂之感﹐不知如何選擇一套適合自己環境的系統﹐下面我們嘗試列舉出一些選擇網路系統時的參考因素﹕
類項/系統 | Client/Server | Peer/Peer | ||||||
OS/2 | NetWare | Linux | Windows NT | Personal NetWare | LANtastic | WFW | Win95/98 | |
密碼加密 | X | X | X | X | X | |||
系統追蹤 | X | X | X | X | ||||
Mac 連接 | X | X | X | X | ||||
TCP/IP | X | X | X | X | X | X | X | X |
IPS/SPX | X | X | X | X | X | X | X | X |
長檔案名 | X | X | X | X | X | |||
圖形網路管理界面 | X | X | X | X |
基本上我們前面所接觸的都是在LAN的範圍﹐但時至今日的網絡﹐尤其是internet的蓬勃發展﹐我想也很少網絡會獨立在局域之內吧﹐所以了解一些網路和網路之間的通訊是勢在必行的了。
在某些定義來看﹐一個LAN就好像一台放大比例的電腦﹐只不過更加複雜而已﹔那麼在LAN和LAN之間組建網路﹐我們稱之為internetworking﹐比如﹕
Internetworking設備
一個bridge的資料傳輸主要有三個步驟﹕
和bridge不同的是﹕bridge需要所有的segment使用相同的傳輸協定(transport protocol)﹔而router則要求他們使用相同的路由協定(routing protocol)﹐通常是router自己使用的特定協定。還要一種叫做Brouter(我也不知道如何翻譯好)的設備﹐可以應用於不同的傳輸協定上面﹐它揉合了bidge和router的優點所在﹕既可以使用不同的上層協定﹐也可以直接將數據以最快的路徑傳遞。當然﹐它的問題是比較難昂貴﹐而且安裝也是件非常頭疼的事情﹕它需要對每一不同的網路進行細緻的調校。如果您有一個比較複雜的具有多種平臺的大型網路環境﹐使用brouter通常可以獲得最佳的效能﹐盡管安裝比較困難﹐但一旦設好了﹐自是受益非淺。
Bridge的使用
正如剛才提到bridge的時候﹐已經知道它的主要功能就是過濾(filter)和傳遞(forward)﹐當bridge接到一個封包的時候﹐它就得問自己﹕“這個封包究竟是留在這個區段內﹐還是應該傳遞到下一個區段呢﹖”
讓我們先假設在兩個Ethernet區段之間架設了一個bridge﹐您有一個資料想從區段甲的節點A送到區段乙的節點B﹐其過程有的像這樣﹕當節點A送出的封包抵達bridge的時候﹐bridge會先檢查封包的來源地址和目的地址﹐如果是寄往同一區段的其它節點的話(在bridge的同一邊)﹐橋就不會向區段乙進行廣播了﹐我們稱這功能為過濾﹐這樣區段乙就減少了無必要的交通了﹐參考下圖﹕
但是﹐如果封包是要傳遞到另外一個區段的﹐那麼bridge就將封包向另外一邊廣播﹐這動作我們稱之為傳遞﹕
Bridge通常是獨立協定之外的﹐可以同時支持多個協定﹐它只關心封包的來源和目的地址﹐不管封包使用的是IPX還是TCP/IP﹐bridge都毫不理會。只要它讀得懂來源和目的地址﹐就能夠判定要對封包進行過濾還是傳遞。有一種learning bridge會保持一個表格記錄哪些地址屬于哪個區段﹐每次有封包在網路中廣播的時候﹐bridge都會參照記錄檢查其封包地址﹐並進行必要的更新。但並不是所有bridge都會這樣做﹐有些比較低檔的bridge就不管三七二十一﹐凡是接到封包就給它傳遞出去﹐我們稱這樣的bridge為forward-only bridge﹐請參考下圖﹕
大多數的bridge都只能夠連接兩個網路區段﹐如果您的網路擴展到一定範圍的時候﹐您就要考慮增加bridge了。然而﹐當使用多個bridge的時候﹐您也會有風險遇到looping的問題。這通常發生在當區段之間有超過一個路徑的時候﹕
如上圖所示﹐當區段甲的節點A對區段乙的節點B進行廣播﹐有兩個bridge接收到信息﹐並認為目的地是在區段乙﹐也就將封包傳遞出去了。當節點B接收到這兩個封包的時候﹐很有可能不知道它們是相同的數據﹐如果節點B將兩份資料都寫到同一個檔案裡面的話﹐就會造成數據損毀的情形了。
不過可以告訴大家的是﹐bridge looping只會在Ethernet邏輯形態和Bus物理形態上面出現﹐但使用802.5的Token Ring網路對它是免疫的。
有些bridge也可以連接兩個以上的區段﹐當有廣播封包(就是給所有節點的封包)要發送的時候﹐由於它是要傳遞給網路上所有節點的﹐bridge就會將它傳遞給所有連接上來的區段﹐我們稱這樣的情形為flooding。越多這樣的廣播封包﹐flooding的出現也就越頻繁﹐網路也就越慢﹕
當您有一個定點封包傳到bridge的時候﹐bridge就要判定究竟對此封包進行過濾還是傳遞﹐如果連接到它的區段超過兩個的話﹐它還要知道究竟傳遞到哪個網段去。一些低檔的bridge﹐並不會像learning bridge那樣會記住地址屬於哪個區段﹐然後它就簡單地會向所有連接的區段進行廣播﹐這樣一些不必要交通也就多起來了﹕
那究竟我們如何避免flooding呢﹖下面有兩個選擇﹕
Bridge的標準
由於bridge只有很低的處理能力﹐如果網路交通太忙的話﹐有可能出現封包丟失的情形。為了解決這樣的問題﹐一些bridge的標準相繼的被開發出來﹐通常有兩個標準是比較廣泛被接受的﹐它們是﹕spanning tree和source-route bridging標準。而且﹐這些標準還可以解決looping和flooding的問題呢﹗不錯哦~~
Router的使用
Router有那些功能呢﹖先讓我們先將它和bridge做一個透視比較﹕
每次當封包從一個router傳到另一個router的過程﹐我們稱之為“hop”,為了找到一條最少hop數的路徑﹐封包的路徑通常會在中游就會被改變而補償網路交通的變化。例如﹐在網路1的節點A有一個封包要送到網路4的節點B﹐必需經過router1、2、3和4﹐您可以從下圖看到初始路徑的選擇﹕
當封包在進行路由的時候﹐有兩組地址是router必需追蹤的﹕封包的來源和目的地址﹐以及datalink的來源和目的地址。網路來源地址和目的地址通常是這樣的一個組合﹕網路號碼和節點地址﹐這兩個地址在路由的任何過程中都不會改變。但datalink地址(例如﹕封包從哪台router來和要送到哪個router去)﹐記錄著即刻需要從一個router傳到下一個router的傳遞信息﹐而最終抵達目的地。您可以從下圖看到這過程是如何工作的﹕
正如您所見到的﹐router和router之間必需相互認識才能讓路由工作正常﹐更重要的是﹐對使用者而言﹐所有工作站都必須知道它們直接連到哪個(些)router去。每次當一個router加入到網路中的時候﹐它都會向WAN上面的其它router廣告自己的地址和其所連接的網路﹕
當您開啟一個RIP router的時候﹐它會先建立好自己的路由表﹕首先﹐它向所有它連接的網路廣播自己地址﹐並廣告其它在WAN上面的router這些信息。然後大約每隔一分鐘﹐router就會對資料進行更新﹐在其余時間﹐它會傾聽其它router的廣告信息﹐如何將所有新信息加進自己的路由表。這裡的最重要字眼是“新”﹐每次當router的狀態或連接發生改變的時候﹐它都會廣播這些信息﹐讓其它router將舊信息刪除掉﹐換成新的信息。這樣﹐如果WAN上面有一個router工作不良的話﹐其它router就會知道﹐而不會再將封包傳送給它了。
您可以把RIP router看成是極度信任別人的一伙﹕它們之間不斷地相互交談﹐但永遠只相信最後告訴它們的router所說的。不過﹐這樣有一個潛在的問題﹐如果其中一個router有一個錯誤的關于別的router的信息﹐然後將這不實信息在WAN上傳播開﹐其它router接收到信息後就會更新它們的路由表﹐而不實的路由表會導致封包的傳送速度變慢。其情形就如下圖一樣﹕
Gateway的使用
Gateway的工作比bridge和router都要複雜許多﹕Bridge只是簡單的看看封包資料的來源和目的地址﹐然後將資料傳遞到正確的地方﹔Router則會看看封包資料然後把封包傳給其它router﹐一路的改變datalink的來源和目的地址﹐但並不改變封包裡面的資料﹔但是Gateway卻實際上可以有效地將資料從一種協定標準轉換成另一種協定標準﹐它在處理使用完全不同協定的網路間的數據傳輸過程中﹐可以使用兩種方法﹕tunneling和terminal emulation。
PC Emulation Card﹐或稱為gateway card﹐您可以將它插進每一台需要連接mainframe的PC﹐不過這通常都很費勁才能將之調整正確﹐因為這比較容易引起資源衝突或是系統不穩定等問題。您可以從下圖看到這樣的配置﹕
Gateway Server
至此為止﹐相信您也已經有一定的概念去如何使用各種不同的設備將您的LAN連到WAN上面了吧。如果您管理的是一個小辦公室﹐那您很有可能是邀請外面的商家幫您連接您的LAN﹐然而﹐當您的網路成長的時候﹐對各種WAN設備的需求也會顯得越來越重要了。
在今天﹐越來越多辦公室工作都在辦公室之外來做﹐許多人以為電信(Telecommunication)都只會發生在那些完全在家裡辦公的人士﹐但這只是使用電信的其中一種情形而已﹐但凡需要使用電話技術去連接中央資源的人們﹐都可以說是電信的使用者。比如某些“neighborhood work center”就提供了一個工作場所給好些不同公司的僱員﹐讓他們無需真正去到辦公室幹活﹐當然﹐哪些流動工作者﹐通常都得在路上工作﹐也是使用電信的最佳例子。
對公司而言﹐電信的優點主要有這些﹕
當然﹐電信也有其自身的確定存在的﹐也不是對所有人都適合﹐主要是因為過于零散和缺少有效的監督和輔助﹐而且也有技術上面的問題。電信的問題可以來源於﹕
人為因素﹕
設備因素﹕
許多電信工作都和電腦有關﹐這樣對那些大多數只有一台電腦的電信人來說﹐將會是個問題﹕如果在辦公室裡面﹐假如工作站壞掉了﹐您還可以到其它的機器繼續工作﹐然後等機器修理好﹔但在家的話就得停工了﹐在電腦修好之前﹐只能乾等。另外﹐一些電信問題﹐諸如modem壞掉等狀況﹐也會打斷和辦公室的連線﹐對這些技術問題﹐您也無可耐何﹐只能儘量避免而已﹕盡可能使用比較好的﹐穩定的硬體和軟體就是了。
遠端控制 Vs 遠端連接
一旦您有僱員決定使用電信連接﹐您就要在兩種電信手段之間做出決定﹕遠端控制(Remote Control)﹐和遠端連接(Remote Access)。兩者其實都使用相同的設備﹕一個modem、一條電話線、一台電腦﹔內裡不同之處在於和辦公室的電信連接方法﹐而這則取決於進行何種的電信作業和使用什麼的軟體去做。
遠端控制對那些需要大量數據的文字模式程式非常好用﹐但如果使用圖形界面的程式﹐諸如windows和windows程式﹐則會緩慢得多。為了解決這個問題﹐有些遠端控制程式只傳送熒幕畫面變更的部份﹐從而減少數據的交通。
除了在使用windwos的時候比較慢之外﹐遠端控制也有其一些缺點﹕
當使用者獲取檔案之後﹐一切工作都只在遠端電腦進行﹐只有當回存或獲取新檔案才需要連接檔案伺服器﹐因而﹐如果您跑的是一些widows圖形界面程式的話﹐遠端連接對比遠端控制來說應該是個較佳的選擇。不過﹐遠端連接也需要跟多的時間去獲取檔案﹐還記得在電腦基礎裡面講述過電腦是如何工作的麼﹖“記憶體﹗”﹐使用遠端連接的機器必須要先將檔案整份載入後才能工作﹐如果檔案比較大的話﹐那麼下載時間也就比較長了﹐而不像遠端控制那樣只等待螢幕回應了。
Modem連接
Modem可以說是在電信過程中最常使用的硬體之一﹐當然您也可以使用ISDN、xDSL、Cable Modem等設備﹐不過這些服務並不是所有地方都可以得到﹐通常只有在大城市才有﹐如果在小的鄉村地方﹐畢竟電話網路才是最普及的。
MODEM這一詞其實是由兩個詞組成的﹕MOdulator/DEModulator(調制/解調器)。它好比一個翻譯﹐將電腦的信號轉換成電話線可以攜帶的模擬信號(我們日常使用的電話線都是模擬制式的)﹐然後在另一端再將模擬信號轉換回電腦信號。不過﹐事實上並不是所有modem都可以對講的哦﹐越是高速的modem﹐越是曲高和寡。要在modem之間溝通﹐它們都必須使用兼容的調制、錯誤控制、和數據壓縮等協定﹐下面我就分別對這些協定做一個簡單的了解﹕
V.90雖然說是可以支持56K的速度﹐但在實際應用中﹐由於電話線路的限制﹐其實最多只能達到53K﹐而且﹐這僅是對下載速度而言﹐用戶端的上載速度依然維持在33.6的速度﹐因此﹐56K可以說是第一個非對稱式的modem標準了。
錯誤控制協定在技術上面非常複雜﹐恐怕超出這裡要說的範圍了﹐不同﹐有兩種主要的modem檢錯手段我們也可以略為認識一下的﹕
通常有兩種糾錯協定被廣泛採用的﹐它們是﹕MNP 4 和 V.42﹐如果數據在公共電話網路傳輸過程中損毀的話﹐這些協定就會告訴發送端modem重發損毀的數據。
MNP﹐為Microcom Network Protocols的簡稱﹐實際上MNP有2、3、4這幾個不同的錯誤控制協定(MNP 5 則和數據壓縮一起使用)﹐而MNP 4是最廣泛使用的協定﹐甚至一度成為行業標準﹐因為除了Microcom之外也沒有其它機構開發錯誤控制協定了﹐不過這情形在V.42推出之後得到了改變。
V.42﹐它是有CCITT在1988年建立的﹐它實際上使用兩個錯誤控制手段﹕Link Access Procedure for Modems (LAP-M)是其主要的錯誤控制協定﹐不過當它不能使用LAP-M的時候還可以使用MNP 4。
數據壓縮的協定主要有﹕MNP 5 和 V.42bis。MNP 5 揉合了錯誤控制協定 MNP 4在內﹐最高壓縮比為2:1﹐不過它有一個比較蠢笨之處是﹐對那些已經壓縮了的檔案﹐例如 .ZIP當案﹐依然還會進行再次進行壓縮﹐這樣就會毫無意義的將傳送速度拖慢下來了。
V.42bis協定是在1989年被開發的﹐可以說是一種較好的數據壓縮協定﹐除了可以對數據進行壓縮處理外﹐它還可以提供V.42的糾錯能力﹐所以您的V.42bis modem就無需同時安裝和V.42協定了。它的最高壓縮比可以達到4:1﹐而且比MNP 5更高效﹐因為它可以動態的偵測一些無用字串﹐且不會對已經壓縮過的數據進行壓縮。
雖然看上去數據壓縮是個不錯的主意﹐不過在您考慮使用數據壓縮modem的時候﹐還有幾件事情要注意的﹕首先﹐並不是所有數據都可以使用壓縮的﹐許多ZIP檔案通常都已經被壓縮過了﹐而且許多圖像格式的檔案也是如此﹐使用數據壓縮對這些檔案也無能為力﹐徒耗時間而已。如果您使用諸如winzip等軟體對好幾個檔案壓縮成為一個檔案﹐再進行傳輸﹐這在直接使用網線連接的網路來說確實是個不錯的主意﹐不過對modem而言﹐卻需要更多的時間將一份較大的檔案傳送出去﹐這樣反而比逐個逐個小檔案要更慢﹐如果您的modem使用MNP 5這樣的協定﹐它還會再嘗試一次壓縮﹐也就更慢了。
再者﹐許多modem對實際的數據壓縮評估都過份樂觀﹐例如有些modem標榜自己的傳送速度如何如何﹐其實很大成數都是將壓縮數據包括在內﹐而這些數據大部份都是一些壓縮比例較高的檔案。
好了﹐相信您能堅持閱讀以上那些孤燥乏味的文章也真不容易﹐雖然還有很多東西沒有觸及到﹐但我也實在不想讓您打瞌睡去了。網路概論可以暫時討論到這裡﹐如何以後還有時間再做補充吧。下面要討論的其實要比以上的文章更晦澀難懂﹐如果您對它們沒什麼興趣的話﹐也不必細究﹐只挑一些您認為必要的部份來看就是了﹐不過關于IP地址部份﹐我還希望您能夠多了解一下的﹐因為在管理IP網路的時候會變得很重要。
![]() | OSI層級 |
七層協議
我們在前面的“網路概論”裡面已經略略提到過OSI的七層協定了﹐不過類似的TCP/IP和Microsoft網路也有其對應的協定層﹐我們可以從下面列表中看看它們的比較﹕
Open System Interconnection | Internet Protocol Suite | Microsoft Network |
應用層 (Application) | 應用層 (Application) | 應用界面層
(Application Interface) |
表現層 (Presentation) | ||
會談層 (Session) | ||
傳送層 (Transport) | 傳送層 (Transport) | 傳送設備界面層 (Transport Device Interface) |
網路層 (Network) | 國際網路層 (Internet) | 網路驅動界面層 (Network Driver Interface) |
資料連接層 (Data Link) | 網路層 (Network) | 實體網路層
(Physical Network Layer) |
實體層 (Physical) |
我們對這些協定層的名字都知道了﹐但它們之間的關係和定義又如何呢﹖下面讓我們以OSI的七個協定層逐一來探討一下﹕
實體層
這層實際是定義了應用在網路傳輸中的各種設備規格﹐以及如何將硬體所攜載的信號轉換成電腦可以理解的信號(0和1)﹐這通常都是設備上面之韌體(Firmware)的功能。這些規格一般是由硬體的生產廠商制定的﹐比如﹕數據線的接腳、電壓、波長、相位、等等。
我們在“網路概論”裡面討論的網線、網路卡、電話線﹐等等都是屬于實體層的範疇﹐也就是用來連接兩台電腦的可以攜帶數據的媒體﹕可以是銅線、也可以是無線電波、也可以是光學纖維。而我們常見的實體層會是用來連接辦公室網路的Ethernet和Token Ring線路﹐或者是連接modem的電話線。而機器上的網路卡﹐或是連接modem的通訊口﹐都會將物理媒體上面的電子脈沖轉換成電腦所能讀得懂的1和0。
資料連接層
由於數據在實體層是以bit為單位來傳輸的﹐資料連接層則使用數據封包(frame)的概念來在電腦之間傳輸數據﹐它負責安排封包的界定﹐也同時處理重複封包和封包的確認。所以資料連接層要制定不同網路形態的資料封包格式﹐確保數據能夠在不同的網路實體(比如﹕同軸電纜、雙絞線、光纖、電話數據線、等等)上進行資料傳送。我們通常用來撥接上網的PPP協定就是在這層裡面定義的了﹐且一般給Mainframe使用的xDLC協定也屬于這裡的範圍。
資料連接層通常會管轄以下的功能﹕
在IEEE802標準裡面﹐還將資料連接層再劃分為兩層﹕Media Access Control和Logical Link Control﹐請參閱下表﹕
OSI |
IEEE 802 |
IEEE 802 標準 |
|||||
資料 |
Logical Link Control |
802.2 |
其它802 標準 |
||||
Media Access Control |
CSMA/CD |
Token Bus |
Token Ring |
||||
實體層 |
實體層 | 802.3 | 802.4 | 802.5 |
我們在“網路概論”裡面介紹的bridge可以說是工作於資料連接層的。
網路層
網路層的主要功能是讓封包在不同的網路之間成功地進行傳遞。它規定了網路的定址方式﹐及處理資料在不同網路之間的傳遞方式、處理子網路之間的傳遞、決定路由路徑、網路環境、資料處理順序、等等工作。前面我們說的router就在網路層工作的。
發送端電腦在封包被傳送出去之前﹐都會先為其建立header﹐作為在網路或子網間進行路由的依據。網路層在辨認和處理資料的時候﹐會忽略由高層協定制定的定義﹐只負責為數據在一個或多個網路間建立、維護、和終止連接。
網路層通常都有如下的這些功能﹕
我們在“網路概論”裡面介紹的router就是工作於資網路層的。
傳送層
我們在前面“網路概論”裡面已經知道OSI的最底三層屬於網路功能﹐而上面四層則屬于使用者功能。也就是說﹐從傳送層起﹐協定所負責的可以說是純“資料處理”的功能。
由於大多數網路﹐如Ethernet和Token Ring等﹐由於物理上面的限制﹐一次所通過的數據流通常只有數千byte而已﹐然而許多需要在網路中傳輸的資料都會超過這個數值。傳送層的主要功能是確保電腦資料正確的傳送到目的地﹐﹐它的工作就是“打包”﹐也就是將電腦資料變成封包的形態﹐再賦以一定的檢測手段﹐將資料正確的傳到目的電腦﹐然後再將封包重組回資料﹐封包如果殘缺則進行重發﹐也能夠將重複的封包剔除。
傳送層可以等資料收集到足夠大的數量的才發送出去,並非應用程式每次產生一數據就進行一次傳送,也就能減少了不必要的傳輸次數﹐以保證高效率的傳輸﹔反之,當應用程式產生大資料量數據的時,則將之分拆成較小的封包再進行傳輸。
傳送層的主要功能有﹕
會談層
這層所負責的是建立和管理電腦與電腦之間的溝通模式﹐也就是在資料真正進行傳輸之前設定並建立好連線。這裡定義了連線的請求和結束、傳送和接收狀態的設定、等等動作。
當節點A要建立和節點B的連線的時候﹐ 會先發出“請求連線”訊息, 若對方接受連線,則回應“確認請求”訊息 , 然後就可開始傳送資 料了﹔然後在結束連線的時候﹐節點A也會先發出“終止連線”的信息﹐如果得到節點B的“確認終止”的回應﹐那麼連線就可以結束了﹕
會談層的功能主要有這些﹕
會談層為不同的程式以及與之對應的位於另一台電腦的程式﹐提供了可靠的溝通渠道。在某些溝通渠道中使用的是half-duplex(半雙工﹐即單向)的模式﹐有些則使用full-duplex(全雙工﹐即雙向)的模式﹐為程式之間協定好共同認可的模式﹐並進行同步和管理等責任﹐都是會談層所肩負起的。
表現層
如果您想將您的PC通過網路連接mainframe電腦﹐那您就必須使用合適的mainframe文字串﹐通常會是EBCDIS(External Binary Coded Decimal for Interchange Code)﹐然而您的PC使用的卻是ASCII碼﹐這兩種編碼格式是截然不同的。表現層則是主要負責在不同機器之間進行編碼轉換。當應用程式產生資料要進行傳送的時候﹐表現層會將之換成網路的標準編碼格式再交由下層協定處理﹔然後當資料抵達目的地﹐表現層也會將網路的編碼換成對方應用程式所需的格式。
表現層的主要功能如下﹕
應用層
表現層負責的是將傳入來到資料種類轉換成PC的資料種類﹐不過應用層則只轉換應用程式相關的檔案格式。例如﹕您的網路流覽器或許只能看得懂BMP的圖像格式﹐那麼當接收到JPEG或GIF圖像的時候﹐應用層就可以用來將他們轉換成BMP的格式﹐以讓您的流覽器能看到圖像。表現層的轉換與應用層的轉換之間﹐最大的分別是﹕表現層是針對特定的主機的CPU類型﹐而應用層則針對特定應用程式。
應用層所定義的還有一些應用程式功能﹐例如FTP﹐HTTP﹐TELNET等﹐主要負責客戶端和伺服端的連接。相信您對這些程式或多或少接觸過﹐比如您要從網上下載資料﹐可以通過FTP客戶程式﹐也可以通過流覽器將資料拿到。但在您的機器和在網路上面的伺服器﹐都必須使用相同的應用程式功能才可以﹐這在TCP/IP的網路環境裡面﹐通常都會是以不同的port的號碼來讓不同的程式進行溝通。Port號碼可以隨你喜歡來定﹐只要你知道號碼是多少就可以用相對待程式來進行交談了﹐不過﹐為了不至於太混亂﹐讓大家有規可尋﹐TCP/IP也指定了一些常用的port來給常用的程式使用﹐例如﹐HTTP使用80、FTP使用21、TELNET使用23、諸如此類...
分層的功用
如果您還記得前面在“網路概論”裡面講述通訊協定的時候所提及的“協定堆疊”﹐應該知道API和ODI吧。它們的功能其實就是在協定和程式、以及協定和硬體之間建立標準的界面﹐這樣的好處相當明顯﹕無論是程式、協定、還是硬體﹐只要它們可以支持這些標準界面﹐就可以相互工作了﹐而無需擔心和什麼樣的程式、協定、或硬體交涉。
在網路協定層級裡面﹐每一層都可以說是作為其連接的上下層的界面﹐這樣﹐在和網路另端的節點溝通的時候﹐只需和相同層級溝通就可以了﹐而無需理會其它層級使用的是什麼協定。而在發送端機器上﹐各個層級對會對數據封包加上自己的header﹐然後再傳給下一級協定﹔當封包抵達接收端﹐各層級也只關心相對應的header﹐並根據協定對封包進行處理﹐完畢之後則將header除去﹐然後傳給上級協定則可。
我們可以從下圖看看OSI層級的資料流情況﹕
或許我們可以用郵局系統來更形象的看看封包header是怎樣工作的﹕
當您有一份報價單(data)要寄給海外的客戶﹐將之交給秘書之後﹐秘書會幫你把信封(header1)打好﹐然後貼好郵票投進郵筒﹐然後郵局將信件分好類﹐再把相同地區的郵件放進更大的郵包(header2)附運﹐然後航空公司也會把郵件和其它貨物一起用飛機貨櫃(hearder3)運達目的機場﹔好了﹐目的地機場只接管不同飛機所運來的貨物﹐然後把郵包(header2)交給對方郵局﹐郵局把郵件分好類之後﹐把信封(header1)遞送到客戶那裡﹐然後客戶打開信封就可以看到報價單(data)了。
由此可見﹐網路的層級分工﹐其實跟我們日常的生活模式也有許多相似的功能的﹕
現在我們使用的網路協定中﹐最常用的非TCP/IP莫屬了﹐正如我們在開始討論OSI層級的時候已經知道﹕TCP/IP也有著自己的層級。TCP/IP的數據流可以參考下圖﹕
好了﹐當我們對網路層級的概念有了一定認識之後﹐在接著的章節裡面﹐讓我們專門看看TCP/IP這個聞名遐邇的協定。
![]() | IP基礎 |
IP地址
二進位和邏輯運算
在我們認識IP地址之前﹐我想我們很有必要認識兩個概念﹕二進位和邏輯運算。雖然我也知道這兩個東東都不好理解﹐但如果不知道它們的工作原理﹐那麼以後我們在討論IP地址和子網的時候﹐您就要靠死記了。不過一旦你知道了其原理﹐那麼您在任何的IP網路中都不至於迷失﹐所謂“萬變不離其宗”是也。
我們人類最習慣的運算規則是十進位﹐也就是從0到9為一圈﹐回到零的時候就進一位數﹔而我們前面討論的bit和byte則是八進位﹐即0到7為一圈﹐回到零就進一位數﹔另外還有十六進位﹐由0到15為一圈﹐回到零進一位﹐但使用數字15很容易和十進位混亂﹐在十六進位裡面﹐從10到15之間分別用英文字母A到F代替了﹐所以我們通常看到的十六進位是從0到F的排列。
好了﹐認識了上面這幾種運算規則﹐相信理解二進位也不難﹐道理是一樣的﹕從0到1為一圈﹐回到0進一。那麼我們看看十六個連續遞增的十進位、二進位、和十六進位數字之間的比較﹐將會是這樣的﹕
十進位 | 二進位 | 十六進位 | ||
0 | 0 | 0 | ||
1 | 1 | 1 | ||
2 | 10 | 2 | ||
3 | 11 | 3 | ||
4 | 100 | 4 | ||
5 | 101 | 5 | ||
6 | 110 | 6 | ||
7 | 111 | 7 | ||
8 | 1000 | 8 | ||
9 | 1001 | 9 | ||
10 | 1010 | A | ||
11 | 1011 | B | ||
12 | 1100 | C | ||
13 | 1101 | D | ||
14 | 1110 | E | ||
15 | 1111 | F |
如果您想進行二進位和十進位的換算﹐在列表中找到相應的數字是最簡單的方法﹐但正如您剛才所見﹐光十六個數字已經有這麼長的列表了﹐如果要找成千上百個數字可不是件容易的事情。不過﹐我們在IP地址上面看到的十進位數字最大不會超過255這個數值。我們可以先將2的0到7次方列出來﹕
27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
當我們要將十進位換成二進位的時候﹐我們只要找到找到該數字對應的欄位(準則是和欄位數字相相若﹐但又不超過其左邊欄位數值)﹐然後在相對的欄位填上1﹐然後﹐用余數繼續尋找下一欄位﹐再填1﹐直到再沒余數為止﹐最後把其它欄位都填上0就可以了。
例如﹕我們要換算220這個十進位數字到二進位﹕
我們找到128這欄位是最合適的﹐(因為128的左邊是256﹐所以220並沒有超過這數值)。那麼我們在128這欄位上面填上1﹐
繼續余數92﹕我們找到64這欄位是最合適的﹐那麼在64這個欄位也填上1﹐
繼續余數28﹕我們找到16這欄位是最合適的﹐那麼在16這個欄位也填上1﹐
繼續余數12﹕我們找到8這欄位是最合適的﹐那麼在8這個欄位也填上1﹐
繼續余數4﹕我們找到4這欄位剛好對應﹐這是最好找到情形了。那麼在4這個欄位也填上1﹐
因為再沒有余數了﹐其它都填上0就對了。
其結果如下﹕
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 1 | 0 | 1 | 1 | 1 | 0 | 0 |
如果我們要將二進位換算成十進位﹐利用上面的欄目來做就更加簡單了﹕只要將二進位數字從右往左的順序依次填入欄位﹐那麼﹐將凡是被1所對應的數字相加﹐得出來的和就是十進位數字了。
當然啦﹐這是手工的方法啦﹐如果您有二進位的計數器﹐或是使用Windows的小算盤﹐來進行換算﹐更是易如反掌啦。如果您還不知道怎麼用Windows的小算盤點話﹐可以依以下步驟進行﹕
在二進位的AND的運算中﹐只有參與運算的雙方都相同才會得出相同的結果(為0或1)﹐否則為0﹔也就是﹕只有雙為1的時候﹐其結果才會是1﹐否則為0。其情形是﹕
0 AND 0 = 0
1 AND 1 = 1
0 AND 1 = 0
這裡您不難看出﹕凡是有1參與的AND運算﹐其結果都會是對方(不管是0或1)﹔而凡是有0參與的AND運算﹐其結果都會是0。
在二進位的OR運算中﹐只有雙方為0的時候才為0﹐否則都會是1。其情形是﹕
0 OR 0 = 0
1 OR 1 = 1
0 OR 1 = 1
記憶方法﹕凡是有0參與的OR運算﹐其結果都是對方﹔而只要有1參與的OR運算﹐其結果都會是1。
NOT的運算最簡單﹐只有一方參與﹐凡是經過NOT運算﹐其結果都會相反﹕
NOT 0 = 1
NOT 1 = 0
至於其它一些NAND或NOR的運算﹐只不過將NOT和AND、及NOT和OR合併在一起運算而已。
認識IP地址
好了﹐經過剛才一輪“洗腦”之後﹐我們終於要談到IP地址了。如果您的機器現在是連上網路的﹐且使用的是IP協定﹐(我想您應該這樣吧﹐否則怎麼看我的文章呢﹖)﹐我假設您使用的是Windows系統﹐那麼﹐現在就請您按“開始”然後“執行”﹐再請您用鍵盤輸入“winipcfg”﹐然後“確定”。這時候﹐您應該看到一個視窗跑出來﹐並在“IP位址”欄目上面顯示著您機器當前使用的IP號碼。或許會是139.175.152.254這樣的一組號碼﹐不過您知道這組號碼的代表著什麼意思嗎﹖如果按正常設定來說﹐我可以說這是B class的IP號碼﹐而且是屬於seed.net的撥接網路的。我怎麼會知道﹖哈哈﹐等您看完了後面的文章﹐您還可以告訴我更多呢﹗
IP Class和識別碼
正如您所見到的IP地址﹐是四組用“.”分開的十進位數字﹐我們稱每組數字為一個“octet”﹐這樣的形式被稱作“Dotted quad”。其實每一組都是一個8-bit的二進位數字(使用十進完全是為了遷就人類的習慣)﹐合共起來就是一個32-bit的IP地址了﹐亦即是IP v4 (Version 4)﹐現在IP v6 (使用64-bit的IP地址)也正如火如筡的開發中。
如果您記得我們前面在“網路概論”裡面討論IPX地址的時候所提到的Internal和External地址的話﹐您應該知道Internal地址是用來識別主機的﹐而External地址則是用來識別網路的。IP地址其實也有這樣的功能﹐只不過將網路的識別碼和主機的識別碼放在單一的IP地址上面了。不過我們在區分Net ID和Host ID之前﹐先讓我們認識一下IP地址的分類(Class):
如果我們將IP地址全部用二進位來表示的話﹐每個octet都是8-bit﹐如果不夠8-bit的話﹐則往左邊填上0﹐直到補滿為止。這時候﹐你再看看最左邊的數字是以什麼為開頭的﹕如果是以“0”開頭的﹐這IP是一個A Class的IP﹔如果是以“10”開頭的﹐這是一個B Class的IP﹔如果是以“110”為開頭的﹐則屬於C Class的IP。
相信您知道為什麼我們在一開頭就學二進位換算了吧﹖如果您不懂得如何換算﹐您也可以死記﹕由1到126開頭的IP是A Class﹔由128到191開頭的IP是B Class﹔ 然後由192到223開頭的則為C Class。顯然易見﹐用二進位來識別IP Class比較容易﹗
好了﹐當我們識得區別IP的Class之後﹐我們就可以知道IP的Net ID 和Host ID了﹕A Class的IP使用最前面一組數字來做Net ID﹐其余三組做Host ID﹔B Class的IP使用前面兩組數字來做Net ID﹐另兩組做Host ID﹔C Classs使用前面三組數字來做Net ID﹐剩下的一組做Host ID。
為什麼我們需要為IP劃分等級呢﹖這是為了管理上面的需要。如果您要組建一個單一的IP網路﹐那麼您得使用相同的Net ID給所有主機使用﹐而各主機的Host ID卻必須是唯一的﹐也就是說沒有任何兩個Host ID會是一樣的。如果您的網路還要連上internet或其它網路﹐那麼您使用的Net ID也必須是唯一的﹐否則就會造成衝突了。好比您家的電話號碼﹐如果是1234567(Host ID)的話﹐那麼在相同區號(Net ID)裡﹐其他人將不會再使用這個號碼﹔但你不保證在其它區號裡面也有1234567這個號碼哦﹐但如果台北使用了區號02的話﹐台南就不能使用02了。無論如何﹐整個區號加電話號碼必須是唯一的。同樣的道理﹕整個IP地址(Net ID + Host ID)在internet上也必須是唯一的。有一個很特別的Net ID﹕ 127 (即二進位的01111111)﹐是保留給本機回路測試使用的﹐其不可能被運用於實際的網路中去。另外在指定Net ID和Host ID的時候﹐換成二進位的話﹐不可以是全部為0﹐也不可以是全部為1。因為當Host ID全部為0的時候﹐指的是網路本身識別碼﹔而全部為1的時候﹐則為全域廣播地址﹐也就發送廣播封包使用的地址。
很明顯﹐A Class網路可分配的Host ID明顯要比C Class的要多。讓我們算算可以劃分的Net ID數目和各等級裡面的Host ID數目就知道了﹕
因為A Class第一個bit必須為0﹐所以我們在頭一個otect的8個bit就只有7個bit使用了。那麼27 = 128﹐再減去0和127這個Net ID不能使用﹐那麼我們實際上最多只能劃分126個A Class的網路﹐而每個A Class的網路之下可以分配2的24(可用Host ID之bit 數目)次方﹐亦即16,777,216個Host ID﹐再因為二進位數字不可以全部為0或1﹐所以實際能用的主機位址只有16,777,214個。
因為C Class以110開頭﹐所以可劃分的C Class網路則為2的21(24-3)次方﹐也就是2,097,152個Net ID﹐然後每個Class C之下則可以劃分28 = 256 - 2 = 254個Host ID。
好了﹐這下您自己試試看計算出B Class可以劃分多少個Net ID﹐和每個Net ID之下的可用Host ID數目。Tips﹕別忘了ID不能全部為0或1)。看看你是否得到下面的結果﹖
等級 | 開首 | 網路數目 | 主機數目 | 使用範圍 | 申請領域 |
A | 0 | 126 | 16,777,214 | 1.x.x.x 到 126.x.x.x | 國家級 |
B | 10 | 16,384 | 16,382 | 128.x.x.x 到 191.x.x.x | 跨國組織 |
C | 110 | 2,097,152 | 256 | 192.x.x.x 到 223.x.x.x | 企業組織 |
D | 1110 | - | - | 224.- 到 239.- | 特殊用途 |
E | 1111 | - | - | 240.- 到 255.- | 保留範圍 |
認識Net Mask
下面我們要認識的是 Net Mask (網路遮罩﹐或稱網路掩碼)。到了這裡﹐我必須要向大家交代清楚一件事情﹕在我們進行IP地址劃分的時候﹐IP和Net Mask都必須一對使用的﹐兩者缺一不可﹗不過﹐當我們使用分等級的IP地址的時候﹐我們也可以使用預設的mask﹐比如﹕A Class的mask是255.0.0.0﹔B Class的mask是255.255.0.0﹔C Class的則是255.255.255.0。這是什麼意思啊﹖看255比較難理解﹐如果您將之換算為二進位就容易理解多了﹕11111111(8個1)。然後當您把這些Net Mask和各等級IP對應看看之後﹐聰明的您就會發現一個現象﹕就是~~~ 凡是被1所對應著的IP部份就是Net ID﹔凡是被0所對應部份就是Host ID ﹗
139.175.152.254換成二進位是﹕
10001011.10101111.01101010.11111110 (這時候﹐您應該知道我為何當初一口就說出這是一個B Class的IP了吧﹖還不知道﹖看看頭兩個bit是什麼﹖)
這個Class的預設mask是255.255.0.0﹐換成二進位是﹕
11111111.11111111.00000000.00000000
然後將IP和mask加以AND運算﹕
10001011.10101111.01101010.11111110
AND
11111111.11111111.00000000.00000000
得出﹕
10001011.10101111.00000000.00000000﹐這個就是Net ID了﹐
換成十進位就是139.175.0.0了。
那麼怎麼求Host ID呢﹖也很簡單﹐電腦先將Net Mask做一個NOT運算﹐可以得出﹕
00000000.00000000.11111111.11111111
然後再和IP做一次AND運算﹐就可以得到Host ID:
00000000.00000000.01101010.11111110 ﹐
換成十進位就成了﹕0.0.152.254。
簡單吧﹖是不是﹖哈哈~~我看到您大搖其頭哦~~~不用擔心啦﹐多拿些IP例子來運算運算您就得心應手了。
如果您剛才還認為預設的Net Mask是多餘的話﹐那麼當您知道Sub-net Mask的功能之後﹐我敢保證您不會再忽略Net Mask了。不過﹐說到這裡為止﹐我總還覺得有些不妥﹕因為許多網路都有一定的節點極限﹐比如Ethernet通常最多只能連接1,200台主機﹐如果您獲得一個B Class 的 Net ID﹐豈不是浪費很多Host ID了麼﹖要是使用A Class就更是駭人﹗當您遇到這種“有錢人的困擾”的時候﹐Sub-net Mask就派上用場了。
Sub-net Mask的使用手法就是靠“借”﹐或可以說靠“搶”﹕就是從右往左的按需要將本來屬於Host ID的一些bit轉為Sub-net ID來使用﹐也就是將預設的Net Mask的“1”逐漸的往右增加﹐相對地﹐Net Mask的“0”則越來越少。這樣的結果當然是可以獲得更多的Net ID﹐換一句話說﹐您可以將一個大的IP網路分割成更多的子網路﹐而每一個子網路的主機數目卻相應的減少。
為了更好的理解Sub-net Mask的功用﹐我們還是以剛才的IP(139.175.152.254)為例子來看看﹕
我們知道它在預設情形之下的Net Mask是﹕
11111111.11111111.00000000.00000000
如果我們借用了Host ID的其中三個bit來做Sub-net ID的話﹐將原來的Net Mask和Sub-net Mask做一個OR的運算﹕
11111111.11111111.00000000.00000000
OR
00000000.00000000.11100000.00000000
得出﹕
11111111.11111111.11100000.00000000
換成十進位後﹐實際的Net Mask將會變成這樣﹕255.255.224.0
因為借用的只有3個bit﹐所以切割成為8個子網路了﹐而他們的Sub-net ID則分別從000到111這8個組合﹐再加上原來的Net ID(10001011.10101111.00000000.00000000)﹐各子網路的實際Net ID就成了﹕
10001011.10101111.00000000.00000000 (139.175.0.0)
10001011.10101111.00100000.00000000 (139.175.32.0)
10001011.10101111.01000000.00000000 (139.175.64.0)
10001011.10101111.01100000.00000000 (139.175.96.0)
10001011.10101111.10000000.00000000 (139.175.128.0)
10001011.10101111.10100000.00000000 (139.175.160.0)
10001011.10101111.11000000.00000000 (139.175.192.0)
10001011.10101111.11100000.00000000 (139.175.224.0)
注意﹕有人認為使用Windows NT的話﹐甚至乎﹐連Sub-net ID也不可以全部為0或1﹐而不像Unix系統那樣﹕只要相加起來的實際Net ID不全為0或1就可以了。不知道即將推出的Windows 2000是否有所改進呢﹖不過在實際的測試中﹐卻是可行的﹗哈哈~~~正是﹕怎一個怪字了得﹖(答案將會在後面揭曉)
這時候﹐本來是16個bit的Host ID只剩下13個bit了﹐也就是說﹐在每個子網路裡面﹐最多只能有2 13 = 8,192 - 2 = 8,190台主機﹐而它們可分配的號碼分別由
00000.00000001到
11111.11111110之間。
但我們並不能簡單的將它以十進位的0.1到31.254這樣表示﹐我們還得將之配合各個不同的Sub-netID﹐再相加一起才能得出最終的IP號碼。例如﹕
在Sub-net ID 001之下的主機號碼﹐將會是從
00100000.00000001到
00111111.11111110之間﹐
亦即是﹕從32.1到63.254之間﹐
而整個IP地址則是從﹕139.175.32.1到139.175.63.254之間。
唉~~~~頭痛啦~~~﹗﹗別complaint啦~~﹐自己再動手算算在110這個Sub-net ID之下的主機號碼範圍是多少﹖如果您得出來的答案不是139.175.192.1到139.175.223.254之間﹐那麼您需要離開螢幕一會﹐到外面呼吸一下空氣(別抽煙)﹐然後過5分鐘回來重新看看前面幾段文章。再重讀的時候﹐要確定您每一個概念都清楚了才繼續往下讀。當然﹐你說放棄也沒什麼要緊啦﹐反正您老闆又不會扣您工錢啦~~~
IP的實際運用
好了﹐這裡讓我們歸納一下以上所學吧﹕
設定規則 當我們設定IP網路的時候﹐如果想各機器能夠直接溝通﹐那麼您得使用相同的Net ID和不同的Host ID。如果您想使用不同的Net ID(比如經過sub-net劃分)﹐那麼在不同Net ID之間的host就要經過router才能成功對講。當電腦用AND運算得出Net ID之後﹐會檢查來源Net ID和目的Net ID是否一致﹐如果一致的話﹐就可以直接將封包傳給對方﹐否則就將封包傳給Router或Default Gateway﹐這個過程我們在以後的ARP和RIP將會講述。
另外﹐如果您使用了sub-net技術﹐在分配IP地址的時候就要非常小心了﹐以免IP超出了子網範圍而無法溝通。比如﹐在沒有劃分子網路的情況下(亦即使用255.255.0.0的mask)﹐139.175.31.254和139.175.32.1都是在同一個網路之內的﹐他們的IP封包可以不用router就可以直接傳遞了﹔但經過借用3個bit的子網劃分之後(net mask成了255.255.224.0)之後﹐它們就被分隔開在兩個IP網路之內了﹐這時候它們一定要使用router才能傳遞封包了。
同時﹐原本一些有效的IP地址﹐在sub-net之後﹐因為Host ID變成了全部0或1﹐也就不能再分配給主機使用了﹐例如﹕139.175.63.255、139.175.64.0等等。
(如果您不明白為什麼我用這些號碼來做例子﹐將之換成二進位﹐然後找出屬於Host ID備份的數字就清楚了。)
所以﹐當我們在一開始設計網路的時候﹐就要具備應用的責任和遠見﹐早早就將子網路劃分好﹐否則﹐等所有機器都設定好﹐並且運作了一段時期之後﹐才決定劃分子網路﹐其情形將會變得異常複雜。如果要重新分配IP﹐其所做的規劃﹐和遇到的可見問題和隱藏問題﹐都比由0開始難上百倍﹐越大的網路越是如此﹗
保留IP
當我們要將網路連上intetnet的時候﹐我們必須先註冊好Net ID﹐如果該ID已經被使用了﹐您就必須選用另外的ID了。負責Internet IP註冊的機構叫做NIC(Network Information Center)﹐他們的網路地址是 http://www.internic.net。
由於Internet的爆炸性成長﹐IP的地址買少見少﹐而且在很多機構裡﹐也不是所有機器都有必要使用註冊的IP地址。於是﹐我們就在 A、B、C這三個層級裡面﹐個劃出一些地址範圍保留給私有位址所用﹐它們是﹕
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255
當您使用這些地址的時候﹐當然是有所限制的﹕
當然了﹐如果在課堂上或在家裡架設IP網路﹐使用私有位址也是個不錯的主意啦。
不分等級的IP
思考一下﹕如果我的IP是139.175.152.254﹐而Net Mask則為255.255.255.0。您認為是否用錯了net mask呢﹖
我們將較大的IP等級切割成許多較小網路﹐可以說是“有錢人的煩惱”﹔但難道“窮人”就沒有煩惱麼﹖當然是有啦﹗例如﹕您的公司有接近600台主機﹐想連一個IP網路﹐申請一個B Class網路似乎太浪費﹐而且﹐說實在﹐也未必可以申請得到﹗那麼申請3個C Class的網路總可以吧﹖當然沒問題啦﹗(如果還沒用光的話)。
不過﹐正如我們剛才知道的﹐因為3個C Class網路它們的Net ID都各自獨立的﹐如果您要其下的電腦都能溝通的話﹐就要router的參與了。但是router一點都不便宜哦~~~貴的router幾乎可以換一輛“Benz”房車來開呢﹗就算您老闆不在乎﹐要設定和維護好幾個網路的routing也不是一件輕鬆的事情﹐搞不好﹐還要專門請“半”人來看管呢。
好消息是﹕您可以將這三個C Class網路整合在一起來使用啦﹗使用的是CIDR (Classless Inter-Domain Routing)技術﹐也就是所謂的不分等級IP了。
使用CIDR的時候﹐您大可不必理會IP的開首字元﹐你可以隨便設定您的Net Mas長度﹐也就是說﹐一個C Class的網路也可以使用255.255.0.0這樣的mask﹐我們稱這樣的網路為“Supernet”﹐和subnet正好相反。
您是否已經隱約知道了我們在討論Sub-net Mask所提到的“NT之疑問”的答案了吧﹖沒錯啦﹐就是因為NT支持CIDR協定﹐所以就拋開了等級的界限﹐也就連Sub-net ID全為0或1也可以使用了。當然﹐如果要和其它網路溝通﹐您使用的router也必須支持CIDR才行啦。
這時候﹐如果您覺得139.175.152.254/255.255.0.0 和192.168.1.1/255.255.255.0這樣的IP表現方法實在太麻煩了﹐這裡有一個更好的表示法﹕使用mask的bit數來表示Net Mask。這樣我們就可以這樣寫了﹕139.175.152.254/16 和192.168.1.1/24﹐假如使用了三個bit的Sub-net﹐我們只要將16改成19和將24改成27就可以了﹔如果是使用了三個bit的Supernet﹐我們將之改成13和21就可以了。
是不是很方便呢﹖﹗我好喜歡哦~~~
DHCP協定
正如我們前面看到的﹐當使用TCP/IP協定的時候﹐如果要電腦之間能幹直接傳遞信息﹐就必須使用相同的Net ID和不同的Host ID﹐您得為每台電腦設定IP﹐以及管理好紀錄。要是您想管理好一個比較大的網路﹐或是電腦節點經常改變(如撥接網路)﹐這樣的工作可以說是非常令人煩厭的﹐而且出錯的機會也比較多﹐而且也容易增加網路交通負荷﹔另外﹐如果在進行IP重新規劃的時候﹐其工作量也是相當驚人的。面對這些情形﹐DHCP可以說您的菩薩了﹕它不但救苦救難﹐而且神通廣大。下面讓我們一起揭開DHCP的神秘面紗﹕
什麼是DHCP﹖
DHCP是Dynamic Host Configuration Protocol之縮寫﹐它的前身是BOOTP。BOOTP原本是用於無磁碟主機連接的網路上面的﹕網路主機使用BOOT ROM而不是磁碟起點並連接上網路﹐BOOTP則可以自動地為那些主機設定TCP/IP環境。
DHCP可以說是BOOTP的增強版本﹐它分為兩個部份﹕一個是伺服器端﹐而另一個是客戶端。所有的IP網路設定資料都由DHCP伺服器集中管理﹐並負責處理客戶端的HDCP要求﹔而客戶端則會保留由伺服器分配下來的IP環境資料。
DHCP的功能
首先﹐必須有一台DHCP工作在網路上面﹐它會監聽網路的DHCP請求﹐它提供兩種IP定位方式﹕
DHCP除了能動態的設定IP位址之外﹐還可以將一些IP保留下來給一些特殊用途的機器使用﹐也可以安裝MAC地址來分配固定的IP地址﹐這樣可以給您更大的設計空間。同時﹐DHCP還可以幫客戶端指定網路、網關、router、Net Mask、DNS伺服器、WINS伺服器、等等項目﹐您在客戶端上面﹐除了將DHCP選項打勾之外﹐幾乎無需做任何的IP環境設定。
DHCP的工作形式 視乎客戶端是否第一次登錄網路﹐DHCP的工作形式回有所不同。
第一次登錄的時候﹕
Dhcpdiscover的等待時間預設為1秒﹐也就是當客戶端將第一個Dhcpdiscover封包送出去之後﹐在1秒之內沒有得到回應的話﹐就會進行第二次Dhcpdiscover廣播。在得不到回應的情況下﹐客戶端一共會有四次Dhcpdiscover廣播(包括第一次在內)﹐除了第一次會等待1秒之外﹐其余三次的等待時間分別是9、13、16秒。如果都沒有得到DHCP伺服器的回應﹐客戶端則會顯示錯誤信息﹐宣告Dhcpdiscover的失敗。之後﹐基於使用者的選擇﹐系統會繼續在5分鐘之後再重複一次Dhcpdiscover的要求。
事實上﹐並不是所有DHCP客戶端都會無條件接受DHCP伺服器的offer﹐尤其在這些主機上安裝有其它TCP/IP相關的客戶軟體。客戶端也可以用Dhcprequest向伺服器提出DHCP選擇﹐而這些選擇會以不同的號碼填寫在DHCP Option Field裡面﹕
號碼 | 代表意思 |
01 | Sub-net Mask |
03 | Router Address |
06 | DNS Server Address |
0F | Domain Name |
2C | WINS/NBNS Server Address |
2E | WINS/NBT Node Type |
2F | NetBIOS Scope ID |
第一次登錄之後﹕
至於IP的租約期限卻是非常考究的﹐並非如我們租房子那樣簡單﹐
ARP協定
RIP協定
DHCP協定
DNS協定
IP封包
網路檢測
![]() | 附錄 |
網絡檢測程序
作為一個網絡管理員﹐當網絡出現問題的時候﹐有一套系統的查錯程序將會起到時半功倍的作用。我們需要檢查的通常有三個部份﹕
© 1999
Netman 網中人