網路基礎


網路概論
何為網路﹖
網路能做些什麼﹖
一些網路名詞
連線材料
網路架構
網路管理模式
通訊協定
網路作業系統
超越LAN之外 --- Internetworking
電信 (Telecommunication)


OSI層級
七層協定
分層的功用


IP基礎
IP地址
DHCP協定
ARP協定
RIP協定
DNS協定
IP封包
網路檢測

附錄

 

 

網路概論


為網路﹖

在定義上非常簡單﹕網路就是一群通過一定形式連接起來的電腦。一個網路可以由兩台電腦組成﹐也可以擁有在同一大樓裡面的上千台電腦和使用者。我們通常指這樣的網路為局域網(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到上面去。但這樣的方法有其極不良的弊端﹕

答案很明顯都是負面的﹐同樣的問題通過網路也不是完全能解決掉﹐但起碼得到了很大的改善。而且網路還可以為我們做到這些東西﹕
檔案管理
  • 共享檔案
  • 傳輸檔案

共享應用程式

共享週邊設備
  • 印表機
  • 光碟機
  • 掃描器
  • 傳真/數據機
  • 磁帶機

和其他使網路用者交流
  • 進行群組工作排程
  • 收發電子郵件
  • 進行電子會議
  • 網路游戲
共享(sharing)﹐其實就是網路的精神所在。當然在一個網路環境裡面﹐我們是可以設定不同等級的共享和限制﹐以適合不同的使用者要求。很明顯﹐經理當然希望能知道各員工的工作情況(除了私人資料)﹐但銷售部的員工卻未必能看得到會計部的資料。這些限制﹐我們通常是通過使用者(Username)和密碼(Password)來進行設定的。在網路上的唯一身份就是您的使用者名稱和密碼了﹐如果您的戶口被人盜用了﹐出了什麼狀況也可能是追究到您的身上﹐所以設立一個比較難猜中的密碼﹐和保護好自己的密碼是使用網路的第一意識。



些網路名詞

工作站(Workstation)
任何能夠提供對網路環境進行輸入的機器﹐都可以說是工作站﹐其主要定義元素就是“輸入”。這可以包括個人電腦、手持式掃描器、終端機、等等。每一工作站都有其自己的網路卡。

節點(Node)
每一個工作站、網路傳真機、網路印表機、檔案伺服器、或任何其它擁有自己唯一網路地址的設備都是節點。它們是怎樣獲得網路地址的呢﹖從網路卡那裡獲得。每一張網路卡在出廠的時候都會被廠家分配一個地址﹐使用者是不可能變更此地址的。
這樣的地址安排就如我們日常的家庭地址一樣﹐是用來區分各自的身份的。您的網路必須有能力去區別這一個地址有別於其它的地址。在網路裡面﹐有很多資料封包會由一個節點傳送到另一個節點﹐同時要確定封包會被正確的傳達目的地﹐而這個目的地就必須依靠這個網路卡地址來認定了。

伺服器(Server)
從技術角度而言﹐伺服器就是在網路中具備某些特定功能的集散地。伺服器也有分好些類型﹐比如﹐一個印表伺服器就是一台讓一群使用者儲列和處理列印工作的機器﹔一台傳真伺服器可以接受傳真請求、儲列和處理傳真等工作。建立一個印表伺服器﹐您可能需要騰空一台機器只用來專門處理列印服務﹐或是需要一些本身帶有網路卡的印表機。
最常見的伺服器莫過于檔案伺服器了。一個檔案伺服器就是一台儲存和管理檔案、應用程式和數據、以及對其負責保安服務的電腦。它可以對您的數據提供集中控制﹐和建立一個共同的地方為您的檔案進行集中備份。

封包(Packet)
封包是能夠在網路上面進行傳輸的最小資訊單位。一個封包包含有發送端節點地址、接收端節點地址、和這兩個節點之間需要傳送的數據。

網路形態(Topology)
這一解釋牽涉到網路上的各節點之物理和邏輯關係。從表面上看﹐就是這網路的“長像”。可以從兩個角度(或曰形態)看待您的網路﹕物理上的和邏輯上的。

網路物理形態
這種形態就是講述一個網路上面的各個節點之間在物理上面的佈置﹐和它們在總體配置上看去的樣子。如果您在紙上將各台電腦的位置標示出來﹐同時將連接它們的網線(Cable)也畫出來﹐您就會比較清楚的看到其物理形態了。比如﹕總線狀(bus)、環狀(ring)、或是星狀(star)

網路邏輯形態
這種形態講述的是信息如何在網路中行走。我們不妨舉個例子來模擬一下﹐好讓我們更好理解邏輯形態﹕
假如您有一份長達400頁的文件由台南送到台北﹐而且必須最遲明天送到﹐那麼您很可能會使用網中人快遞服務(假設已經成立 ^_^)了。不過要處理這個傳送﹐您還必需要使用網中人快遞的信封和地址標籤。同時﹐您必需提供發信人和接收人的地址﹐當然少不了您那400頁文件啦。
在您的網路上﹐從一台電腦傳送數據到另一台電腦﹐也需要相同的資料﹕它需要您的發送端地址、接收端地址數據數項資料。正如剛剛所述﹐這些資料都包含在封包裡面了。邏輯形態就接管著如何將這封包在網路從傳輸了。

  1. 首先﹐邏輯形態會判定這個封包的格式﹐一如您必須按網中人快遞的地址標籤格式來填寫地址一樣。您必須使用網路能夠明白的地址格式。
  2. 邏輯形態會判定有多少數據需要攜帶﹐一如網中人快遞也有規定一個標準信封只能最多裝30頁文件一樣。
  3. 然後邏輯形態會判定使用什麼方法來追蹤在網路傳輸的封包。有些邏輯形態則不會追蹤封包而假設一切無誤﹐有些則會對路徑中的每一個步驟進行追蹤。
如果您已經聽過乙太網(Ethernet)或者令牌環(Token Ring)﹐其實您已經接觸過邏輯形態了。每一種邏輯形態常常會和網路物理形態聯係起來﹐但物理形態卻不一定就是邏輯形態。如下圖﹐在物理上面我們可以說它是一個 Star 網路形態﹐然而在邏輯上﹐它卻很可能是 Token Ring 網路形態。

在後面﹐我們將會對不同的邏輯形態進行講述﹐包括它們各自的優缺點。這是一個非常重要的題目﹐因為不同類型的網路形態會影響到您需要在您的網路安裝什麼類型的網路卡。在一個複雜的網路裡面﹐可以由好幾種不同類型的網路形態共同組成。



線材料

網路卡
如果您還記得在電腦基礎裡面的知識﹐在設定任何插卡的時候﹐我們都需要知道它的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網卡還依然很貴)。

要連上網路﹐首先要設定好網路卡。

網線
雖然網路卡設定好了﹐離開網線什麼地方也接不上去。

選擇一個網線系統也要考慮到很多因素﹐比如﹐您的網路架構---您需要什麼樣的物理形態和邏輯形態﹖什麼樣的網線既不會超支預算又可以符合傳輸要求(速度和距離)﹖您需要什麼樣的接頭來連接它們﹖等等。同時﹐不同類型的數據要求(如純文字、大量的圖片、影象、和語音等)﹐以及電腦之間的距離長短﹐也會影響到網線的取材。

網線也有分好幾種類型﹕


雙絞線(Twisted Pair Cable)
通常由兩對或四對相互纏繞的銅線組成﹐為什麼要把線纏繞著呢﹖因為任何電流流經導體都會產生電波干擾(RFI﹐ Radio Frequency Interfernce)﹐但是如果兩條線相互的旋轉纏繞著的話﹐彼此產生的干擾就會相互抵消掉。雙絞線還分為屏蔽雙絞線(STP﹐Shielded Twisted Pair) 和非屏蔽雙絞線(UTP﹐Unshielded Twisted Pair)。其唯一分別是STP有一個導電金屬層將所有雙絞線保護起來﹐提供更透徹的抗干擾能力。當然﹐STP比UTP要貴多了﹐但在一些UTP實在應付不來到場合裡﹐還是物有所值的。
Elecrtonics Industry Association (EIA), Telecommunications Industry Association (TIA), 和 National Electrical manufacturers Association (NEMA) 等機構對雙絞線建立了5個標準等級。按照等級高低﹐級數越高﹐其每英尺的絞接數目也越多﹐其抗干擾能力也越強。這5個種類分列如下﹕
  • CATEGORY1﹐這是一種從1983年就被廣泛使用的老式電話線﹐它不適合於任何高速數據傳輸﹐只不過其得名於將線絞接起來而已。
  • CATEGORY2﹐此種線可以傳輸高達4Mbps的數據﹐其擁有兩個特征﹕1) 在一英尺直線距離最少有3個絞接。 2) 沒有任何兩對線是相同的絞接色樣的﹐這可以降低線線之間的交叉對講(crosstalk)。比如其中一對線在每英尺之內使用了3個絞接﹐而另外一對則使用31/8個絞接。(注意﹕其後的3個等級也具備這兩個特性﹐只是要求更嚴格而已)
  • CATEGORY3﹐這是您能夠由來做LAN網線的最低等級了﹐它可以最高傳輸10Mbps的數據﹐同時構造上面也要比CAT1和CAT2要好。
  • CATEGORY4﹐可以用來給16Mbps的Token Ring網路使用的最低等級﹐實際上﹐對LAN而言﹐最好將此等級作為最低等級了﹐而非CAT3。
  • CATEGORY5﹐無論在速度上和抗干擾能力上﹐這個才是您真正需要的等級﹐其最高傳輸速度可以達到100Mbps。
CAT5等級網線被指定可以使用在FDDI (Fiber Distributed Data Interface)網路上面﹐定義了如何將銅線和光纖在同一網路環境的整合﹐它被設計成為配合光纖導線而提供更好的多媒體(語音和影像)過載網路方案。

同軸網線(Coaxial Cable)
也稱為BNC網線(得名於Bayonet-Naur Connector)。其構造是﹕中央是一條被隔離層保護著的銅導芯﹐其外隔著一層絕緣體還有一層導體金屬網﹐在最外層則是保護外皮。它有更好的屏蔽能力﹐如果您需要比雙絞線更高的抗干擾要求﹐但又用不起光纖的話﹐Coaxial可以說是您的選擇。不過傳輸上面﹐Coaxial只能最高有10Mbps。
Coaxial Cable也分為4類﹕
  • Ethernet, 厚0.4英寸﹐也常被稱為10Base5﹐其標準由 Institue for Elecrical & Electronic Engineers (IEEE)制定。
  • RG-58A/U﹐厚0.18英寸﹐也常被稱為10Base2。
  • RG-59/U﹐厚0.25英寸﹐用在Cable TV和ARCnet(一種古老網路形態)上面。
  • RG-62/U﹐厚0.25英寸﹐用在ARCnet和IBM 終端上面。

要注意的是﹐雖然後面三種網線差不多大小﹐但卻是不可以調換使用的。而在這四種類型之中﹐只有兩種是適合於LAN使用的﹕10Base5和10Base2。我們使用這些名稱是有其意思的﹐其中的信息可以分拆成以下部份﹕速度、頻寬、和信號在網線中行走的最長距離。
拿10Base5為例﹕首先是速度﹐10代表10Mbps﹐這個前面解釋過了﹔最後是信號距離﹐5代表500米(大約1640英尺)﹐然後是中間部份了﹐頻寬﹕

