基本上我們前面所接觸的都是在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的資料傳輸主要有三個步驟﹕
- Discovery﹐就是bridge的任意一端告訴bridge有資料需要傳送到另一端
- Filtering﹐接著bridbe過濾(filter)資料並將協定翻譯給目的端
- 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﹐請參考下圖﹕
Learning 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來連接多個區段﹐確定您購買的是learning bridge﹐也就是能夠追蹤每個節點地址的bridge。
- 您還可以購買half-bridge﹐也就是使用一對bridge將過濾和傳遞工作分開。見圖﹕
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可以直接和使用者設備對講
- Router可以協助管理網路交通
- 不像bridge﹐router並不會閱讀所有在網路上面的封包﹐只會閱讀那些需要進行路由的封包
- 由於router是用來連接不同網路的﹐所以他們並不能獨立協定之外
為了更好的了解router的功能﹐您最好先要明白router是如何工作的﹐以及它和bridge的分別。它們主要的分別是它們如何看待所連接上來的區段﹕當使用bridge連接兩個網路的時候﹐它們僅屬于同一網路之內的兩個區段﹔如果使用router來連接兩個網路﹐它們是各自獨立的網路。
如下圖所見﹕當網路1的節點A要傳送一個封包網路6的節點B﹐節點A會先將封包傳給連接到網路1的router 1。當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溝通﹐
然而﹐使用 Emulation Card 進行終端模擬都會有下面的不利因素﹕
- 比較昂貴﹐您必須購買額外的硬體和軟體來讓您的PC和mainframe溝通。
- 額外的軟體和硬體也容易引起更多的設備衝突。
- 比較慢﹐每次您要由一個作業系統要求另外一個系統﹐都需要時間。
針對那些問題﹐您或許會考慮使用gateway server﹐不過您依然還是會碰到這些問題的﹐只不過將問題集中在一台機器而不是在所有機器而已﹐而且那些使用軟體的工作站還依然可能會碰到軟體上面的麻煩。
小結
至此為止﹐相信您也已經有一定的概念去如何使用各種不同的設備將您的LAN連到WAN上面了吧。如果您管理的是一個小辦公室﹐那您很有可能是邀請外面的商家幫您連接您的LAN。然而﹐當您的網路成長的時候﹐對各種WAN設備的需求也會顯得越來越重要了。

© 2000
Netman 網中人
Last Updated: March 28, 2000
|