何為頻寬呢﹖沒得解釋﹐就是頻寬﹗而且越多越好。如果要形象地理解頻寬﹐我們可以拿一條高速公路來做例子。如果此公路是四線行車的﹐那麼汽車就好比是數據﹐這樣就有四條傳輸數據的通道了。如果在交通在非繁忙時候﹐每輛車以100KMph行走輕鬆有餘﹐但在高峰期呢﹖就跟台灣的高速公路差不多了。這情形跟網路的交通是一樣的﹐解決方法有兩個﹕一是在高峰期減少封包的傳輸﹐例如利用工作排程將一些比較繁重的網路傳送工作安排到晚上或非繁忙時間﹔另一種方法就是增加頻寬了﹐跟我們的MODEM從33.6Kbps換到56Kbps一樣。
而頻寬的分割方式也有兩種﹕一種叫Baseband﹐另一種叫Broadband。再以高速公路為例﹕前者將整條公路並成一條線﹐這樣可以容許比較大載量的卡車通過﹔後者則將公路分成數條行車線﹐可以允許數量小車一次通過。如果貨物來到公路一端﹐使用Baseband﹐我們就用大容量的卡車﹐一次出發一輛的運送﹐不管誰的貨物﹐也不管貨物多大﹐都要排隊輪候﹔如果利用Broadband﹐我們就用小點的車﹐分配給各人一條車道(但卻不可以轉換車道哦)﹐這樣排隊的人就比較少了。這兩種方式各有其優缺點﹕如果貨物都比較大﹐而且目的地都相同的話﹐Baseband比較有效﹔如果貨物都比較散﹐而且也送到不同的地方去﹐則Broadband有效。但是如果貨物有時候多﹐有時候少﹔有些人多貨﹐有些人少貨呢﹖就變得很複雜了﹕如果用Basedband﹐那些多貨的人﹐也要等前面那些少貨的先發送走了才輪到他﹐但少貨的人卻可以早點完成運輸﹔如果使用Broadband﹐多貨的人就不用等少貨的人﹐但少貨的人也比較晚完成運輸﹐而且要是多貨的人不多﹐那麼空出來的車道也就浪費掉了。
凡 此種種﹐都要視乎情況而定﹐但車道一旦劃好了﹐要改就不可能了。

好了﹐那麼我們也應該知道10Base5裡面的Base是怎麼樣的頻寬了吧。不過在講到頻寬的時候﹐我們還要了解一個概念﹐就是流量﹕即是資料每秒所流過的數量(以頻寬乘以時間為極限)。頻寬的流量都是有極限的﹐我們可以稱這個極限為100%飽和量。因為我們在網路中使用bit來做單位﹐而電腦運算則以byte單位(1byte=8bits)﹐所以在數值上﹐流量只是頻寬的1/8。例如您使用56KMODEM來下載資料﹐如果您發現程式顯示的是4Kps的話﹐那麼您當時的流量就是50%了。
這裡我還要提醒一下10Base2的2並不是真正的200米﹐準確來說應該是185米﹐200只是取比較好聽的近似值罷了。而10BaseT的T則代表Twisted Pair。



光纖網線(Fiber Optic Cable)
到目前為止﹐我們所介紹的都是以電子方式傳遞的介質﹐而光纖網線則是以光為遞方式的介質﹐其完全是不受電波干擾的。在這種網線上﹐光只在塑料或玻璃纖維裡面傳導﹐其外面則由一層薄薄的被稱為cladding的外衣保護著﹐然後整根或多根導線則隔著一層絕緣材料被包裹在塑膠外套裡面。
使用光纖的最大好處是其傳輸量大﹕可達155Mbps﹔傳輸距離遠﹕信號有時候可以傳送好公里而不會削弱。所以光纖網線一般都會用來做高速網路的龍骨(Backbone)﹐也通常是用來做長途電話通訊和FDDI的導線。光纖比起Coaxial和UTP來說﹐也更難遭到竊聽﹐所以也多用來傳送機密通訊。
光纖最大的壞處是價錢高﹐而且架設費用也很高。不過近年來隨著光纖的普及﹐其造價也急跌許多﹐相信不久的將來﹐使用光纖在辦公室架網恐怕也是很平常的事情。


無線網路
除了以上說的有形網線之外。在某些特殊的環境中﹐我們還可以使用無線技術將電腦連接起來。因為在一個網路工程當中﹐線路鋪設所佔地成本是頗高的。尤其在一些結構比較複雜﹐或因制度而令到網線鋪設費用過高的話﹐使用無線通訊未嘗不是好的提案。
在無線網路裡面﹐每台電腦都必須要安裝特殊的網卡和天線來傳送和接收數據。但無線網路的傳輸能力暫時還強差人意﹐大概只有242Kbps﹐應付一般的文字檔案或許還可以﹐要是傳送大量的圖片或音像則恐力有不逮了。不過現在新的IEEE802.11 PCMCIA標準已經可以達到1Mbps或2Mbps了。


網線接頭

BNC
假如您要使用Coaxial Cable的話﹐那您很可能需要BNC接頭了﹐其形為圓狀﹐後接Coaxial網線﹐前面中間是根銅針﹐外面是個可以旋轉的金屬環。在BNC連線上面﹐您必須在網路的兩端使用50歐姆的終端電阻﹐而且在網線和網卡之間必須使用T型接頭。連接BNC和T型接頭也很容易﹐把接頭對准卡口套進去然後順時針寧上就可以了。您的手指應該會感覺到是否擰好了﹐如果不確定重複試試就是了﹐這點很重要﹐要是因為其中一個接頭沒寧好﹐可能會導致整個BNC連線失敗哦。
不過BNC連線在使用上面﹐現被發現越來越多的弊端﹐比如﹕接頭不牢靠、終端不穩定、接頭與網線連接不好、網線容易斷、等等。其中最不好的是﹕只有其中任何一部份出問題﹐都可能會影響整個網路﹐而且除錯也比較困難。(不同於下面介紹的RJ45連線﹐RJ45如果有問題只會影響有問題的機器而不會是整個網路)。另外﹐要是自己動手做BNC網線的時候﹐要注意網線最短不能少於1米。


RJ-45
RJ-45接頭通常是給雙絞線使用的。其形狀很似我們日常使用的電話接頭﹐不過其體積比較大些而已。仔細數數接頭﹐上面應該有8根銅線﹔其另一邊是個可壓式的塑料卡荀﹐當您把它插進網卡或牆跟的插座﹐這個卡荀就會把接頭鎖好在插座裡面﹐要取出來把卡口按下則可。
使用RJ-45的連線﹐都必須使用集線器(HUB)﹐所有的電腦都必須先接到HUB上面才可以彼此溝通。如果只是兩台電腦之間的連線﹐您也可以不要HUB﹐但您得為您的RJ-45接頭動動手術﹕將一端的第1線接到另一端的第3線、一端的第2線接到另一端的第6線(方向是網線在接頭左邊﹐銅線向上面﹐從上到下數)。


其它接頭
除了上面兩種我們比較常見之外﹐還有諸如 D-Shell Connector、Token Ring Connector、和 Fiber Optic Connector等接頭﹐不過這裡也就不一一說明了。

我們可以在下面的列表中看看各網線的特征﹕
網線類型 傳輸速度 傳輸距離 接頭類型
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 ﹐也可以從下面的列表中直接看出來﹕

節點數目 所需網線數量
510
828
25300
哇﹗如果有一百台電腦起不是整個辦公室都佈滿網線了﹖﹗而且網線也需要錢買的啊﹐所以實際上﹐是沒有人會採用這樣的連線方法的。

物理形態

星狀形態(Star Topology)
一個星狀的網路形態裡面﹐在中央是一個集線器(hub)﹐或MAU (Multistation Acces Unit)﹐所有的工作站、伺服器和印表機都接到hub上面﹐看上去就象一顆星星向四週放射星光一樣﹐因而得名。hub通常有兩種﹕惰性(passive) hub活性(active) hub。前者僅僅是將各個接口(port)連接起來﹐也就是將上面的那個接線方法從一個辦公室縮小為一個盒子罷了﹐再無其它功能了﹔而後者除了會起到增益器(Repeater)的作用之外(其實這是活性hub的最基本功能了)﹐還可能肩負網橋(Bridge)路由器(Router)的功能(這兩種功能稍後會解析)。


星狀的形態裡面﹐hub是不可缺少的部件﹐如果一個hub的接口都接滿了﹐我們還可以引一條線出去接另外一個hub﹐這樣就有另外一個星星了﹐但最多可以串接4個hub (也就是共5個)。
星狀形態的優點是﹕
  • 容易傳輸
  • 容易除錯
  • 容易佈線
使用星裝形態﹐伺服器無需知道信息請求是從哪個機器來的﹐也不必擔心回應給誰﹐只需知道哪個port就可以了﹐然後hub會決定如何傳遞給真正的機器。這也給除錯帶來方便﹐如果有哪台機器不能連上網路﹐我們只需要查看這台機器和hub之間的連接就是了。如果您的機器都四散東西﹐甚至樓上樓下的﹐使用星裝形態的話﹐你就不必擔心如何將它們整體的連接起來﹐只需關心各台機器怎樣集中到hub而已。


總線形態(Bus Topology)
在bus形態裡面也有兩個類型﹕一是Thick Ethernet﹐另一是Thin Ethernet。前者使用一條厚厚的中央網線(10base5)﹐兩頭帶有終端電阻﹐然後各接點再通過一條較幼的網線連到這條厚線上面﹔而後者則只使用10base2 網線將所有的節點連接起來﹐網線和節點之間使用T型接口連接﹐而在兩端的接點則各連接一個終端電阻。


Thick Ethernet


Thin Ethernet

Bus形態的最大問題是出現問題的時候的問題(﹖﹖﹖廢話啦~~)﹐網路這時候需要整個停下來檢查﹐如果是因為終端電阻沒接好那還好辦﹐換一個就可以。但要是其中一個節點有問題的話﹐你就得慢慢找出來了。在star形態裡面﹐要是該節點有問題﹐受影響的僅是其接點罷了。但在bus上面則不同﹐如果一個節點是關閉的話﹐封包會略過它而直接通過T型接頭傳給下一個開著的節點﹐然而﹐要是該有問題的接點開著的話﹐其也會接收和發送封包﹐但卻會令到網路越來越慢甚至停頓下來。
順便一提﹐我們在給10Base2網路除錯的時候﹐通常先從中間斷起﹐就是將其中一個終端電阻接到中間的節點去﹐然後檢查各自分開的部份﹐找有問題那邊﹐再繼續斷開中間﹐如此一直到找到問題的節點為止。
Bus形態唯一好處是便宜﹕無需hub而且省cable、省錢。如果在家裡玩玩或接點不多﹐Bus形態也是值得考慮的。


環狀形態(Ring Topology)
一般來說﹐這樣的形態還是比較少見的﹐因為其佈線是一個非常頭痛的問題﹐您大概可以從下圖窺見一斑﹕


Ring形態可以說補足了bus的短處﹐且無需使用終端電阻。因為其使用的是雙網線連接﹐當然其佈置數量也是雙倍增加了。但在一般的辦公室環境裡面甚少會見到物理Ring形態的網路﹐其通常是用來做為連接數建築物之間的高速龍骨幹網﹐如FDDI等。

邏輯形態
雖然我也知道我很囉嗦﹐但我還是要提醒大家﹐網路形態和邏輯形態是兩碼子事情﹐在學習邏輯形態的時候我建議您先將物理形態忘記掉。

Bus
我想Ethernet恐怕是最佳的邏輯bus形態例子了﹐它也是現在最普遍的LAN類型。
這個邏輯bus形態是如何工作的呢﹖很簡單﹐就是每次只能有一個節點在網路上傳遞數據給其它節點﹐其形式是通過對整個網路進行廣播(broadcast)。然後其它接點收聽到廣播之後﹐就看看數據是否傳個自己的﹐如果是﹐則接收下來﹔如果不是﹐則略過。每一節點都有一個自己用的48bit的地址(也可以稱為Node ID﹐也就是在前面說的網卡地址了)﹐而每一個在網路中傳輸的數據都是直接送給這個地址的。
當任何一個節點進行廣播的時候﹐所有的其它節點都會收聽得到。其情形就像我們上課一樣﹐老師說﹕“第幾排第幾號同學出來拿作業﹗”雖然全班同學都聽得到﹐但卻只有一位同學可以拿到。Bus形態也和這種形式很類似﹐當然具有更嚴謹的一套法則啦。在bus上面的數據都是以封包(packet)形式傳遞的﹐封包送出來之後﹐會同時向bus兩端廣播﹐當目的地接收到給它的封包﹐也不是據為己有的﹐而是複製一份給自己﹐而原來的封包則還是會繼續被送給下一個節點﹐直到封包抵達終端電阻才會被銷毀。

任何類型的數據要在這一網路上面傳遞的話﹐都必須嚴格的遵循既定的封包格式﹕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

每一個packet都不可以超過1518bytes﹐這樣就可以確保任何一個工作站都不會佔用網路太久。在工作站對網路廣播之前﹐都會先傾聽一下有沒其它人在使用網路﹐如果聽起來很安靜﹐則它會發送廣播。但要是網路上仍然嘈嘈的呢﹖(這個情形就是bus形態最擔心的)﹐這時候工作站就需等待了。
假如節點A和節點B相隔得太遠的話﹐當他們傾聽的時候可能都還沒聽得到對方有話要說﹐就都同時把封包出去﹐這就是所謂的碰撞(collision)了。如果當一個碰撞發生了﹐整條網線都會充滿了噪音回響﹐如果第一個節點監測到有這樣的頻率回響﹐它就會發出一個更高頻的信號去告訴別的節點碰撞已經發生﹐這樣全部節點都不會再發送封包了。這時候﹐每一個節點都會隨機的等待一段時間再重新進行廣播﹐總共可以進行16次嘗試大家才會最終放棄。不過其情形也不會好到哪裡﹐因為在大家等待之後﹐彼此都有封包要發送﹐誰都想先發送自己的封包﹐如果節點越多﹐距離越長﹐發生碰撞的機會也就越高。
情形就象上課時您要發言﹐得先看看有沒有其它同學在發言﹐如果已經有人在說話了﹐那你就先等他/她講完再舉手。要是兩個人都同時舉手﹐老師就會宣佈重新再舉手﹐這時候大家可以在一秒鐘之內再舉手﹔要是還是一樣﹐那麼可以再於兩秒之內任何時段舉手﹔再來就4秒、8秒、16秒....的延續下去﹐要試過16次都還一樣﹐沒辦法了﹐大家都不要說好了。

在網路上﹐我們稱這樣的方法為 CSMA/CD (Carrier-Sensing Multiple Access with Collision Dectection)。要注意的是﹐所有這些處理過程都必須在Ethernet 網卡上面進行﹐也就是說﹐如果您要選用Ethernet形態﹐那麼你就必須全部使用Ethernet網卡。
Ethernet可以在bus, star 或者ring 等物理形態上面使用。10baseT就是使用star的物理形態﹐但邏輯上卻是bus形態來的﹐同樣也是Ethernet﹐使用的是IEEE802.3標準。



Token Ring
Token Ring網路在物理上也和100BaseT Ethernet一樣使用star形態﹐只不過代替hub的是MAU而已﹐一個MAU可以連接八台電腦﹐然後還可以連接到另一個MUA。一塊Token Ring網卡上面﹐其中有端會帶有一個D-shell類型的接頭﹐而另一端則有一個odd-looking IBM接頭。在Token Ring上面無需使用終端電阻﹐網線的一頭接到網卡﹐另一頭接在MUA就可以了。
我們還記得在Ethernet系統上面使用廣播形式傳送封包﹐然而在Token Ring裡面﹐每一個節點都只會得到其前面的一個節點送來的信息。Token Ring的靈魂所在是一個叫做 Token Packet的封包。為了避免碰撞發生﹐Token Ring可以確保每次只能有一個工作站可以發送資料﹐它們使用token packet(或曰token stick)來達到這一目的。只有獲得這個Token packet的接點才可以發送資料。
舉個例子﹐同學們在班上為了避免同時有兩個人發言﹐於是就使用一個令牌﹐由一個同學傳給下一個同學﹐然後最後的同學傳回給最前面的同學。拿到令牌的同學﹐看看如果令牌是空的﹐就把說話寫滿令牌上面﹐然後註明來源地址和目的地址﹐然後將令牌傳給下一位同學。接到令牌的同學﹐會檢查目的地址﹐如果不是給自己的﹐就傳給下一位﹐如果地址是給自己的﹐則抄一份保存﹐原來的令牌照樣傳遞下去。因為令牌是繞著圓圈的傳遞﹐所有始終會到自己手上的。當那位原先發送信息的同學收回令牌﹐看到來源地址是自己的﹐就把令牌擦乾淨﹐然後把令牌交給下一位同學﹐就算他還有話要說﹐也要這樣做。如果下一位同學沒有東西要寫﹐就簡單的把令牌交給下再一位則可﹔如果有東西要寫﹐就重複剛才的規則。
Token Ring上使用的是類似的方法﹐只是略有不同而已﹕當一個節點獲得Token Packet並完成了信息準備之後﹐它會傳給下一個節點﹐如果沒有人接下來﹐就再傳一次﹐如果第二次都沒有人要﹐則給整個網路發送一個solicit successor fram的常規請求﹐詢問“有誰想要這一個Token啊﹖”﹐如果有節點回應這個請求﹐它就把Token直接傳到該地址。
不過同是使用Ring形態的FDDI則略有不同﹐也拿剛才的例子說明﹕凡是拿到令牌的同學﹐先把要說的東西寫在紙條上面﹐也註明是誰寫給誰的﹐然後把紙條夾在令牌上傳給下一位﹔要是沒有話要說就把令牌直接傳給下一位即可。等收到令牌的時候﹐就看看信息是否給自己的﹐如果是就抄一份保存下來﹐如果同時還有信息要送呢﹐再按格式填寫紙條﹐也夾在令牌上面傳給下一位同學。等令牌在繞回來的時候﹐檢查上面的那些紙條﹐如果發現發信人是自己的話﹐就把紙條拿下來﹐然後撕掉就行了。

在網路上﹐我們稱這種方法做﹕Token Passing



IEEE802.3 vs. IEEE802.5
我們稱Ethernet的傳遞形式為廣播(broadcast)形式﹐Token Ring使用的則是指定(dedicated)形式﹔broadcast屬于probabilistic形式的協定﹐也就是不能夠保證工作站可以獲得接通網線的能力。Token Ring則屬于deterministic形式的協定﹐也就是使用一套規則來保證工作站有接通網線的能力。在IEEE定標準面﹐Ethernet屬于802.3標準﹐而Token Ring則屬于802.5標準:
特性類項 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(伺服器):

磁碟伺服器(Disk Server)
也就是在網路中一個提供中央儲存檔案和數據的地方﹐當其它client連上來之後﹐就如使用本地的硬碟一般。但當client讀寫資料寫的時候卻需要點技術了。
我們知道當電腦讀取本地硬碟的時候﹐會先到FAT (File Allocation Table)找到檔案的位置﹐然後硬碟將移動磁鐵去讀取該檔案。但在Disk Server上面的FAT可跟本地的FAT不一樣的﹐那麼當一個client向server要求讀取檔案的時候﹐server會將自己的FAT複製一份給client﹐然後cliant先將這個FAT複製件存儲在RAM裡面﹐而後每次要讀取檔案就先從這個複製件中尋找。但問題又來了﹐因為disk server是在網路中提供好幾個使用者的﹐要是您剛剛獲取了一份FAT複製件﹐然後別的使用者有在上面增加了檔案﹐那樣您獲得的FAT就過時了﹐而您又不知道其改變了﹐當您要回存資料的時候﹐因為FAT的改變﹐很可能會造成資料的流失。
為了解決這一問題﹐通常disk server會將硬碟分割成好幾個標籤(volume)﹐然後給不同的使用者以不同的volume﹐而另外設立一個唯讀的public空間給全部使用者共用。


檔案伺服器(File Server)
您已經了解到使用Disk Server存在的問題和複雜性了﹐在今天﹐file server已經變的最普遍不過了。一個file server會有自己的作業系統﹐就有如一個外殼般包圍著磁碟操作系統﹐然後作業系統會過濾掉從網路傳來的命令﹐然後翻譯成作業系統能夠懂得命令。
File server 和 disk server都很相似﹕都是提供一個中央的儲存空間給網路使用﹐它們最大的分別是file server會維護和使用著自己的FAT﹐而disk server只提供FAT的複製本。當client 要求檔案的時候﹐file server 會從硬碟中找到這個檔案﹐然後寄一份複製件給client使用。
其情形就像這樣﹕client 問 : “對不起﹐我要一份檔案。”disk server會回答﹕“別煩我﹐自己去FAT找啦﹗”﹔然而file server則會這樣回答﹕“沒問題﹐我找給你﹐請稍等。”

當您聽到有關於檔案伺服器的討論的時候﹐或許您還聽過指定指定檔案伺服器(Dedicated file server)和非指定檔案伺服器(non-dedicated file server)。它們又是什麼東東呢﹖前者是一個專門負責檔案管理的工作﹐除此之外別的什麼都不管﹐其終生目標就是提供檔案服務﹔而後者通常是一台工作站﹐只不過分擔著檔案服務功能﹐其記憶體也分一半給工作站事務﹐另一半則提供檔案服務。既然如此﹐為什麼不乾脆使用指定伺服器呢﹖這樣又快又安全~~~ 。哎呀~﹐以前的PC可不同現在這樣便宜哦﹐如果那時候您是老闆的是﹐就不是這麼想了。



程式伺服器(Application Server)
從字面上理解﹐當然是存放程式的伺服器啦。如果您有在自己電腦安裝程式的經驗就知道﹐程式必須要先等作業系統安裝好才能安裝﹐同時也得為它們安排空間存放。但如果有上百台電腦要安裝的話﹐不僅要重複著大量的工作﹐而也浪費很多空間(整體而言)。如果使用application server﹐我們只需在上面安裝一次主程式﹐然後在各client上面安裝體積少很多的client程式就可以了。有些DOS的程式﹐甚至連client程式都無需安裝呢﹐直接使用就可以了。無論如何﹐您得先確定您所使用的程式有網路功能﹐要不然您還是使用不到application server的好處。

Peer / Peer 網路
Peer/Peer 網路帶出的是和 Client/Server 完全不同的網路概念。與其在網路上建立中央控制的機器﹐取而代之的是﹐每台電腦都保存著自己的程式在本地硬碟上﹐它們也各自有著自己的週邊設備。
通過共享﹐每一台電腦都可以是工作站﹐同時也可以是一個伺服器﹐它們之間的地位都是平等的。在使用中﹐將它們集中在同一工作組就可以了﹐您可以為每一個共享的服務設立密碼保護﹐只有知道密碼才可以使用。

安裝Peer/Peer網路
我們今天使用的Windows95或98就已經具備了Peer/Peer網路的功能了﹕
  1. 您只要為每台電腦安裝好網路卡﹐並且網線也連接好(BNC的話﹐別忘了終端電阻﹔hub的話別忘了接通電源)。
  2. 然後在控制板裡面﹐找到網路這個圖標並打開它﹐然後在“組態”裡面按“新增... -> 服務 -> 新增... -> Microsoft -> File and printer sharing for Microsoft network”。
  3. 然後按“確定”﹐再到“識別資料”裡面﹐給您的電腦取一個有別其它的“電腦名稱”﹐但“工作群組”則要選擇一個相同的。
  4. 然後在“存取控制”裡面選用“共用級存取控制”﹐再來按“確定”則可。假如您的機器是按我在“電腦基礎”裡面教的方法來安裝的話﹐您無需使用Windows CD﹐等一會按“確定”讓機器重新啟動則可。
  5. 等重新啟動之後﹐你任意右選一個磁碟或資料夾﹐再選擇“資源分享”﹐繼續選擇“資源分享”﹐再設定“存取類型”和“密碼”之後﹐您會看到您剛才選的資料夾下面會多了一隻手﹐那就大工告成了。
  6. 然後您在其它機器重複這些步驟﹐您就可以在“網路上的芳鄰”看到彼此共享出來的資料了。

沒有任何一種網路可以說是對任何情形都是最好的。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軟體就會接管這個請求了。

然而﹐redirector在這個網路軟體集團裡面﹐也只是一個角色而已﹐要真正能夠拿回資料﹐我們還得需要另一位能士的配合﹕ Redirector只是工作在client上面﹐而在server那邊﹐還必須有一個檔案系統(File System)﹐或曰mounter﹐來接應redirector的請求。在網路世界中﹐有許多種這樣的file system﹐最出名的有 Novell的 NetWare File System、Unix網路的Network File System (NFS)、以及Microsoft 的New Technology File System (NTFS)。在client端的redirector必須要和在server上面的file system兼容(使用相同的協定)﹐否則client也只能望洋興嘆而已。

第三。終于來到這章的戲肉了﹗出場的就是通訊協定﹐也就是節點和節點之間在網路上搬運數據的方法。我之所以將這三個層次的中間部份留在現在才說﹐是因為它是最抽象的。您或許可以這樣想象﹕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能夠懂的格式﹐也就是它自己所使用的網路協定。您可以從下圖看到這個過程﹕

TCP/IP可以說是現行協定中用途最廣的協定之一﹐由于它嘗試在所有硬體上實現所有事情。不過﹐它也是最慢的傳輸協定之一﹐在某些情形之下﹐它的速度只有NetBEUI的七成。由於TCP/IP在設計上可供多種硬體部件使用﹐所以它是一個可路由協定。

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)
前面我們集中討論的就是其中的低層協定﹐也就是網路協定﹐這些功能是保障數據在網路中能夠迅速且準確的轉送。
實體層
在這層裡面您必須作出一些機械和電子方面的決定﹐也就是要定義出在終端和網絡之間要使用的設備﹐同時﹐採用何種佈線也要在這裡決定出來。


資料連接層
在這層指定了要採用的信息單元(message unit)是什麼﹐(通常在LAN上面的單元被稱為packet或frame)﹐以及它們的格式、和如何通過網絡。每一個packet都會被賦予一個地址碼和偵錯監測值(checksum)。有一個Binary synchronous communications協定﹐會判定出一個封包如果在丟失的情況下﹐要等待多久會被重新發送﹐這個協定也是在這層裡面定義。總體來說﹐這層的工作就是保證一個無錯誤的數據傳輸。


網路層
這層就好比是一個中間人界乎於網絡功能和使用者功能之間。它會定義出封包在網路中移動的路由和其處理過程﹐這層還決定了網路是如果進行管理功能的﹐比如﹐發送狀態信息給接點和規範封包的流動等。
一個有趣的事情是﹐網路層還能將底層協定(網路功能)對上層協定(使用者功能)躲起來﹐這樣在網路的使用者就可以使用不同種類的硬體了﹐這是非常好的事情﹐假如您用來建網的材料都不盡相同的話。

在開始的三層之上﹐還有四層是屬于使用者功能範圍的﹐不過它們也常常會被整合在一起。您要記住的一點是﹕無論程式設計者如何定義這些協定﹐(例如﹐把它們分為兩層或四層)﹐這四層在實際上都會被執行的。

傳輸層
在這層﹐將會設定節點地址的傳達﹐還有錯誤檢測和修正的方法。


會談層
這層定義了如何連接和掛斷連接﹐和在網路上面的數據如何交換。


表現層
在這層﹐定義了數據的語法(syntax)、變更、和格式。當應用程式的語法和格式﹐與封包的不同的時候﹐這層還將定義了如何翻譯這些不同。


應用層
這是最後一層了﹐它定義了應用程式是如何進入OSI模式進行傳送。它自己並不屬于應用程式﹐但它支持使用者的應用程式﹐如﹕檔案傳送、密碼、和網路工具等。
以上所列舉的協定層並非是他們的詳細定義﹐只是一個框架而已。您可以把OSI的協定模式當成是人體的骨架﹐當您套上這個框架之後﹐您就差不多可以描繪出大致形狀了﹐雖然外表會有所不同﹐但骨子裡還是一樣的。
這裡還有一個tips﹕如果您忘記了這些協定層的排列順序﹐您可以參照這句話﹕Please Do Not Take Sales Person's Advice。



路作業系統

當您在計劃網路的過程中﹐使用什麼樣的網路作業系統(NOS, Network Operating System)會是一個非常關鍵的考慮﹐其直接影響到您連到其它網路的能力﹐和節點間如何交流﹐還有您可以使用哪些應用程式﹐以及數據的可攜性﹐等等因素。我們將會在這章裡面看看一些比較流行的NOS和其功能﹐這將有助於您選擇一個適合自己的NOS。

Client / Server 系統

如果您要集中控制和管理您的網路和資源的話﹐您就應該找Client/Server的網路作業系統了﹐比如LAN Manager、LAN Server、Windows NT、NetWare、和BanyanVINES等﹐當然還有現在熾手可熱的Linux啦。

LAN Manager
OS/2當初是IBM和Microsoft共同開發的﹐不過在80年代中期﹐IBM和Microsoft翻臉的時候﹐IBM卻保留了OS/2下來。不過其後他們都有繼續生產各自的系統﹐Microsoft發展的是LAN Manager﹐而IBM的則是LAN Server。雖然IBM的OS/2才算是正宗的版本﹐但LAN Manager 和其它的OS/2基礎的網路系統在功能上都極其相似﹐所以我們這裡就以LAN Manager為例子就好了。
LAN Manager系統主要分為兩個部份﹕redirector和server。正如我們在前面討論過了﹐redirector控制這網路資料的流向﹐決定這資料從哪裡送到哪裡。redirector還有一個功能﹐就是配置工作站所連著的資源﹐讓其它工作站可以找到這些資源。而server部份則處理網路排程、安全、列印服務、和檔案管理等事務﹐它還包括各種不同的網路管理工具﹐可以幫助您找到諸如不良資訊、安裝漏洞、和網路瓶頸等信息。
LAN Manager還可以將幾個不同的server當成一個server﹐那樣工作站就只需要一個密碼就可以連接到網路中的不同server了。它還有遠端管理功能﹐您可以從任何工作站使用supervisor身份等錄網路並提取網路管理工具。最後﹐LAN Manager還有網路稽查功能﹐讓網路管理員能夠追查有多少使用者連到什麼設備去了﹐也可以知道多少人在使用哪些檔案和應用程式等。您也可以知道使用者有否連上網路和什麼時候連上來的﹐假如您發現某君正在使用一個檔案﹐而他不應該這時候還在網路上面的﹐如果不是別人盜用了他的戶口﹐那麼他去使用這個檔案就好可能有問題了。

在網路安全方面(這是任何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服務﹐則是見人見智了﹐因為它有時候會令到機器當機﹗



Windows NT
在client/server網路系統裡面﹐Mircrosoft的Windows NT (New Technology) 可以說是冒起最快新貴﹐其市場佔用率憑Microsoft的強勢推銷在過去數年間有著很大的提升。(其後我會另開篇幅專門討論NT的各種功能和設定)。NT可以說是Mircrosoft最頂尖的作業系統了﹐而且Microsoft也不遺餘力的促使其下的Windows系統朝著和NT整合的方向發展﹐即將推出的Windows2000﹐可以說是已經將Widnows系統和NT系統合併在同一個系列了。
由於NT提供的是一個圖像環境來管理網路﹐所以您的NT伺服器必需具備VGA或更好的螢幕。在client/server系統家族中﹐NT可以說是少數使用非指定(non-didicated)伺服器的系統之一。連上NT網路也是非常簡單的事情﹐如果您已經安裝有Windows NT、Windows 95/98、或Windows for Workgroup等桌上系統﹐這些工作站在連上網路的時候自動的就可以看到NT伺服器﹐(當然要提供合法的登錄和密碼啦)。如果您跑的是DOS﹐那麼您就要安裝NT所提供的驅動程式了。
NT還提供IPX傳輸協定﹐所以也很容易和Novell伺服器或工作站溝通。另外NT還支持遠端連接服務(RAS, Remote Access Services)﹐可以讓人們在遠端通過撥接連上NT伺服器去﹐RAS可以同時支援高達256個連接。(後面我們還會再討論遠端連接服務的)。


Novell NetWare
NetWare可以說是Novell公司全副精力的傑作﹐從其“硬撼式”的市場策略到其CNE(Certified NetWare Engineer)體系(使用者在通過一系列的考試可以獲得Novell認證的工程師資格)﹐Novell已經成功地展現人前﹐並曾一度執局域網路系統(LAN)的牛耳﹐其既有的陣地實在不容忽視﹐因而許多其它的網路系統都會設計和Novell網路連接的功能。
Novell努力試圖適合任何人們去做任何事情﹕如果您跑Apple網路﹐Novell可以和AppleTalk File Protocol (AFP)一起工作﹔如果您有LAN Manager或 3Com網路﹐NetWare可以連上來讓您工作﹔從物理的星形態到Token Ring到邏輯Bus﹐總之您能夠安排得出的網路形態﹐NetWare都可以在上面跑﹔不想用client/server而只喜歡peer/peer網路麼﹖Novell也有提供peer/peer版本的Personal NetWare﹗一言敝之﹐Novell試圖令您無藉口不選擇NetWare來作為您的網路系統。

NetWare對您的磁碟作業系統來說是一個殼程式(shell﹐就如一個外殼一個把DOS包在其中﹐其名因此而起)﹐當有指令到達﹐不管是來自本機的還是網路的﹐都必需經過shell。和redirector的功能一樣﹐shell會知道一個功能是本機的還是網路的﹐如果是本地的﹐他讓本機動作業系統來接管﹔但如果是網路的﹐NetWare就接下來並自己和伺服器的BIOS對講。
列如﹐有一個工作站程式要儲存一份檔案﹐它會告訴作業系統﹐然後再到BIOS﹐再到磁碟將資料寫上。當一個在Novell網路的工作站告訴作業系統它要儲存資料﹐這時候NetWare就會插話來問程式需要存到哪裡去。程式當然不知道網絡磁碟和本地磁碟的分別啦﹐它或許隨便回答﹕“H:磁碟吧。”而這個磁碟正是伺服器磁碟在工作站上面的對應邏輯磁碟名稱﹐這樣NetWare就會接管這個操作﹐然後發出指令到伺服器的檔案系統將資料寫入。

NetWare還有幾路板斧是非常了得的﹐籍此可以提高獲取檔案的速度﹐下面我們逐一介紹一下﹕
Directory Hashing﹐NetWare用來提高獲取檔案的一個方法是保持一份目錄樹和Novell版本的FAT的複印本在記憶體上面﹐所以它找到一份檔案的速度比直接到硬碟尋找的速度會多了。到RAM和到硬碟找目錄樹的速度相差可大了﹕如果去硬碟找﹐需要的時間大概為幾千份之一秒﹔而到RAM找則只需要幾百萬份之一秒。而且﹐NetWare同時還對保存在記憶上面的目錄樹按規則排列好﹐令到它更容易瞄準檔案的位置。
Disk Caching﹐這個處理會將一些最常用的資料在RAM上面保留一個copy﹐和上一個方法一樣﹐到RAM獲取資料的速度比到硬碟上面找快多了。這樣當有請求獲取這些常用資料的時候﹐其速度就可以提高好幾百倍了。
Elevator-seeking﹐不知道您還記得在“電腦基礎”裡面講述CPU Cache之 Write Back和Write Through模式麼﹖NetWare的這個方法跟Write Back的方法簡直如出一徹﹕當伺服器同時接到多個檔案請求的時候﹐它並不是按請求先後順序來讀取檔案﹐而是按照磁碟磁頭移動順序來讀取檔案。
對DOS的使用者來說﹐NetWare還有一個很有用的功能叫做mapping﹐可以簡化工作站和檔案伺服器的連接。Novell使用一系列的map跟檔案伺服器上的不同目錄鏈接(link)起來﹐所以在工作站上面﹐這些目錄就被看成好些邏輯磁碟一樣了。

NetWare在系統安全上面也是非常考究的﹐您可以分別從下面的項目來了解﹕

  • Login ID
  • Trustee rights
  • Directory rights
  • File attributes
使用者每次連上網路都必需提供使用者名稱和密碼﹐這將決定使用者在網路上獲得的權力。如果密碼只對某些檔案或目錄具備讀取的權力﹐那麼他就不能夠修改任何的檔案了﹔掉過來﹐如果密碼具備最高(full)權力﹐那麼使用者就可以執行任何動作了。作為系統管理員﹐在設定使用者權限的時候都要非常小心。
Novell網路將每位使用者都看成是一個trustee﹐可以指定其對資源擁有以下不同的權限﹕
  • 讀取一份開啟的檔案
  • 寫入一份開啟的檔案
  • 開啟現行檔案
  • 建立新檔案
  • 刪除現行檔案
  • 為目錄/子目錄設定其它trustee的權限
  • 修改檔案屬性
如果管理員喜歡的話﹐可以針對一個磁碟裡面的特定目錄對某一使用者設定不同的權限﹐例如﹐可以讓其對整個磁碟擁有全部權限﹐但對某些特定目錄或檔案卻只能具備讀取的權力。雖然NetWare在預設的情況下﹐trustee對子目錄會具備與父目錄相同的權限﹐但還是可以對網路上每個目錄和子目錄設立不同的權限的。
這還不止﹐在最後一道防線上﹐網路管理員還可以針對每個檔案建立屬性﹐來限制如何和什麼時候可供使用者使用。您可以參考下面所列舉的檔案屬性﹕
共享與非共享﹐如果一個檔案是共享的﹐當一個使用者在使用它的時候﹐其它使用者也可以使用﹔如果為非共享﹐則在同一時間內不能超過一個使用者使用(甚至連讀取也不可能)。
讀/寫和唯讀您或許已經對這兩個屬性非常熟悉了﹕如果一個檔案是唯讀的﹐任何使用者都可以讀取它和進行修改﹐但所做的修改卻不會影響到源檔案﹐而只能夠以另外的檔案名稱儲存﹐(這樣的限制對於一些由一人領導的分組項目非常便利﹐這樣領導者對源檔案的修改也就心中有數了)﹔如果使用者對檔案具備讀和寫的能力﹐則可以將修改和回存到原來的檔案﹐而原來的檔案除非有備份﹐否則就會從此灰飛煙滅了。
您可以在NetWare3.x的文字模式使用Syscon﹐或在NetWare4.x的圖形界面使用NETADMIN來進行權限設定﹐Netware帶有一套完整的工具幫您設定諸如目錄、使用者、trustee、檔案屬性等系統安全項目。


Linux
在本世紀末的網路操作系統這一田野上﹐還奔跑著一匹驃駻的黑馬﹕這﹐就是Linux了。對於哪些受Microsoft強力促銷下漸感窒息的人士﹐Linux的出現﹐無異是一股清流。畢竟在IBM停止發展OS/2系統之後﹐還能有一套系統抗衡Mircrosoft的霸業﹐的確是令人鼓舞的事情。

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網絡操作系統﹕

LANtastic
這是一個很早期的P/P網絡系統﹐它專門就是設計給那些對集中管理模式要求不高的小公司。不過它也具有諸如LAN Cache(也就是將資料存放在RAM來提高儲存速度)和印表機共享等功能。網絡的安全考慮在LANtastic上面是非常原始的﹐主要針對每一獨立的檔案和目錄而已。
LANtastic使用的也是Ethernet環境﹐屬于IEEE802的標準。它也有Windows版本﹐可以讓您在Windows環境中分享資源和接收e-mail等。
LANtastic自帶有一個叫做Network Eye的網絡管理工具﹐可以讓使用者看到還有誰在網絡上﹐及分享著什麼資源。您還可以“轉播”其它使用者的螢幕到自己的機器上﹐這樣您還可以看到他們在做些什麼東東呢﹗LANtastic在您的工作站上面總共可以支持到32個這樣的模擬屏幕。


MS Windows
在此一家族中﹐從Windows For Workgroups到Windows95和Windows98這些系統﹐都自帶有P/P的網絡功能了﹐(在上面討論P/P網絡的時候就介紹過如何安裝Win95的P/P網絡)。

既然同是Mircosoft的產品﹐他們當然支持NDIS這個網卡驅動界面了﹐不過他們同時對ODI也是支持的﹐這樣令到這些系統受到的硬體支援也特別多﹐而且有些網絡卡廠商只提供MS Windows的驅動程式而已。
配合著它們的圖形界面﹐在這些平臺上面分享磁碟、檔案、打印機等動作﹐很輕鬆的就可以完成。假如您使用Windows95/98系統來架設一個50台機器或更小的P/P網絡﹐相信並不需要很大的力氣﹕只要將網卡和連線設定好﹐然後安裝相同的通訊協定(比如NetBEUI)﹐再逐一設定好資源分享﹐這樣就大功告成了﹗



Apple Talk
說到蘋果﹐當然除了現代諺語“每天一個蘋果﹐醫生遠離我”所指的水果之外﹐我們還不能忘記這個和IMB兼容電腦分庭抗禮的電腦公司啦﹐也不能忘記這個優越的圖形系統先驅對今天電腦界面的影響。事實上﹐很多人根本就把其下的麥金塔(Mac)系統稱做蘋果機器﹐當然﹐領導今日電腦之透明時尚的iMac﹐也令不少發燒友趨之若騖。

當初蘋果公司開發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系統﹐主要是基於集中管理的考慮。


指定的網路管理員
如果您有專門的網路管理人員(除了網路管理﹐其它事情都不理)﹐您或許已經使用的是client/server系統了﹐因為這些系統都比較複雜和需時設定。而Peer/Peer系統﹐通常都是各自的使用者在管理自己的機器﹐他們不需要很專業的網路管理知識﹐但卻具備了一般的電腦使用能力﹐而且網路管理並不是他們的主要職責。


集中式網路控制
如果您對您的網路系統安全比較注重﹐且試圖使用集中管理模式﹐那麼您也應該考慮Client/Server系統。不過﹐好多小公司使用網路僅是共享檔案和週邊設備﹐其實Peer/Peer也足夠了。然而員工數目越多﹐就越應該考慮C/S系統。


員工培訓
假如您要安裝一個只有25台機器的Peer/Peer網路﹐可能一個週末就可以搞定﹐而且使用者也無需特別的培訓。但在相同大小Client/Server環境中﹐需要兩個星期去完成其設定一點也不出奇(根據要求而定)﹐然後使用者還得要學習如何使用該種網路和語法技巧等知識。


成本
如果在50台機器的數目以下﹐Peer/Peer網路會比較便宜﹐但如果超過100台的話﹐在某些情況下﹐Peer/Peer可能比Client/Server更加昂貴﹐比如License等因素。


網路軟體的兼容性
通常一些網路備份程式和工作排程程式﹐都只能在一些特定的網路中工作﹐當您選擇這些groupware的時候﹐就得留意區分它們究竟是在哪些網路上面使用。


我們可以從下面類別中看看不同的網路作業系統的比較﹕
類項/系統 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之外 --- Internetworking

基本上我們前面所接觸的都是在LAN的範圍﹐但時至今日的網絡﹐尤其是internet的蓬勃發展﹐我想也很少網絡會獨立在局域之內吧﹐所以了解一些網路和網路之間的通訊是勢在必行的了。

在某些定義來看﹐一個LAN就好像一台放大比例的電腦﹐只不過更加複雜而已﹔那麼在LAN和LAN之間組建網路﹐我們稱之為internetworking﹐比如﹕

等等﹐可以說internetworking所帶來的便利遠超過我們能夠想象的。

Internetworking設備

增益器(Repeater)
我們已經在前面講述過repeater的功能了﹕它是用來放大傳輸信號的。當我們的網路線路過長的時候﹐信號會因為損耗而減弱甚至丟失﹐這樣的話﹐repeator就可以在中間幫我們將信號接收下來﹐然後把它放大重新繼續傳送以達到我們預定的距離。準確來講﹐repeater不能算是internetworking的設備﹐僅可以算是網路的延伸設備﹐基本上它做到的只是重複它所收到的信號而已。


橋接器(Bridge)
它是一個硬體或軟體用來連接不同的網路區段(segment)的設備﹐(一個segment就是一個無需借助internetworking設備連接的電腦群體)。例如﹐您可以用一個bridge來連接兩個Ethernet segment、或連接一個Token Ring segment到一個Ethernet segment、或連接一個Mac segment到一個PC segment。只要網路間使用相同的上層協定(如IPX或TCP/IP)﹐bridge就可以成功的將任何網路連接到其它網路﹐它們之間的溝通就無需理會對方使用的是何種機器(網路硬體)了。

一個bridge的資料傳輸主要有三個步驟﹕

  1. Discovery﹐就是bridge的任意一端告訴bridge有資料需要傳送到另一端
  2. Filtering﹐接著bridbe過濾(filter)資料並將協定翻譯給目的端
  3. Forwarding﹐然後bridge將資料傳送(forward)給目的端的正確地址
其實bridge是很簡單的﹐就像一座橋架於不同的網路之間﹐您可以將它想象成兩個國家之間的邊境橋樑﹐而兩國都使用著自己各自的語言﹕一邊說Token語﹔另一邊說Ether語。由於兩國過從甚密﹐然語言又互不相通﹐所以他們就聘請了一個傳譯員坐在橋中間﹐再另外聘兩個跑腿各站兩邊。當說Token語的跑腿來告訴傳譯員他們有信息傳到另一邊﹐傳譯員首先將地址翻譯成Ether語﹐再將信息重新裝進Ether國的信封﹐然後叫說Ether語的跑腿將信送到該地址去。傳譯員一點也不在乎信是從哪邊過來的﹐他只關心的是地址準確就行。
為什麼我們說﹐使用橋的時候網路之間要使用相同的上層協定呢﹖您可以將這些上層協定看成是語言規則。無論是說Token語還是說Ether語﹐他們都使用相同的方法﹕用口來說﹗假如Token國人用畫畫來溝通﹔而Ether國人卻用跳舞來溝通﹐(也就是說他們使用不同的上層協定)﹐那麼﹐這個傳譯員也只有乾瞪眼的份兒了。
另外﹐bridge除了是一個傳譯員之外﹐它還可以充當交通警察。當我們發現網路過于繁忙的時候﹐那麼我們就可以將網路分成兩個或多個segment﹐而bridge就可以幫助網路更好的管理交通和解決瓶頸問題了。


路由器(Router)
和bridge差不多﹐router也是一個用來將資料從一個網路節點傳送到其它網路的硬體或軟體設備﹐並能把資料從出發地使用的協定翻譯成目的地使用的協定。
在使用bridge的時候﹐它的傳譯員會要求所有信息先得經他才能傳出去﹐就算是同一國度裡面的人民相互分享資料﹐也必需先送給傳譯員而確定他無需進行翻譯傳遞。這方面﹐router比bridge聰明些﹐也不像bridge那樣勞碌。在router上面的傳譯員﹐會先問跑腿﹕“這資料要送哪裡去的啊﹖”如果資料是傳遞到相同的國度裡去﹐router就根本無需理會﹐而讓資料按其正常的方法傳遞﹐就如根本沒有router存在一樣。只有那些需要翻譯的資料﹐router才會理會。簡單來說﹐bridge會對所有信息進行檢查﹐看看是否要翻譯傳遞﹐而router僅對那些需要翻譯的信息進行處理。

和bridge不同的是﹕bridge需要所有的segment使用相同的傳輸協定(transport protocol)﹔而router則要求他們使用相同的路由協定(routing protocol)﹐通常是router自己使用的特定協定。還要一種叫做Brouter(我也不知道如何翻譯好)的設備﹐可以應用於不同的傳輸協定上面﹐它揉合了bidge和router的優點所在﹕既可以使用不同的上層協定﹐也可以直接將數據以最快的路徑傳遞。當然﹐它的問題是比較難昂貴﹐而且安裝也是件非常頭疼的事情﹕它需要對每一不同的網路進行細緻的調校。如果您有一個比較複雜的具有多種平臺的大型網路環境﹐使用brouter通常可以獲得最佳的效能﹐盡管安裝比較困難﹐但一旦設好了﹐自是受益非淺。



網關(Gateway)
Gateway可以說是internerworking的最後設備了﹐它通常是一些硬卡跑著一些軟體﹐專門是設計給兩個完成不同的網路結構(比如PC網路和SNA Mainframe)之間進行溝通的。如若bridge和router使用的傳譯員僅能夠翻譯語言﹐gateway這個更高級的翻譯卻能完全的將各自不同的交流模式進行翻譯﹐並能讓對方可以理解﹐不管他們使用的是畫畫還是跳舞。

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呢﹖下面有兩個選擇﹕

Half-bridge也有被稱做remote bridge﹐通常是配對的用來連接兩個區段﹐而各自只負責一半處理。例如﹐有一個封包要由區段甲的節點A送到區段乙的節點B﹐先會到達區段甲的half-bridge﹐這個half-bridge只會記著自己所連接的區段之內的地址﹐如果地址不是在此區段﹐那麼就將封包傳給另外一個half-bridge﹔當另外的half-bridge收到封包之後﹐看看地址是否屬于它所屬的區段﹐如果不是的話﹐這個封包就會被忽略﹐也不會被重發。這樣﹐網路的交通就會被限制在最低的情況之下了。

Bridge的標準

由於bridge只有很低的處理能力﹐如果網路交通太忙的話﹐有可能出現封包丟失的情形。為了解決這樣的問題﹐一些bridge的標準相繼的被開發出來﹐通常有兩個標準是比較廣泛被接受的﹐它們是﹕spanning tree和source-route bridging標準。而且﹐這些標準還可以解決looping和flooding的問題呢﹗不錯哦~~

Spanning Tree Standard
此標準裡面﹐網路會有一個root bridge﹐然後其下還有一些child bridge﹐這個root bridge會決定目的封包要傳遞給哪一個child bridge。由於上級bridge只會將封包傳遞給包含該目的地址的下級bridge﹐因而也就避免了looping的可能性了。

Spanning Tree是由Digital Equipment Corporation (DEC)開發的﹐是專門給802.3 (邏輯bus或Ethernet)和802.4(token bus)網路使用的。給802.5的Token Ring使用的是下個要說的標準。


Source-route Bridging Standard
在Source-rout Bridging標準裡面﹐發送端節點要先判定哪個傳送路徑是最佳的﹐再將封包傳給bridge﹐然後再傳給目的地的bridge。這時候bridge可以當成網關(gateway)一樣。它們的連接如下圖﹕
當一個bridge判定了兩個節點之間的最佳路徑之後﹐就會永遠地使用此一路徑﹐就算以後還有更佳路徑的出現也不會被考慮的了。如果您想您的bridge能夠適應不同的網路交通層次﹐並能報告出進行橋接過程的錯誤信息﹐那麼您需要的並非bridge﹐而是router了。

Router的使用

Router有那些功能呢﹖先讓我們先將它和bridge做一個透視比較﹕

為了更好的了解router的功能﹐您最好先要明白router是如何工作的﹐以及它和bridge的分別。它們主要的分別是它們如何看待所連接上來的區段﹕當使用bridge連接兩個網路的時候﹐它們僅屬于同一網路之內的兩個區段﹔如果使用router來連接兩個網路﹐將會有兩個router分別連接各自獨立的網路。
當網路1的節點A要傳送一個封包網路6的節點B﹐節點A會先將地址寫給連接到網路1的router 1﹐而不是節點B。當router 1接到封包的時候﹐他就得要判定哪條路徑是最佳的將封包傳遞給網路6。通常最佳的路由路徑對會在好幾個不同的router之間跳來跳去的﹐但無論如何﹐在router將送出封包之前﹐都會根據當前情況而選擇最佳的路徑﹐而不像bridge那樣﹕一旦選定了路徑﹐就永遠固定下來。Router具備這種搜索路徑的能力是非常有用的﹐然而是基於它能否看到其它router的能力而定。讓我們看看下圖是怎麼工作的﹕
由於Router 1分別連接到Router 2、3、4﹐它會知道它們有多忙以及它們和哪些網路連接著﹐這樣﹐當Router 1有封包要傳遞到其它網路的時候﹐它就會看看哪條路徑在當時是最快的。由於router 2和4都比較忙﹐所以router 1也就選取了沒那麼忙的router 3為路徑了。

每次當封包從一個router傳到另一個router的過程﹐我們稱之為“hop”,為了找到一條最少hop數的路徑﹐封包的路徑通常會在中游就會被改變而補償網路交通的變化。例如﹐在網路1的節點A有一個封包要送到網路4的節點B﹐必需經過router1、2、3和4﹐您可以從下圖看到初始路徑的選擇﹕

然而﹐當封包從Router 1移到Router 2的時候﹐Router 2或許會說﹕“嗯~~ 我可以將這個封包傳給Router 3﹐不過~~ Router 3現在看起來挺忙的﹐我想封包如果經由Router 5﹐然後到6﹐再到7﹐再到4或許比較快些咧﹐因為5、6、7好像比較清閑。”這條路徑就會改變成下圖那樣了﹕

雖然這路徑要經的hop數目更多﹐但它依然是比經由繁忙的router 3 要快。

當封包在進行路由的時候﹐有兩組地址是router必需追蹤的﹕封包的來源和目的地址﹐以及datalink的來源和目的地址。網路來源地址和目的地址通常是這樣的一個組合﹕網路號碼和節點地址﹐這兩個地址在路由的任何過程中都不會改變。但datalink地址(例如﹕封包從哪台router來和要送到哪個router去)﹐記錄著即刻需要從一個router傳到下一個router的傳遞信息﹐而最終抵達目的地。您可以從下圖看到這過程是如何工作的﹕

正如您所見到的﹐router和router之間必需相互認識才能讓路由工作正常﹐更重要的是﹐對使用者而言﹐所有工作站都必須知道它們直接連到哪個(些)router去。每次當一個router加入到網路中的時候﹐它都會向WAN上面的其它router廣告自己的地址和其所連接的網路﹕

當其它router接收到這樣的廣播信息之後﹐就會將資料加入本身的路由表(routing table)去﹐如果越多router加入﹐那麼路由表也就越大。至於路由表的格式則視乎所使用的路由協定而定﹐這些協定都會規定出諸如﹕如何產生路由表、如何對建構的表格進行追蹤、要保存什麼樣的資料、以及每個router如何和別的router進行溝通等細節。其中有一個比較簡單的路由協定叫做 Routing Information Protocol (RIP)。

當您開啟一個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。

Tunneling
這是最常用﹐而且也是最少處理器耗費的方法。使用tunneling﹐gateway會先使用第一個網路的格式傳送封包﹐並將之包裹在雙方都容易理解的格式﹐然後在另外一個網路中﹐使用另一種格式進行傳送。概念上﹐tunneling和郵局系統差不多﹕如果您使用公司內部便條傳一個memo給同辦公室的同事﹐只要填上發信人和收信人﹐然後交由秘書就可以﹔但如果要經過郵局寄信給分公司的某經理的話﹐則不能使用這樣的格式了﹐因為郵局不知道如何處置這便條才好﹐所以您必須將便條裝進郵局標準信封(也就是所謂的雙方都容易理解的格式)裡面﹐然後郵局將信件傳到(路由)分公司經理﹐然後他把郵局信封(路由信封)撕掉﹐就可以得到您的便條了﹔假如便條是用英文寫的﹐而那經理卻只識中文﹐那麼就要找秘書給翻譯(數據轉換)了。
比如說﹐我有一個Novell IPX封包要從我的PC送給在AppleTalk網路上面的Mac﹐而Netware和AppleTalk都可以理解TCP/IP﹐這樣﹐我就可以進行資料傳輸了﹕PC將封包裝進一個TCP/IP“信封”裡面﹐然後將封包發送出去﹐當抵達Mac之後﹐將TCP/IP信封撕掉而得到真正的封包﹐但此時Mac依然是讀不懂封包內容的﹐它還的做些數據轉換工作才能看的懂PC的數據。不過﹐數據轉換卻不是gateway的問題哦﹐一旦數據從PC網路抵達Mac網路﹐gatewate的任務就大功高成了。如果您記不起前面討論TCP/IP時候的圖示﹐現在也可以重溫一下﹕


Terminal Emulation
另一種gateway方法是使用terminal emulation。Mainframe原本在設計上並不是和PC溝通的﹐它們是使用dumb terminal(笨終端)進行通訊的﹐這樣﹐當一台PC要和mainframe通訊的時候﹐它在轉換過程中就得將自己當成終端才行。通常有兩種方法可以進行終端模擬﹕終端模擬卡終端模擬軟體﹐同時﹐也有兩個途徑來成功地執行終端模擬﹕

PC Emulation Card﹐或稱為gateway card﹐您可以將它插進每一台需要連接mainframe的PC﹐不過這通常都很費勁才能將之調整正確﹐因為這比較容易引起資源衝突或是系統不穩定等問題。您可以從下圖看到這樣的配置﹕

Gateway Server

您也可以專門指定一台PC為工作站處理所有的模擬工作﹐這樣的PC就成為gateway server了﹐模擬卡只需安裝在這台機器之上就可以﹕
這樣所有工作站都使用模擬軟體連接到gateway server﹐再通過模擬卡和mainframe溝通﹐不過通常終端模擬都會有下面的不利因素﹕ 為了繞過這些問題﹐您或許可以考慮使用gateway server﹐不過您依然還是會碰到這些問題的﹐只不過將問題集中在一台機器而不是在所有機器而已﹐而且哪些使用軟體的工作站還依然可能會碰到軟體上面的麻煩。

至此為止﹐相信您也已經有一定的概念去如何使用各種不同的設備將您的LAN連到WAN上面了吧。如果您管理的是一個小辦公室﹐那您很有可能是邀請外面的商家幫您連接您的LAN﹐然而﹐當您的網路成長的時候﹐對各種WAN設備的需求也會顯得越來越重要了。



信 (Telecommunication)

在今天﹐越來越多辦公室工作都在辦公室之外來做﹐許多人以為電信(Telecommunication)都只會發生在那些完全在家裡辦公的人士﹐但這只是使用電信的其中一種情形而已﹐但凡需要使用電話技術去連接中央資源的人們﹐都可以說是電信的使用者。比如某些“neighborhood work center”就提供了一個工作場所給好些不同公司的僱員﹐讓他們無需真正去到辦公室幹活﹐當然﹐哪些流動工作者﹐通常都得在路上工作﹐也是使用電信的最佳例子。

對公司而言﹐電信的優點主要有這些﹕

對僱員而言﹐電信可以為他們帶來這些便利﹕

當然﹐電信也有其自身的確定存在的﹐也不是對所有人都適合﹐主要是因為過于零散和缺少有效的監督和輔助﹐而且也有技術上面的問題。電信的問題可以來源於﹕

人為因素﹕

選擇一位合適的符號電信條件的應徵者是最佳的解決之道﹐您要挑的是一個管理性和自覺性比較強﹐且有良好的效能評估能力的人選﹐而非那些效率低下﹐且要不斷督促﹐踢一踢才動一動的懶木頭。另外﹐如果您一早就和他們約法三章﹐並做出有效的安排﹐這對雙方都比較容易地過渡。

設備因素﹕

許多電信工作都和電腦有關﹐這樣對那些大多數只有一台電腦的電信人來說﹐將會是個問題﹕如果在辦公室裡面﹐假如工作站壞掉了﹐您還可以到其它的機器繼續工作﹐然後等機器修理好﹔但在家的話就得停工了﹐在電腦修好之前﹐只能乾等。另外﹐一些電信問題﹐諸如modem壞掉等狀況﹐也會打斷和辦公室的連線﹐對這些技術問題﹐您也無可耐何﹐只能儘量避免而已﹕盡可能使用比較好的﹐穩定的硬體和軟體就是了。

遠端控制 Vs 遠端連接

一旦您有僱員決定使用電信連接﹐您就要在兩種電信手段之間做出決定﹕遠端控制(Remote Control)﹐和遠端連接(Remote Access)。兩者其實都使用相同的設備﹕一個modem、一條電話線、一台電腦﹔內裡不同之處在於和辦公室的電信連接方法﹐而這則取決於進行何種的電信作業和使用什麼的軟體去做。

Remote Control
在使用遠端控制的時候﹐使用者實際上是在家裡通過modem控制和使用一台網絡上面的電腦。這需要在辦公室的網絡上面設置一台host電腦﹐然後將家裡的電腦設置為remote電腦。如果您玩過pcAnywhere之類的軟體﹐相信對此並不陌生。遠端電腦實際上是作為遠端使用者的“前端”﹐讓他/她可以用鍵盤輸入數據和從熒幕上看到結果﹐在遠端電腦和辦公室之間傳輸的僅是輸入和輸出而已﹐所有運算工作都在host機器上完成﹕包括應用程式、處理器運算等等﹔遠端電腦基本上可以不需安裝應用程式﹐使用的其實是host上面的。
簡單來說﹕遠端控制﹐好比是將host電腦的熒幕線和鍵盤線延長到remote端那樣。

遠端控制對那些需要大量數據的文字模式程式非常好用﹐但如果使用圖形界面的程式﹐諸如windows和windows程式﹐則會緩慢得多。為了解決這個問題﹐有些遠端控制程式只傳送熒幕畫面變更的部份﹐從而減少數據的交通。
除了在使用windwos的時候比較慢之外﹐遠端控制也有其一些缺點﹕

  • 您必須要有超過一台的電腦參與電信過程﹕一台在辦公室的host機器﹐和一台在家的remote機器。
  • 其安裝也需要額外的佈線安排、電源、冷卻、和空間。
  • 如果host機器當掉了﹐遠端使用者並不能將之重新啟動。
  • 當工作站做為host工作的時候﹐其它使用者就不能使用它了。
  • 也有安全上面的問題。取決于軟體的功能﹐很有可能是當遠端使用者連接之後﹐其它人會做到host前面而使用它。現在大多數的遠端控制軟體﹐都會要求遠端使用者在連接成功之後還要提供使用者和密碼來登錄﹐您要確定您的遠端程式包括有此功能。


Remote Access
遠端連接﹐(也有人稱之為remote nodes)﹐是將遠端的電腦當成是網路其中的一個節點﹐而不是另一台PC的控制器。這時候遠端機器必須進行所有的運算處理﹐所有的程式也安裝在本地的硬碟上面。使用遠端連接需要在兩端的機器上面安裝遠端連接軟體﹐而實際上﹐遠端機器也是辦公室網路中的一員﹐只不過不是通過網線而是電話線連接到網路上面而已。使用者先要撥號連接到遠端連接伺服器(可以是和檔案伺服器同一台機器﹐也可以專門指定一台)﹐然後再登錄上網路使用網路資源﹐一如在辦公室裡面一樣(當然除了速度之外)﹐另外﹐安全係數也因軟體而異。

當使用者獲取檔案之後﹐一切工作都只在遠端電腦進行﹐只有當回存或獲取新檔案才需要連接檔案伺服器﹐因而﹐如果您跑的是一些widows圖形界面程式的話﹐遠端連接對比遠端控制來說應該是個較佳的選擇。不過﹐遠端連接也需要跟多的時間去獲取檔案﹐還記得在電腦基礎裡面講述過電腦是如何工作的麼﹖“記憶體﹗”﹐使用遠端連接的機器必須要先將檔案整份載入後才能工作﹐如果檔案比較大的話﹐那麼下載時間也就比較長了﹐而不像遠端控制那樣只等待螢幕回應了。



哪一個比較好﹖
當您真的要在遠端控制和遠端連接之間做取舍的時候﹐有幾點您是必須要考慮的﹕
  • 使用者設備如何﹖他們要使用什麼什麼樣的程式來工作﹖
  • 機器的硬體兼容性如何﹖記憶體容量多大﹖
  • 兩種方法究竟要如何在您的網路中工作﹖
與其說﹕您在選擇遠端控制還是遠端連接﹐到不如說﹕您要選擇下載屏幕(對DOS程式來說並不算什麼大不了﹐但對windows程式來說則要多加留心了)﹔還是選擇下載檔案。無論您怎樣挖空心思﹐電信在這一點上﹐是無法和辦公室網路的速度媲美的。不過﹐您也有一個選擇就是﹕分別使用遠端控制和遠端連接進行不同的分工﹐他們並非是魚與熊掌舵關係。

Modem連接

Modem可以說是在電信過程中最常使用的硬體之一﹐當然您也可以使用ISDN、xDSL、Cable Modem等設備﹐不過這些服務並不是所有地方都可以得到﹐通常只有在大城市才有﹐如果在小的鄉村地方﹐畢竟電話網路才是最普及的。

MODEM這一詞其實是由兩個詞組成的﹕MOdulator/DEModulator(調制/解調器)。它好比一個翻譯﹐將電腦的信號轉換成電話線可以攜帶的模擬信號(我們日常使用的電話線都是模擬制式的)﹐然後在另一端再將模擬信號轉換回電腦信號。不過﹐事實上並不是所有modem都可以對講的哦﹐越是高速的modem﹐越是曲高和寡。要在modem之間溝通﹐它們都必須使用兼容的調制、錯誤控制、和數據壓縮等協定﹐下面我就分別對這些協定做一個簡單的了解﹕

調制協定
一般人買modem都只關心其速度﹐比如28.8Kbps或33.6Kbps﹐甚少留意它們使用的是什麼樣的調制協定﹐只有到了56K的時候﹐我們才會關心它是x2的﹐還是flex的﹐還是V9.0的。究竟這些協定代表了什麼呢﹖正如我們剛才討論的﹐modem是用來在電話線和電腦之間進行信號轉換的設備﹐調制協定則建立起信號轉換的規則﹐ 就好像國民黨和共產黨進行談判之前﹐都先磋商好哪些項目會真的擺到談判桌上一樣﹐否則一個高唱兩國論﹐另一個文功武嚇的話﹐就什麼也談不攏了。調制協定建立起諸如﹕速度、同位檢測、和位元同步等基本規則﹐而這些因素都決定了雙方modem的數據傳輸速度。或許您也聽過下面這些modem調制協定了吧﹕

V.32bis
許多9600bps的modem都使用V.32協定﹐緊接其後的一個由International Telegraph and Telephone Consultative Committee (CCITT)制定的協定被稱為V.43bis﹐則成為14.4modem的標準﹐對比V.32來說﹐V.32bis具有一下的優點﹕
  • 更快﹕跑14.4Kbps而不是9600bps。
  • 更聰明﹕當信號達不到14.4K的時候﹐會自己退回到1200、9600、7200、甚至4800bps的速度去。

V.34
在1993年之前它都被稱為V.Turbo﹐V.34不僅應用於28.8的modem﹐也能支持33.6的速度﹐可以從33.6Kbps降到2400bps的速度。V.34一度被認為是能達到的最快modem速度了。


V.90
V.90的推出有點特別﹐這要先了解一下56Kx2和56KFlex之爭了﹕早在1996年﹐著名的modem廠商US Robotics 推出了一款叫x2的modem突破了33.6的極限﹐但x2不是開放技術﹐這逼使其它競爭者聯合起來開發另一個56K的標準與之較量﹐終于Rockwell的Flex標準逐漸被各廠商所擁戴﹐而且市場佔有率也迅速的擴大。然而﹐這兩個標準卻是不兼容的﹐就好像錄影帶有NTSC和PAL制式之情形一樣。這給ISP和用戶都帶來了很大不便﹐而且令成本也高漲不少﹐最後大家都認識到兩者之爭對彼此都沒好處﹐這就是V.90產生的背景了。

V.90雖然說是可以支持56K的速度﹐但在實際應用中﹐由於電話線路的限制﹐其實最多只能達到53K﹐而且﹐這僅是對下載速度而言﹐用戶端的上載速度依然維持在33.6的速度﹐因此﹐56K可以說是第一個非對稱式的modem標準了。



錯誤控制協定
您應該知道8bit構成1byte﹐而一個byte則可以做為一個ASCII字母使用﹐其實所謂的ASCII字母只不過一堆不同的bit組合而已。在modem傳輸中都是以bit來做為單位的﹐如果因為電話線噪音和其它因素影響﹐而令到數據丟失﹐那麼重組出來的bit的排列就很可能不是原來的樣子了﹐這也就是為什麼糾錯協定變得如此重要的原因了。

錯誤控制協定在技術上面非常複雜﹐恐怕超出這裡要說的範圍了﹐不同﹐有兩種主要的modem檢錯手段我們也可以略為認識一下的﹕

  • 可以將所有數據都發送兩次﹐並查看兩份數據是否一致。
  • 在發送前和接收後﹐使用不同的數學功能對數據中的byte進行檢查﹐查看得出來結果是否吻合。
第一種方法不是不可行﹐只是略顯迂腐而已﹐因為如果第一個數據被干擾了﹐第二個也很有可能重蹈複徹。
第二種方法看來比較可靠﹐一旦數據通過了檢閱﹐由功能所產生的額外bit就會被忽略。

通常有兩種糾錯協定被廣泛採用的﹐它們是﹕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。



數據壓縮協定
數據壓縮協定規定了發送端modem如何進行數據壓縮及接收端modem如何進行解壓的方法。當modem使用數據壓縮的時候﹐必須要有錯誤檢測的能力(以備數據在壓縮和解壓過程中損毀之需)。不過您要留意一點﹐就是使用數據壓縮不是任何時候都是最快的﹐在某些情形﹐數據壓縮甚至會拖慢傳送速度呢。

數據壓縮的協定主要有﹕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標榜自己的傳送速度如何如何﹐其實很大成數都是將壓縮數據包括在內﹐而這些數據大部份都是一些壓縮比例較高的檔案。



數據緩衝
在使用高速modem進行傳輸的時候﹐如果您的機器是比較舊地型號的﹐很可能您的通訊口和modem的速度並不相配。電腦用來控制通訊口的軟體是鑲嵌在一個叫 Universal Asynchronous Receiver Transimtter (UART)的晶片組。通常我們會使用三種不同的UART晶片組﹕5250、16450、和16550﹐而只有16550可以支持高速的數據傳輸。如果您使用的不是16550﹐您可以有四個途徑去獲得﹕
  • 您可以買一個UART晶片組來更換﹐不過這樣做一點都不容易(看看那些焊腳就嚇死了﹗)﹐所以這不是一個值得推薦的提議。
  • 您可以使用軟體工具來模擬16550﹐在多數情形下一個它們應該做得到﹐不過也不便宜就是了(TurboComm曾買到$25美金)。
  • 您可以可以購買帶16550的I/O卡﹐通常都會有兩個通訊口和一個列印口。
  • 內置式modem﹐許多高速的內置式modem都自帶有16550的晶片組的。
除了要使用16550 UART來支持高速modem之外﹐您還要考慮另外一個題目﹐就是數據的流量控制。毫無疑問的是﹐您會希望數據從您的PC盡可能快的流向modem﹐不過問題是﹐modem通常都沒有那麼快的能力處理從PC傳來到數據﹐為解決這問題﹐我們可以使用硬體或是軟體來控制數據的流量﹐而且硬體控制是最通常被採用的方法﹐尤其是對高速modem而言。
最流行的硬體流量控制手段是CTS/RTS(Clear To Send/Requst To Send)。在連接modem和PC之間的RS232界面﹐有兩條信號線分別叫做CTS和RTS﹕發送端modem使用CTS﹐而接收端modem則使用RTS。當發送端modem可以進行數據發送的時候﹐它會通過CTS傳一個信號給PC﹐這樣PC就會將數據傳給modem﹐如果PC傳送的速度太快﹐以至modem再不能處理的時候﹐modem就會停止CTS的信號﹐這樣PC就知道該讓modem歇歇了。在接收端﹐如果PC處理的速度不夠modem傳來數據的速度快的話﹐然後PC就會停止CTS的信號﹐直到PC可以進行處理為止。
這樣的情形我們就需要為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網路中都不至於迷失﹐所謂“萬變不離其宗”是也。

二進位 (Binary)
為什麼我們要學二進位﹖哎呀﹐還不是該死的蠢電腦嘛﹕它只懂得0和1﹐那麼我們要和電腦溝通的時候﹐也只好裝蠢一些才行。當電腦要處理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的小算盤點話﹐可以依以下步驟進行﹕

  1. “開始/程式集/附屬應用程式/小算盤”
  2. 然後拉下“檢視”選單﹐確定“工程型”已被選擇
  3. 然後點選“十進位”﹐輸入數值
  4. 再點選“二進位”就可以獲得換算數值了

邏輯運算
邏輯運算是Microcomputer Architature的必修單元﹐這裡﹐我們只需了解幾個最基本的運算就可以了﹕一個是AND、一個是OR、還有一個是NOT。

在二進位的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 ﹗

哈哈~~應該是個值得慶賀的發現哦~~~我想您的心情並不亞於當初哥倫布發送美洲大陸啦﹗不過﹐問題又來了﹐既然我們已經分好等級了﹐還用那mask幹嘛﹖我們照等級使用不就好了麼﹖呵~呵~~閣下真是太聰明了﹐佩服佩服啦﹗不過﹐您可別忘了電腦是一台好蠢好蠢的機器哦﹐你告訴我﹕電腦怎麼識別Net ID和Host ID呢﹖嗯﹖﹖不會吧﹖﹗那好﹐讓我告訴您好了﹕
還記得AND和NOT的邏輯運算麼﹖如果忘了趕快往前翻翻﹐補習補習在來看這裡。當電腦獲得了一對IP和Mask(都是二進位數字)之後﹐電腦先使用一個AND的運算﹐來求出Net ID﹐您可以拿自己電腦的IP來做例子﹐這裡讓我們那先前用winipcfg看出來的IP來算算﹕

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網路分割成更多的子網路﹐而每一個子網路的主機數目卻相應的減少。

其情形會是﹕當您借用1個bit的Host ID來做Sub-net ID的時候﹐會將網路切割開兩個(2 1 = 2)子網路﹔如果借2個bit則有4個子網路﹔3個bit則8個﹔4個bit則16個﹔.....當所有的Host ID都借出去之後﹐您可以得到最多數量的子網路﹐但這是毫無意義的﹐因為沒有Host ID了﹐您怎麼分配IP給主機呢﹖要是您的Host ID只剩下一個bit沒有借出去的話﹐那麼您在每個網路只能得到0和1來作為Host ID﹐這也是不行的﹐因為這兩個ID也不可以用來分配給主機。也就是說﹐當您切割您的網路的時候﹐您得最少留下3個bit來做Host ID﹐而這時候﹐每個網路最多只能連接6台主機。

為了更好的理解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網路做成很大的方便﹐比如﹕即使您目前的公司還沒有連上Internet﹐但不保證將來不會啊。如果使用公共IP的話﹐有要經過註冊﹐否則等到以後真正要連上網路的時候﹐就很可能和別人衝突了。也正如前面說分析的﹐到時候再重新規劃IP的話﹐將是件非常頭痛的問題。這時候﹐我們可以先利用私有位址來架設網路﹐等到真要連上intetnet的時候﹐我們可以使用IP轉換協定﹐如NAT (Network Addresss Translation)等﹐配合新註冊的IP就可以了。

當然了﹐如果在課堂上或在家裡架設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定位方式﹕

Automatic Allocation
自動分配﹐其情形是﹕一旦DHCP客戶端第一次成功的從DHCP伺服器端租用到IP位址之後﹐就永遠使用這個位址。

Dynamic Allocation
動態分配﹐當DHCP第一次從HDCP伺服器端租用到IP位址之後﹐並非永久的使用該位址﹐只要租約到期﹐客戶端就得釋放(release)這個IP位址﹐以給其它工作站使用。當然﹐客戶端也可以延續(renew)租約﹐或是租用其它的IP位址的。
動態分配顯然比自動分配更加靈活﹐尤其是當您的實際IP位址不足的時候﹐例如﹐您是一家ISP﹐只能提供200個IP位址用來給撥接客戶﹐但並不意味著您的客戶最多只能有200個。因為要知道﹐您的客戶們不可能全部同一時間上網的﹐除了他們各自的行為習慣的不同﹐也有可能是電話線路的限制。這樣﹐您就可以將這200個地址﹐輪流的租用給撥接上來的客戶使用了。這也是為什麼當您用winipcfg來查看您的IP地址的時候﹐會因每次接撥而不同的原因了(除非您申請的是一個固定IP﹐通常的ISP都可以滿足這樣的要求﹐當然﹐可能要另外收費啦)。

DHCP除了能動態的設定IP位址之外﹐還可以將一些IP保留下來給一些特殊用途的機器使用﹐也可以安裝MAC地址來分配固定的IP地址﹐這樣可以給您更大的設計空間。同時﹐DHCP還可以幫客戶端指定網路、網關、router、Net Mask、DNS伺服器、WINS伺服器、等等項目﹐您在客戶端上面﹐除了將DHCP選項打勾之外﹐幾乎無需做任何的IP環境設定。

DHCP的工作形式 視乎客戶端是否第一次登錄網路﹐DHCP的工作形式回有所不同。

第一次登錄的時候

  1. IP租用要求﹐當DHCP客戶端第一次登錄網路的時候﹐也就是客戶發現本機上沒有任何IP資料設定﹐它會向網路發出一個Dhcpdiscover封包。因為客戶端還不知道自己屬於哪一個網路﹐所以封包的來源地址會為0.0.0.0﹐而目的地址則為255.255.255.255﹐然後在附上Dhcpdiscover的信息﹐向網路進行廣播。

    Dhcpdiscover的等待時間預設為1秒﹐也就是當客戶端將第一個Dhcpdiscover封包送出去之後﹐在1秒之內沒有得到回應的話﹐就會進行第二次Dhcpdiscover廣播。在得不到回應的情況下﹐客戶端一共會有四次Dhcpdiscover廣播(包括第一次在內)﹐除了第一次會等待1秒之外﹐其余三次的等待時間分別是9、13、16秒。如果都沒有得到DHCP伺服器的回應﹐客戶端則會顯示錯誤信息﹐宣告Dhcpdiscover的失敗。之後﹐基於使用者的選擇﹐系統會繼續在5分鐘之後再重複一次Dhcpdiscover的要求。

  2. 提供IP租用位址﹐當DHCP伺服器監聽到客戶端發出的Dhcpdiscover廣播後﹐它會從那些還沒有租出的位址範圍內﹐選擇最先的空置IP回應給客戶端一個Dhcpoffer封包。由於客戶端在開始的時候還沒有IP地址﹐所以在其Dhcpdiscover封包內會帶有其MAC地址信息﹐並且有一個XID編號來辨別該封包﹐DHCP伺服器回應的Dhcpoffer封包則會根據這些資料傳遞給要求租約的客戶。根據伺服器端的設定﹐Dhcpoffer封包會包含一個租約期限的信息。
  3. 接受IP租約﹐如果客戶端收到網路上多台DHCP伺服器的回應﹐只理會最 先收到底Dhcpoffer﹐並且會向網路發送一個Dhcprequest廣播封包﹐告訴所有DHCP伺服器它將指定接受哪一台伺服器提供的IP地址。同時﹐客戶端還會向網路發送一個ARP (Address Resolution Protocol﹐我們將會在下面碰到)封包﹐查詢網路上面有沒有其它機器使用該IP地址﹔如果發現改IP已經被佔用﹐客戶端則會送出一個Dhcpdeclient封包給DHCP伺服器﹐拒絕接受其Dhcpoffer﹐並重新發送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
    換一句話說﹐在DHCP伺服器上面的設定﹐並不是從所有客戶端都會看得到﹐客戶端可以保留自己的一些TCP/IP設定。

  4. IP租約確認當DHCP伺服器接收到客戶端的Dhcprequest之後﹐會向客戶端發出一個Dhcpnack回應﹐以確認IP租約的正式生效﹐也就結束了一個完整的DHCP工作過程。

第一次登錄之後

一旦DHCP客戶端成功地從伺服器哪裡取得DHCP租約之後﹐﹐除非其租約已經失效並且IP地址也重新設定回0.0.0.0﹐否則就無需再發送Dhcpdiscover信息了﹐而會直接使用已經租用到的IP地址向DHCP伺服器發出Dhcprequest信息﹐DHCP伺服器會儘量讓客戶端使用原來的IP地址﹐如果沒問題的話﹐直接回應Dhcpack來確認則可。如果該地址已經失效或已經被其它機器使用了﹐伺服器則會回應一個Dhcpnack封包給客戶端﹐要求其從新執行Dhcpdiscover。

至於IP的租約期限卻是非常考究的﹐並非如我們租房子那樣簡單﹐


ARP協定


RIP協定


DHCP協定


DNS協定


IP封包


路檢測

附錄

網絡檢測程序

作為一個網絡管理員﹐當網絡出現問題的時候﹐有一套系統的查錯程序將會起到時半功倍的作用。我們需要檢查的通常有三個部份﹕

下面是一些值得參考的步驟﹕
    檢查使用者
  1. 首先檢查的是您和使用者之間的溝通﹐看看有沒有彼此誤會的情況出現。
  2. 建立一份問題清單﹐例如﹕
    • 在出現問題之前﹐使用者做了什麼﹖
    • 當使用嘗試連接網絡的時候﹐發生什麼樣的狀況﹖
    • 使用者有否正確登錄網絡﹖
  3. 請使用者在Novell的DOS下面用“whoami”試試﹔在Microsoft網絡可以試試“net diag /s”﹔在TCP/IP網絡則可以試試“ping”這些指令﹐然後詢問他們看到的結果。


  4. 檢查硬體
  5. 準備好合用的工具
  6. 檢查問題是否機器本身的問題﹕
    • 問題的狀況是全網絡的還是僅本機如此﹖
    • 找一台確定工作良好的機器來連接試試。
    • 將機器搬到確定沒問題的連線試試。
    • 檢查IRQ、DMA、I/O、memory等有沒有資源衝突。
  7. 如果問題確定是來自網絡後﹕用SNMP(Simple Network Management Protocol)等手段去找到究哪一個區段有問題。
  8. 看看網絡硬體的指示燈是否工作正常﹖記住一點﹕永遠不要買那些沒有指示燈的設備。
  9. 如果您認為是伺服器的問題﹐搞清楚究竟是哪台伺服器出的狀況﹖
  10. 如果您認為是工作站的問題﹐試試這些﹕
    • 檢查hub
    • 檢查網線
    • 檢查接頭
    • 檢查工作站記憶體
    • 運用跟網路卡一起來的工具程式


    檢查軟體
    • 先將一些駐留程式(TSR)設備驅動程式卸載(unload)﹐然後重新開機試試看。
    • 將一些非必要的設備暫時關閉(disable)再重新開機。
    • 如果程式依然有問題﹐將網絡設備也給關閉看看。

 

 

 

 


© 1999 Netman 網中人
Last Updated: September 13, 1999