天天看點

簡易網絡基礎架構

網絡是什麼?

  網絡是什麼呢?簡單的說,隻要是兩部以上的計算機,透過網絡線或者是其它的網絡媒體(例如無線網卡、專線、Cable纜線等等)連接配接在一起,以進行檔案傳輸、訊息傳遞等等功能,那就形成一個『網絡世界』啦!那麼網絡有沒有大小之分呢?基本上,如果您的網絡是在您的研究室内幾部計算機,或者是大樓内的所有幾百部計算機連接配接起來的,那麼就可以視為一個小型的 LAN ( Local Area Network ),透過 LAN 的再延伸,例如整個城市或國家,就可以稱做為 WAN ( Wide Area Network ) ,而這些無數個的 LAN 與 WAN 都連接配接在一起,那就是 Internet啦!您可以想象成, Internet 僅是将所有的 LAN 與 WAN 連接配接在一起的一個接口,是以,任何地方的計算機,隻要連接配接上 Internet 之後,就沒有什麼太大的差異了,也就是說,在地球的另一端的計算機,與在您身旁的計算機,在 Internet 上面,事實上是差不多的!(隻不過流量有點限制就是了 ^_^)!此外,需要注意的是, Internet 并沒有專人在維護的,是以他是完全沒有王法的地方,您可以在 Internet 上面進行任何的事情!哇!好象很可怕的樣子!是這樣沒錯! Internet 确實是『相當的可怕!』 ^_^,就是因為太可怕了,是以我們得要來聊一聊網絡的基礎呀!

網絡的功能:

  好了,對于所謂的網絡有一點認識之後,要來談一談:網絡有什麼功能呢?說穿了,網絡真的是很日常生活化的一項工具了!!例如您使用的計算機上 WWW 去浏覽時,使用的就是網絡功能了;您的公司内部的『網絡上的芳鄰』分享的檔案、列印機,那就是網絡功能之一;上網下載下傳軟體,使用的 FTP 也是網絡功能之一!呵呵!夠生活化了吧!我想,目前的生活中,很難有人不去奇摩雅虎看一看奇摩實時新聞的吧!?還有股票啦、電子資訊郵件啦、上網玩網絡聯機遊戲咯等等,哇!好多功能呦!這都是網絡幫您達成的呦!當然啦!網絡的功能來不止于此,您可以再更深入的研究呦!

網絡的運作模式:

  好啦,網絡就是幾部計算機連接配接在一起,并且可以互相進行資料與訊息及硬體周邊分享的一個咚咚,他可以達到的功能相當的多,但是這裡就牽涉出來了一個問題,那就是『網絡是如何運作的呢?』,我們以目前最常見的 ADSL 撥接制的情況稍做說明好了。當您需要聯機網絡時,那麼就必須要有:

1. 網絡卡與網絡線:在網絡的世界裡,其實真正工作的應該就是電子訊号啦!而這些電子訊号需要藉由硬體做為媒體來傳輸,這就是最底層的網絡硬體啦!我們這裡是以 ADSL 來進行說明的,當然還有所謂的光纖、無線網絡等等。無論如何,要連接配接到 Internet 上面去,首先,就是必須要有『連接配接的媒體』這個媒體一般就是 RJ-45 的網絡線與網絡卡啦!當然啦,每一種媒體都有其規格與負載量,是以選擇的時候就需要多加的小心啰!

2. 支援網絡媒體的作業系統:有了網絡媒體之後,但是沒有能夠跟媒體溝通的作業系統來操控硬體,那硬體當然沒有辦法工作啦!

3. 合法的網絡位址:就跟門牌一樣,沒有門牌,那麼您要如何到達目的地或者别人如何到達你家?此外,在網絡位址的訂定方面,還會定義出『路徑』(route,路由),就是要如何到達目的地的地圖啦!

4. 資料傳輸的方法:好了,現在硬體都沒有問題了,接着下來就是需要了解『我的資料是怎麼傳送出去的?!』哇!好麻煩,還要了解資料『封包』的咚咚呀!呵呵!基本上,不用擔心,目前的網絡已經幫我們定義好很多協定了!是以我們隻要了解他的一些基礎原理即可!其它的就不需要太擔心啦!!

OK!那麼假設一個狀态好了,如果你要浏覽奇摩新聞 的話,您是怎樣取得上面網頁的資料的呢?

1. 首先,您要取得奇摩雅虎上面的資料,就必須向對方傳送一個要求,不然對方怎麼知道您要的資料是什麼呢?呵呵!那麼這個要求的『封包』會先在你的系統上面被『打包』;

2. 『打包』完成之後,當然就是要開始來傳送咯,傳送當然是藉由網絡卡來傳送啰,是以資料這個時候會被送到網絡卡上;

3. 而在網絡卡将打包的封包傳送出去之前,會先監聽一下在這個傳送的時間點上面,是否有其它的 PC 同時在傳送,如果沒有的話,封包才可以送出去,否則就無法傳送,需要再等下一次的監聽之後才能傳送!

4. 好了,那麼開始傳送之後,就需要藉助于 route tables 的規則,才能經由一個一個的節點(nodes)來送達目的地!

5. 到達目的地之後,再來則是對方的主機将封包收下來,并經過作業系統的解開封包,得到您所要求的資料,然後在依據要求的内容來給予響應!而這個給予的響應又需要上面的這樣一個流程了!這個時候就會變成對方将資料打包->網絡卡->網絡傳送->....到達你的螢幕前面!

OSI 網絡七層協定:

  而依據上面的流程來看,我們就不難了解到 OSI ( Reference Model for Open System Interconnection ) 的一個模式(model),稱為 OSI 七層協定的一個模式啰!這個七層協定可以簡單的分為兩大群組,一個用在網絡的基礎(硬體協定與網絡位址)方面,主要規定了一堆硬體的相關協定;另一個則是使用者部分的協定,使用者可以利用這四個協定來設定自己的應用程式!分别可以這樣看:

. 網絡基礎:實體層、資料連接配接層、網絡層

. 使用者方面:傳輸、會談、表現及應用層

  我們可以簡單的用下表來稍微了解一下這七層分别在幹嘛?請特别留意,下表請由下往上看,亦即由實體層看到應用層呦!

OSI 七層協定的名稱 該層負責的工作
應用層 .表現層是将資料轉換成 PC 的資料格式,而應用層則是跟應用程式有關的轉換了!例如您的浏覽器若隻認識 BMP 的圖檔,那麼在應用層就會将來自 JPG 或 GIF 的檔案轉成 BMP 啰!
表現層 .當接受了會談層傳送來的資料之後,當然,我們必須要針對各個不同的資料與字元進行譯碼與轉換的工作!例如 ASCII 與 EDCDIC 之轉換,及資料的加密與與壓縮等等功能!
會談層

. 資料是藉由傳送層傳送來的,而這一層則是将來自傳送層傳來的資料進行響應的工作!舉個例子來說:假設 client 端為節點 A 而 Server 端為節點 B。

1. 當節點 A 要對 B 要求建立聯機時,A 會先發出『聯機請求』的訊息,該訊息上面帶有 SYN 的符号;

2. 節點 B 收到訊息之後,如果确定接受 A 的聯機要求,那麼就會響應一個『确認請求』的訊息給 A ,該訊息上面則帶有 SYN/ACK 符号;

3. 然後節點 A 再度響應給 B 一個『确認聯機』的訊息,帶有 ACK 的符号,這個時候就進入了資料傳送的階段了!

4. 當節點 A 資料傳送完畢之後, A 會發送一個『終止聯機』的訊息,則在得到 B 響應的『确認終止』訊息之後,就結束了該次聯機!

. 上面即是有名的『三向交握, Three-Way Handshack』的工作原理啦!那就是在這一層裡面達成的哩!是以我們可以說,在會談層裡面可以提供穩定的可靠的聯機管道!

傳送層

. 我們在底下的網絡功能三層協定之中,知道資料傳送是以封包 ( packet )來傳遞的,而打包的工作就是在這一層裡面完成的啦!在這一層裡面,最常見到的協定就是 TCP 封包啦!他可以記錄目标及來源的 port 與 IP ,讓資料封包可以順利的藉由底下的網絡層來達到傳送的目的!

. 是以,在這一層裡面,主要負責的工作就是『由上面來的資料需要打包,由下面來的封包則是拆封』咯!而且他也會依據不同的協定( ftp, http, smtp... )在同一位址上面來進行追蹤與分析呢!

網絡層

.在真實的世界裡面,我們在寄出郵件的時候,需要知道的是『我們的門牌及對方的門牌』對吧!?那麼在網絡的世界裡,我們的資料封包記錄的來源與目的『位址』 ( 目前最流行的 IPv4 這種 IP 的規定 ),就是在這一層當中定義出來的!

. 此外,不要忘記了,資料要能夠流通,還得需要藉由『路途』來決定,在網絡的世界裡面,就是我們的 route table 啰!這東西很重要!沒有他的話,資料就送不出去啰~

資料連接配接層

. 我們的資料要透過實體層的網絡卡及網絡媒體(如網絡線)進行傳輸的時候,需要将資料打包(打包成為 packet, 打包的步驟是在傳送層裡面完成的 ),那麼一個封包的大小與格式及所含的内容就在這一層當中規定!

.通常一個打包的資料封包是不可以太大的(是以才會有規定呀!)這是因為要避免某部主機一直占着網絡媒體不放的緣故!是以如果你的檔案很大時,那麼該檔案就會被分成很多的打包後的資料封包來傳送呦!

. 再來,如果發生了同一個傳送時間點上面有兩個或以上的主機同時提出傳送的需求時,那麼該次傳送将會失敗( collision ),此時,該封包再等待下一次傳送的時間間隔也在這一層内規定!

實體層

.前面說過了,真的在進行網絡工作的其實是電子訊号及傳遞電子訊号的硬裝置。而包括各個網絡媒體之定義啦、還有網絡的連接配接型态啦!都是在這個層級當中規定的!例如我們的 ethernet 網絡卡還有 RJ-45 網絡線等等!

.當然啦,如果你有興趣想要發展網絡媒體硬體的話,那麼你的硬體就需要符合這個層級的規定啦!不然做出來的硬體可就無法與其它的規格品溝通啰!

 請特别留意, OSI 僅定義出大略的模式而已,更詳細的定義則需要再參考各項層級當中的規定!!例如網絡層在目前最流行的是 IPv4 的協定,但是未來的 IPv6 協定也可以适用呦!

  是以,每次進行網絡工作的時候,你的資料就會由上(應用層)而下(實體層)的進行資料的打包、卷标與傳送,而到達目的地的時候,你的資料就會被由下(實體層)而上(應用層)的解開與運用啦!用郵局的郵件傳送來解說一下好了:你要寄信的時候是怎樣寄出去的呢?

1. 将你所想要寄出的資料進行打包進入資料袋的工作:這裡面包含了你所想要做的工作的判斷,包括是否需要将你的檔案資料進行加密呀?等等的(這些包含了應用層、表現層與對談層);

2. 接着下來,你必須要在資料袋上面填寫你的位址與對方的位址,并且還要注明收信者呦(這部份就屬于傳送層的階段了);

3. 然後你将這封信放入郵筒裡面去,等待郵差車來運載(這部份可以想象成網絡層);

4. 郵差來收了這封信之後,會先載運到地區的大型郵件集散地,并依據信封上面的位址進行包裹的分類,以進行下一步的傳遞工作;

5. 然後分類之後的大型貨櫃或包裹,經過空運或海運或者是貨運進行傳輸(有點像在 Internet 上面呦!),送到對方的大型郵件集散地;

6. 對方的大型郵件集散地将貨櫃打開之後,依據各包裹的位址進行分類,

7. 由郵差将分類過後的信件運載到正确的位址去;

8. 收信人收到該信件之後,打開包裹,得到資料之後,再進行進一步的響應!!

是以,我們可以這樣看,如果您的網絡要能夠運作的話,那麼就需要底下的幾件東西:

1. 網絡線:這可有的選擇的了!不同等級的網絡線能夠進行的最大傳輸量與能支援的網絡布線類型并不一樣,是以要仔細的給他選擇一下呦!目前的主流是以 RJ-45 的 Cat5 等級網絡線為主體!

2. 網絡卡:網絡卡的學問是很大,不過我們這種小站,嗯!普通一點的 10/100 網卡即可啦!

3. 核心支援的驅動程式:還記得在 核心編譯 裡面提到的吧!對了,除非你的作業系統能夠跟你的硬體溝通,否則永遠都是個『屁!』

4. 合法的 IP :對啦!網絡世界的『門牌』啦!必須要是『合法的』呦!那麼什麼是『私有的?』後面繼續會提到的啦!

5. 正确的 route table :要讓各家『門牌』可以正确的顯示出來,就需要『路徑圖』啦!好讓我們的資料封包可以『按圖索骥』呀!呵呵!這個時候, route table 可是不可或缺的喔!

好了,底下我們先以一個實際的網絡布線情況來加以說明上面的理論啰!然後在一個一個的拆開來進行說明啦!

基礎網絡布線模式:

  談完了一些基本的觀念之後,接着下來當然就是實作的部分啰!首先,要讓網絡能通,自然就需要将所有的計算機以『網絡的聯機媒體』連接配接起來,這裡指的媒體就是『網絡線、集線器或交換器( Hub 或 Switch )、網絡卡』等等的硬體配備啦!當然啦,由于選擇的媒體不同,布線情況也會有所差異!這裡 VBird 以目前最常見于一般小型企業或家庭 LAN 裡面的布線『星形聯機』來進行說明。這種架構基本上就是以一個 Hub 或者是 Switch 為中心,進而将所有的計算機連接配接起來,以提供各個計算機的網絡功能!這種架構的最大優點在于除錯較容易!

 基本元件:

.工作站與伺服器( workstation, server ):簡單的來說, Windows PC1, Windows PC2, Linux PC3 這個沒有對外開放網絡服務的機器就可以稱為 工作站( workstation ) 啦!而 Linux之Proxy,NAT伺服器由于對外提供網絡服務,可以允許用戶端 ( Client ) 連接配接上來,就稱為 伺服器( Server ) 啦!而 host 指的是一部計算機啦!不論是上面的 workstation 或 server 的哪一部,都是 host 說!

. 節點:那麼 node 是什麼呢?就是節點啦,在網絡媒體上面的每一個 host (主機) 都可以看做一個 node 啰!例如上面的圖示當中, 集線器、 Linux 伺服器、數據機、ISP大型主機.... 都是一個『節點』,因為我們的資料封包都是會經過該裝置才一個一個的傳送出去!

基本架構說明:

  簡單的說,『網絡就是一群通過一定形式連接配接起來的計算機』!

. LAN:一個網絡可以由兩台計算機組成,也可以擁有在同一大樓裡面的上千台計算機和使用者。我們通常指這樣的網絡為區域網路絡 ( LAN、Local Area Network ),如同上面的圖示,我們可以簡單的認定在數據機以内( 即左邊 )的 PC1, PC2, PC3, Linux 主機等裝置即為 我們的 LAN 的部分了。因為我們最常使用的還是LAN,( 即使我們從家中連上 Internet,其實也是先連上 ISP 的 LAN ),是以這裡我們主要讨論的還是以LAN為主。

. WAN:由 LAN 再延伸出去更大的範圍,比如整個城市甚至整個國家,這樣的網絡我們稱為廣域網 (WAN、Wide Area Network ),是以,簡單的說,很多的這樣的架構的 LAN 湊在一起,就稱為廣域網絡啦!

. Internet:就如同上面提到的,Internet 是将所有 WAN 與 LAN 連結起來的一個接口而已!由于沒有專人維護,是以說, Internet 是一個最沒有王法的地方了,你可以在 Internet 上面聯機到任何地方去或進行任何事情!

. Intranet:最早出現的名詞是 Internet,然後人們将 Internet 的概念和技巧引入到内部的私人網絡,可以是獨立的一個 LAN 也可以是專屬的 WAN ,于是就稱為 Intranet 了。它們之間的最大分别是:開放性。Internet 是開放的,不屬于任何人,隻要能連接配接得到您就屬于其中一員,也就能獲得上面開放的資源。相對而言,Intranet 則是專屬的、非開放的,它往往存在于于私有網絡之上,隻是其結構和服務方式和設計都參考 Internet 的模式而已。 是以,簡單的說,我們那個小小的 LAN 也可以視作是一個小型的 Intranet 呢!

. Extranet:Extranet 算得上是針對 Intranet 而延伸出來的概念。既然 Intranet 是指内網絡部而言,那麼 Extranet 則指外部的網絡了。Extranet 通常是企業和 Internet 連接配接以向公共提供服務的網絡。不過,這并非是單純根據實體或邏輯位置來定義,主要是以連接配接的形式和功能來區分。例如某個外部網絡,如果單純的透過網絡來連接配接我們的 Extranet 或 Intranet ,那它隻是一個毫不相關的外部個體而已。但是,如果我們用 VPN 或其它信任形式将對方連接配接起來,那麼對方也可以屬于 Extranet 或 Internet 的部份。

  關于 Internet/Intranet/Extranet 的觀念,我們再引用 ZMAN 兄的話:『舉例來說,假設我的公司有台北台中高雄上海等分公司,将這些公司連在一起然後屬于我公司内部使用的網絡,就叫 INTRANET !我的觀念是不一定非用INTERNET(VPN)連用X.25或FRAME RELAY或專線應該都算在内,重點在于屬于我公司内部使用的網絡服務的對象是公司内部員工,如果我的上遊供貨商或下遊協力廠商甚至是客戶需要進來我的INTRANET存取資料,聯機的方式當然很多(撥接,專線,INTERNET) ,認證及安全性也很重要 ,這樣子的網絡我們叫它EXTRANET ,重點在于服務特定外部對象進來INTRANET ,而INTERNET的服務對象就是無限定的,譬如說你無法預估誰會來看你的網站或寄MAIL給你』

聯機方向:

  那麼現在來想一想,我們是怎樣由内部的 Intranet 連上 Internet 的呢?!如同上面的圖示一般,如果我們目前在 Linux PC3 這部工作站上面,那麼我們的資料怎樣經由網絡傳送出去呢?基本上,需要有這些步驟才行:

1. Linux 核心必須有支援網絡卡:

由于 linux 系統本身就有相當強大的網絡支援度,是以我們上面提到的 OSI 模式上面使用者功能的四層在這裡都不成問題!接着下來我們應該要探讨的就是『硬體』部分了。還記得我們在編譯核心的時候有提到,真正在進行工作的是什麼嗎?!沒錯!就是『硬體』!而要讓硬體正确的工作時,就需要核心的支援啦!是以,在一個打包好的資料封包想要進行網絡傳輸時,最重要的工作就是讓你的核心支援網絡卡啦!

 

  如果你的網絡卡預設并沒有被核心支援,那麼就必須要編譯網絡卡的驅動程式,并且在 /etc/modules.conf 寫入驅動程式的子產品,這樣才能在一開機的時候被驅動呢!好了!那麼我們的作業系統怎麼知道網絡卡這個硬體呢?嘿嘿!這就需要所謂的 Media Access Control ( MAC ) 這個東西啦!基本上,每一塊網絡卡都有獨一無二的自己的網絡位址,那個東西跟我們常講的 IP ( 軟體位址 )不一樣呢!那稱為 Hareware Address (硬體位址),是由 六組16進位的數字組成的!例如我家裡的網絡卡位址為:『00:50:FC:22:9C:57』,這個硬體位址是在網絡卡出廠的時候就已經被焊死在網絡卡上面了!你沒有辦法修改的!這個東西在 Switch 及 DHCP 的時候很有用呢!你可以想象一下,這個東西就有點像是門牌号碼啦!

2. 網絡卡必須具有合法的 IP ( 軟體位址, software address ):

  再來,由于我們目前的網絡基礎是由 IP ( Internet Protocol )進行溝通的( 由于這個 IP 是經由作業系統的軟體給的,是以又稱為 軟體位址( software address ) ,跟剛剛上面提到的硬體位址并不相同,請特别留意!),什麼是 IP 呢?就是由四組 8 bits 的數字組成的,例如 tw.yahoo.com 的 IP 位址為:202.1.237.21,這就是所謂的 IP 啦!那麼還有所謂的保留 IP (或稱為私有 IP ) ,這個是原先在規劃 IP 的規則的時候就先預留的 IP 啰!這些 IP 并不能直接跟外界之 Internet 進行溝通!最常使用的就是 192.168.0.1 ~ 192.168.0.255 這一個 C Class 的網段啰!好了!既然要溝通的話,那麼自然就有所謂的 network 網段内啰(我們常提到的『同一個網段』的概念)!那個 192.168.0 就是 network ,由于是 C class 的關系,( 注意,其 netmask 為 255.255.255.0 ),而起始段為 192.168.0.0 到最末段為 192.168.0.255 ,而這個最後一個末段的 IP 就稱為 broadcast !這四個東西: IP, network, broadcast, netmask 在規劃一個網絡卡的時候是相當重要的參數!千萬不能設定錯誤呢!

3. 資料封包打包送出( TCP ):

  好了,也有了 合法 IP 位址之後,那麼我們的資料就已經可以定位了,這個時候,當你要将你的資料傳出去的時候,你的資料就需要經過打包,是以我們就會稱為是『資料封包』,那麼這個傳輸你的資料封包的協定我們稱為 Transmission Control Protocol ( TCP ) 啰!這個 TCP 的内容除了你的資料之外,最重要的就是紀錄了這個資料的來源 IP 與端口口 ( source, port ) 還有目的地的 IP 與 埠口 ( destination, port ),這樣我們的資料就可以去尋找 IP 給他丢出去啰!

4. 經過節點、 Router 或 Gateway 主機:

  好了,由于我們是經由 Hub/Switch 進行連接配接的,是以我們的資料一定會經過這個節點才會傳送出去!這個時候不禁要想一想, Hub 好還是 Switch 好?這兩者有什麼不同呢?其實最大的不同來自于『共享網絡媒體』與『網絡媒體對應』的架構上面!這點我們在後面會再提及。

  還有,當我們的 TCP 封包已經打包好了準備送出的時候,網絡怎麼知道如何傳送這個資料封包呢?其實,就像我們去到陌生的國家需要有『地圖』才能夠『按圖索骥』一般!在網絡的世界裡,必須要藉由 route table (路由表) 來取得 gateway 或 router 的位址,進而将資料傳送到 router 上面去啦,其它的工作就是 router 那邊的事情啰!而 router 接收了封包之後,就會再藉由 router 自己的 route table 來判斷下一個該去的 router 主機~~一直重複這個動作,最後就可以到達目的地啦!( 請注意,如果兩部互相傳輸的計算機是在同一個網域之内,由于同一個網域的主機均可以直接透過監聽與溝通的動作來達到資料傳輸的目的,是以主機可以直接與主機互相溝通,而不需要 router 啰!當然你也可以想成你的主機就是你的 router 啦! ^_^ )

5. 到達目的地:

  好了,藉由這麼多的節點的傳送,我們的資料封包由于 TCP 裡頭的目的地 IP 的規定,是以找到了正确的主機啰!這個時候這個主機就會将 TCP 封包解開,并且将資料讀取出來!嘿嘿!完成傳送啰!

是以,基本上我們在傳送一個資料的時候,他的機制是挺複雜的,不過也可以想得很簡單!就是:

1. 作業系統先依據軟體給的 IP 來将資料打包成為待傳送的封包,例如 TCP 封包,上面并記錄了來源與目的的 IP 與 port;

2. 根據封包上面的目的地 IP 資料,并經由 本機上面的 route table 來取得下一個 router 的資訊( 若在同一網域内,則 router 可視為本機的網絡卡 ),然後将資料送到 router 上面去;

3. 重複 router 的行為,最後送到目的地端的 PC,而對方主機接收你的 TCP 封包!

  基本上就是這樣,底下我們分别來談一談,那麼上面這些基礎步驟所需要注意的地方為何,其中最重要的就是 IP 的概念!這點請特别留意呢!

網絡媒體的運作方式:

  開始來談一談網絡的運作方式吧!底下我們以基本的 Bus (直線型總線) 聯機模式來進行說明,如下面圖示所示,雖然一般家庭網絡最常見的聯機模式為星形模式,不過基本原理上面還是與 Bus 布線模式相同的!而由于 Bus 模式較容易記憶與說明,是以我們底下選用比較好了解的 Bus 來進行說明吧!

網絡媒體:

  先來談一下什麼是『網絡媒體』,說穿了,最基礎的網絡媒體就是『網絡線』啰,因為我們都是透過網絡線來進行電子訊号的交流的嘛 ( 再次請您留意,這裡是以網絡線為例,當然網絡媒體還有相當多的樣式的!),好了,請注意的是,當所有的計算機要進行資料傳遞的時候,就是需要使用到這個所謂的網絡媒體,而由于所有的計算機都連接配接在這個網絡媒體上面,您可以将這個 Bus 的網絡線當成是一個『共享媒體』啰!并且,這個共享媒體的傳輸限制為『單一時間點上面,隻能有一部機器使用這個共享媒體』。

什麼是實體廣播(physical broadcast):

  好了,我們已經知道訊号是藉由網絡媒體來進行傳遞的,而這個媒體在單一時間點上面僅能讓一個機器使用!(1)那麼各計算機怎麼知道該時間點上面有沒有其它的機器在使用呢?(2)還有,如果 PC1 與 PC2 要互相溝通的話,他們的訊号是怎樣傳輸的,也就是說, PC1 怎麼知道該訊号是要送到 PC2 呢?(3)此外,如果同一個時間裡面有兩部計算機以上同時使用這個媒體,會産生什麼情況?底下我們就來談一談啰:

. 由于這個媒體 ( 就是網絡線呦! ) 每個時間點上面僅能讓一部機器使用 ( 這個時間可能是幾千到幾萬分之一秒,很短的啦!),是以,為了确認當時在這個媒體上面沒有其它的機器在使用,是以 PC1 會先發送一個信号到這個媒體上面去,假設當時 PC2 ~ PC5 都沒有要使用這個媒體,那麼 PC1 在知道沒有人使用之後,就可以來順利的使用網絡媒體傳送資料,這就是所謂最底層的『實體廣播』了;

. 再來,如果 PC1 與 PC 3 同時都想要使用網絡媒體呢?呵呵!這個時候,就要看是誰先傳送出廣播資訊的,當然是先搶先赢,例如當 PC1 比 PC3 早送出實體廣播資訊,那麼 PC3 就會先停頓,等 PC1 該次工作完畢之後,才會發送廣播資訊了!這個地方就要再次的強調了!由于先搶先赢,那麼如果 PC1 的封包太大的時候,那其它的 PC 豈不是永遠無法使用網絡媒體來傳輸資料啰?是以,才會在 OSI 的資料連接配接層裡面定義每個封包的大小及格式呀,如此一來,媒體的使用權才會比較平均一些啦!

. 上面的情況都還可以接受,但是如果萬一真的不幸發生了 PC1 與 PC3 同時進行實體廣播資訊呢?那也不用太擔心,因為既然這次發生了同時廣播的狀态,那麼這兩部機器均将不會進行資料傳送,會等待一段時間之後才再次廣播!而在等待的時間上面,是『在一段時間裡面随機取一個時間點』來再次廣播,由于是随機取樣的,是以應該不太容易再造成同時進行實體廣播的現象。萬一真的不幸又同時實體廣播,那麼又會等待下一次....依序下去,好象超過 16 次以後,如果還真的很不幸(因為機率真的太低了)再次同時進行實體廣播,那麼就抱歉啦!您的網絡媒體将癱瘓掉!不過也别擔心,重新 reset 就好啦!

. OK!那麼有沒有同時發送封包的狀況?當然有啦!現在你假設 PC1 到 PC5 的距離是很遠(假設 100m 好了),那麼當 PC1 與 PC5 發送出實體廣播,提醒大家說要傳送資訊的時候,由于 PC1 與 PC5 的距離太遠了,是以響應的時間比較長,那麼這個時候可能就會造成誤判,認為當時媒體上面沒有任何的機器在傳送資料,造成 PC1 與 PC5 同時傳送出資料在媒體上面,這個時候就會發生所謂的『封包碰撞, collision』的情況了!因為網絡媒體上面單一時間内僅能允許一個機器使用的嘛!封包碰撞可能會造成資料的損毀現象呢!比較麻煩啦!而為了避免封包碰撞的問題,是以目前網絡上面都會使用一種稱為 CSMS/CD ( Carire Sense Multiple-Access / Collision Detect ) 的技術來避免因封包碰撞造成資料損毀的問題!不過,由于選擇的媒體不同,是以還是很有可能會造成碰撞的啦!

. 好了,那麼假設 PC1 也經過實體廣播了,也順利的将封包丢出來到媒體上面傳送了,那麼他怎麼知道資料要丢到 PC2 上面去呢?這就需要藉由 MAC 與 ARP 等等的咚咚來幫助達成了!ARP 我們等一下再提,而 MAC 剛剛已經提過了,就是網絡卡的硬體位址,由于網絡卡出廠的時候就有所謂的硬體位址,是以,隻要硬體位址與軟體位址能夠互相配合,讓封包可以知道要傳送到哪一個硬體位址上面去,喝!那麼封包就可以成功的送到 PC2 上頭去啰!

軟體位址到硬體位址

  好了,知道了網絡媒體的定義,也知道網絡媒體的使用方式了,那麼再來自然就要提到網絡世界裡面常常提到的 IP 也就是軟體位址這個玩意兒了!軟體位址是我們使用軟體來給予的一個定位的咚咚,而這個所謂的 IP 是在 OSI 的第三層,也就是網絡層裡面的定義。而我們也知道在網絡媒體上面資料的傳遞主要還會檢視所謂的 MAC 這個硬體位址,好啦!那麼軟體位址跟硬體位址怎麼對應起來呀?!既然實際上是使用 MAC 來接收資料,但是我們又是以 IP 來做為門牌号碼,呵呵,是以就需要一個對應的協定啦,好溝通這兩個玩意兒!那就是 ARP ( Address Resolution Protocol ) 啰!幾乎作業系統裡面都會有個 ARP table ,用以記錄 IP 與 MAC 的對應情況!

. 在首次進行資料傳輸的時候,由于 ARP table 當中沒有相關的資料,這個時候您的主機就會對『同一網域的全部計算機進行邏輯廣播( logical broadcast )』,(關于什麼是『同一網域』的定義,等一下我們在 IP 基礎内會再次提及) 請注意呦!

o 剛剛的『實體廣播主要是針對在同一個實體網段内的共享網絡媒體之動作』;

o 而『邏輯廣播主要是針對網絡層的軟體位址而言來進行的動作!』

  那麼如果查詢到了主機所需要的軟體位址之後,主機的 ARP 表就會自動的學習起來,将軟體位址( IP ) 與硬體位址( MAC )之對應給他寫入 ARP 當中!

. 而在後續的資料傳輸的時候,主機就會先去尋找 ARP 表中的資料:

o 如果 ARP 有紀錄的話,那麼資料就會直接的傳送到該目的地去,而不會進行『邏輯廣播』;

o 如果 ARP 沒有紀錄的話,那麼主機就又會對全部的同一網域内的計算機進行『邏輯廣播』了!

. 這裡就有一點很奇怪啦,既然說『實體廣播』是針對 MAC ( 第一、二層 )而『邏輯廣播』是針對軟體位址( 第三層 ),偏偏真正在進行網絡工作的是網絡媒體還有 MAC 這個咚咚,怪了!那麼當進行邏輯廣播的時候,底下的層級都不需要動嗎?好象跟 OSI 協定裡面不太一樣呦!呵呵!其實是這樣的!當進行邏輯廣播時,主機發送出去的資訊中的會含有目的地的 MAC 是 FF:FF:FF:FF:FF:FF ,也就是所有的網絡卡都會接受該封包啦!而當其它主機接受該封包之後,會進入第三層去分析軟體位址的要求,如果該要求的軟體位址不是自己的,就會将該封包丢棄,如果是自己的,那麼就會響應該封包,以将自己的 MAC 傳送給原來發送資訊的主機啦!

. 要知道目前的您的主機的 ARP 紀錄,可以使用 arp -a 來檢視呦!

CP/IP 流程

  基本上,在 OSI 最底下的三層網絡功能的傳輸行為,大概都已經定義好了,我們的網絡媒體與 MAC 及軟體位址之間都可以正确的去工作!是以倒是不用太去擔心!呵呵!是以我們隻要知道其原理就好了。接着下來的 TCP 封包最主要的也隻要知道 IP, port, messages( ACK, SYN... ) 這樣即可!這樣一來, TCP 可以整合來自上層的各個協定,而 IP 用來決定路由與傳送的途徑,呵呵!就可以知道能不能到達目的地啦!

網絡媒體的選擇:

網絡線的等級:

  嗯!現在我們知道網絡媒體是很重要的!那麼如何來選擇一個好的網絡媒體呢?先來看一看最常用的到 RJ-45 網絡線好了!目前 RJ-45 網絡的線等級,對于一般家庭或小型企業使用者而言,可以到達 CAT5 這個等級就很好了!嗯!?網絡線也有等級之分?是呀!剛剛不是說過了嗎?那個網絡媒體是很重要的,而由于網絡媒體中跑的訊号其實就是電子啦!由于電子訊号在行進的時候會産生一些電磁效應( 這裡指的是 cross talk ),這些 cross talk 就會影響整個傳輸的效能!為了避免 cross talk 的幹擾,人們想出了很多的方法來解決他!有所謂的『雙絞線, Twisted Pair』、或提供屏閉『Shielded, STP』等功能,來讓網絡線的 cross talk 幹擾降低,并提升整體的網絡傳輸速度負載量!而依據給予的不同的屏閉等級來将網絡線分級!目前最常見的應該就是 CAT5 這一級啦!最大的傳輸量可以到達 100 Mbps 呢!是以,請注意『在選擇網絡線的時候,至少您的網絡線等級要達到 CAT5 才行!』,否則即使您的網絡卡可以到達的傳輸量為 100 Mbps ,但是網絡線隻有 10 Mbps 時,呵呵!那麼最大的傳輸量将會僅成為 10 Mbps 呦!

并行線與跳線

  談完了網絡線的等級之後,接着下來我們來談一談所謂的『并行線』與『跳線』吧!剛剛提到了,在網絡媒體當中跑得是電子訊号,由于電子訊号需要是一個回路才能通(例如正極接負極),是以說這些訊号自然就需要成對啰!好了,那麼由于裝置的不同,是以網絡線的接腳也會跟着不同的!舉個例子來說,在 Hub 與 網絡卡之間的網絡線(不談 UpLink 孔時),使用的是常見的并行線,但是在網絡卡與網絡卡直接相連時,就需要使用不同接腳的『跳線』啦!由于具有兩種接頭,一般而言,我們将他分成 568A 及 568B 兩種接頭,這兩種接頭的 8 條纜線排列順序為:

 如果同一種接頭( 不論是 568A 或 568B )接在一條網絡線上面,就稱為并行線,而兩種接頭同時接在同一條網絡線上面,那就稱為『跳線』啦!

Hub 與 Switch

  在前面我們提到了網絡媒體的型态,使用的是 Bus 的型态,那麼如果是星形模式的話,就需要 Hub 或 Switch (中文稱的集線器與交換器)這種網絡媒體了!Hub 還比較好了解,基本上,他僅是将所有的網絡線給他連接配接在一起,并沒有考慮到其它的因素!是以,每部計算機隻要連上 Hub 之後,感覺上就好象連上 Bus 一樣啦!那麼『瞎米系』 Switch 呀!?為什麼 Switch 通常比 Hub 要貴上非常的多呢?他們的功能有哪裡不同?我們先不提較高階的不同點,最基礎的不同在于 Switch 多了一個可以記錄 MAC 與 port 的 table 啦!那是什麼呢?這樣說好了,當您的網域之中有一部計算機在進行實體廣播的時候(請注意,實體廣播主要是以 MAC 為傳遞的對象):

. 如果使用的連結器是 Hub 的時候,那麼所有連接配接到這部 Hub 上面的主機都會接到該廣播的封包;

. 而如果使用的是 Switch 時,由于上面的 table 已經記錄了 MAC 對應 Port 的資料,是以該封包将會『直接』經由該 port 來送出去給目的地主機!

  由于這樣的關系,是以在進行實體廣播的時候,就已經去除了可能産生封包碰撞的狀态了!是以上, Switch 與 Hub 所能承受的流量或許相同,但是 Switch 卻可以達到比較好的傳輸功能,用在大型的網域當中,嘿嘿!當然是 Switch 比較棒啦!這也是為什麼 Switch 會比較貴的原因呀!更簡單的來說, Hub 仍然屬于『共享媒體』的一種,然而 Switch 幾乎可以看做是『非共享媒體』了!更詳細的 Hub 與 Switch 功能的讨論可以在 這裡 找到。不過如果是隻有小貓兩三隻的我們這種家庭式的内部網絡呢?呵呵!簡易型的 Hub 就很夠了啦!不需要買到這個高檔的 Switch 說 ( 純粹個人觀點啦!)。

傳輸機關

  談個輕松一點的!那麼 10/100 Mbps ( Mega- bits per second )是什麼東西呢?怎麼大家都說我的網絡卡是 100 Mbps ,但是我隻能以最高約 12 MBytes 的速度在 Intranet 當中工作!?嘿嘿!别緊張,那麼 100 Mbps 是 Mbits !還記得網絡的資料量計算嗎?不曉得也沒有關系,可以直接告訴你:

1byte = 8bits

  了解了嗎?沒錯,由于網絡的速度在計算的時候主要是依照訊号來設計的,而電子訊号隻有 0 跟 1 呀!是以自然就選用最簡單的 bit 來計算了!是以,目前在廣告這些網絡的速度的時候,都是以 bits 來計算的,但是我們在硬碟的計算方面則是以 bytes 來計算的,呵呵~千萬記得,不要被迷惑了呢!是以,那個标榜 512/64 Kbps的網絡速度,呵呵,最大的實際 byts 為: 64/8 KBytes 啰!這是理論最大速度啦,是以正常的速度約在 45~50 KBytes 之間啰!了解了嗎?!

網絡卡與驅動程式

  結束了網絡媒體的選擇之後,接着下來自然就是網絡卡的選擇啰!網絡卡需要注意什麼事項呢?

. 驅動程式:

  還記得我們在 編譯核心的時候有提到,真正在進行工作的是什麼嗎?!沒錯!就是『硬體』!而要讓硬體正确的工作時,就需要核心的支援啦!是以,在一個計算機想要連上網絡時,最重要的就是你的網絡卡 ( Network Interface Card, NIC ) 是否被正确的激活了呢?!好了,那麼一個網絡卡要被正确的激活時,需要幹嘛?沒錯!就是需要加載适當的驅動程式啰!目前 Linux 預設的核心當中已經編譯好了相當多的網絡卡子產品了,你可以到 /lib/modules/`uname -r`/kernel/drivers/net 底下去看一看即可知道有沒有你的網絡卡的子產品啦!好啦!那麼如果你的網絡卡并沒有被正确的激活呢?!怎麼辦!?沒關系,還可以使用子產品挂載呀!可以寫入 /etc/modules.conf 裡頭!這樣一來就可以讓你的網絡卡正确的被激活啰!

. Media Access Control, MAC:

  前面就提過了,在網絡卡出廠的時候,其實就已經焊上了一個獨一無二的 address 了!這個即是所謂的 Hardware Address 啰!而在我們的系統上面, Linux 就由這個 Hardware Address 與下一單元我們要強力介紹的 IP 進行資料的傳遞與轉換,讓整個網絡卡硬體可以正确無誤的工作啦!這個硬體位址就是所謂的 Media Access Control ( MAC ) 這個東西啦!他是由六組16進位的數字組成的!例如我家裡的網絡卡位址為:『00:50:FC:22:9C:57』,這就是我的網絡卡 Address 啰!千萬不要小看這個東西,他在 Switch 及 DHCP 的時候很有用呢!如果稍具有一點想象力,你可以想象一下,這個東西就有點像是門牌号碼啦!無論如何,在網絡卡這一個地方,你需要特别留意這個 MAC 的視察方式,與驅動程式的加載方式!!

. 網絡卡選購要點:

  基本上,網絡卡的選購隻要『不要太麻煩的晶片組』就可以啦!盡量選擇目前新的 PCI 界面的網絡卡,而且強烈的建議使用螃蟹卡即可,但是仍然是有例外的:

1. 預計大型網站的架設:如果你是想要使用你的 Linux 來幫你架設大型主機的話,例如每天實時上線人數都可達到上百人的大型網站,這個時候就得要好一點的卡啦!因為好的網絡卡在資源的配置設定以及其它的資源配比方面會比較完善,不容易造成網絡當機或者是死亡!是以買一塊好一點的 10/100 Mbps 的 3Com or Intel 之類的網絡卡,是千萬省不得的!

2. 一般家用或者是小流量的網站:如果你的野心沒有這麼大,而是希望可以好好的學習 Linux 而已,并且使用的是 512 Kbps 的 ADSL 撥接系統,呵呵!那麼太好的網絡卡對你一點幫助也沒有啦!這個時候便宜的 200~300 塊的網絡卡( 即是所謂的螃蟹卡 )就可以用得很開心啦!我目前也都是使用螃蟹卡在我的宿網上面呢!

IP 觀念: IP, network, netmask, broadcast, gateway, ARP協定,

  接着下來要跟大家介紹的是 IP 這個東西,這的東西真是讓人要愛又怕呀!因為沒有了他,所有的網絡都是沒有用的咚咚!嗯!通過了網絡卡的安裝與驅動程式的加載之後,你的系統已經可以取得 MAC 并且也可以激活 NIC ( 網絡卡 ) 了,好了,那麼接着下來自然就是要讓你的計算機的門牌号碼被 Internet 上面其它的門牌号碼認識啰!這個時候就必須要有所謂的 Internet Protocol, IP 這個咚咚了!這個 IP 是所有網絡基礎裡面最基礎的東西,如果沒有了他,那麼網絡将不再是網絡了!

. IP 的組成:

  衆所皆知的,IP 是由四組 8 bits 的數字所組成的,最小是 0.0.0.0 ,最大是 255.255.255.255 ,可以這樣來看:

  就是這樣的一個模樣!由于原本是二進制的方式來計算的,為了适應人類的思考方式,是以經過十進制的表示之後,自然就是由 0 ~ 255 啰!好啦!從剛剛前面我們提到的『廣播』的觀念來看,假設您的環境是『網絡媒體共享』的環境且整個網域之中都以 IP 直接互相連接配接的話,那麼在第一次執行『軟體廣播』、或是因為主機找不到 ARP 表對應的 MAC 而執行的『軟體廣播』、抑或者是在『實體廣播』的傳送與監聽接段,哈哈!『ㄟ西郎!』因為每發出一個封包可能需要 255x255x255x255 部計算機同時響應!那麼很可能就會造成嚴重的封包碰撞或者是網絡停頓的狀态!是以,設定 IP 的朋友們很聰明的将整個 IP 段分成 Network + Host ( 網域 + 主機 ),在同一個 Network 當中,每一個 Host 都必須是獨一無二的!何解?我們來以一個 C Class 的例子來談一談好了!假設是 192.168.0.0 ~ 192.168.0.255 這個例子來談:

  前面的三組數字稱為 network ,而最後面的一組數字就被稱為是 host 啰!他有什麼特異功能呢?還記得軟體廣播與 ARP 表的說明嗎?對啦!當你的主機發出要求訊息到你的網絡媒體上面時,由于是網絡層的要求了,是以在訊息當中顯示的目标 MAC 為 FF:FF:FF:FF:FF:FF,是以其它主機會先接收該封包,并且檢驗裡面的 IP 要求,如果不是在同一個網段内的,就會将封包給他丢棄啦!而如果是同一網段内的話,就會給予響應!也就是說『如果在同一個網段之内,所有的 IP 将不需要透過 router 而可以互相直接溝通!』在上面的例子當中,當我們以 192.168.0.0 ~ 192.168.0.255 的 IP 的計算機連在一起時,他們将可以直接進行資料傳送!是以呢,呵呵!當然就是很友善啰!( 請注意,在這個系統當中, network 不可變,而 host 則是不可相同!否則相同的那兩個 IP 将無法無法聯機 ) !那麼目前我們将整個 IP 簡單的方類成為三個網段,分别設定為所謂的 A, B, C class :

發現了嗎?對啦! A Class 開頭是0,是以起始的數字就是 0~126, B Class 是 10 開頭,是以就是由 128-191,同理得:

 是以,我們剛剛那個 192.168.0.0 ~ 192.168.0.255 就是 C Class 啰!

 好了,是以簡單的來說,當使用 A Class 時,我們怎麼知道他是 A Class 呢?當然要配合 netmask 的說明啰!那麼假設 10.0.0.0 這個網段好了,他就可以想成是: 10.0.0.0/255.0.0.0 這樣的表示方式,也就是 IP/Netmask 的表示方式!好了,那麼剛剛提到的 C Class 的 192.168.0.0 呢?我們要設定他是 C Class 的話,呵呵!那麼自然就是 192.168.0.0/255.255.255.0 這樣的表示方式啰!好啦!那麼由于 A Class 是由八個 1 所組成的,而 C Class 的前面 24 的數字也都是 1 ,為了省麻煩,我們還有另一種表示的方法: 192.168.0.0/24 !嘿嘿!很好記吧!反正前面 24 個數字是固定的嘛!就這樣,是以 A Class 就是 10.0.0.0/8 啰!很容易記憶吧!

. Network 與 Broadcast :

  好了,剛剛我們也提到要分辨是否為同一個網段 ( network ) 還需要 netmask 的幫忙,那麼記錄了 netmask 有什麼好處呢?!還記得剛剛我們提過了吧,在『同一個網段當中,各主機将可以直接進行資料溝通』對吧!假設在一個具有『共享媒體』的環境中,當我的計算機有資料要傳送出來的時候,我就會在『同一個網段』的計算機傳送一個訊息,說『喂!我有資料要送出來啰!你們停下來聽一聽,等我送出去之後你們再繼續你們的工作!』呵呵!沒錯,這就是所謂的『硬體廣播』方式傳遞啦!而如果您常常需要使用到『軟體廣播』時,那麼這個 netmask 假如是 255.255.255.0 這個 C Class ,而我們依舊是使用 192.168.0.0 這個東西當作例子的話,那麼不難想象的到,我的封包要傳送出去,就得向 255 個計算機查詢并等待響應,光是這個查詢的時間可能就要造成這兩百多部計算機停頓下來聽你的封包的結果,唉~速度太慢了吧!!尤其是如果是 B Class 的環境呢?嘿嘿!就有 255*255 部計算機要停頓下來監聽你的需求.... 哇!這樣怎麼可能造成高效率的網絡環境呢?!是以啰『網絡布線模式(媒體共享與否)』與『netmask 的設定』就成了重要的課題了!

這裡請特别留意:

  network  :同一個網段裡面,HOSTID 都為零的位址;

  broadcast :同一個網段裡面,HOSTID 都為 1 的位址!

  基本上,如果是便于記憶的話,您可以想象一下, network 就是同一網段的第一個 IP 位址(因為 hostid 都為 0 ), Broadcast 則是最後一個 IP 位址(因為 hostid 都為 1 )。

  那麼為了解決一下『軟體廣播』的範圍,( 由于如果軟體廣播的響應數量變少了,是以網絡效能會變的比較好一些!) 我們可以再進行 Subnet 的切割呀!好了,假設我要将剛剛我的 192.168.0.0 在切成兩個子網域呢?可行嗎?當然可行啰!剛剛不是說過嗎?我們的 netmask 可以作為切割網域時候的确認用途,嗯!這個時候如果将已将占用了 24 個 bits 的 network 在加一個 bit 的話,成為 25 bits ,那麼會變成什麼呢?

 這樣一來,由于多花費了一個 bit 給 network 了,是以 network 分别是 192.168.0.0 及 192.168.0.128 這兩個

 呵呵!那麼一來,當您的主機要進行『軟體廣播』的時候,接受該訊息的計算機數将可減少一倍!哈哈!這樣子一來區域内的網絡流量就更棒啰!OK!這個觀念給他用在實際的社會上,我們的 ISP 不是常常在說『固定制 IP 的給八個固定的 IP 』嗎?呵呵!那個就是在細分成最後面的三個 host 啦!也就是 netmask 是 29 啰

  11111111.11111111.11111000

  是以 host 最大就是 111 最小就是 000 ,轉成十進制就是 8 個啦!( 0 ~ 7 )這樣說不知道您了不了呢?

. Gateway:

  再來又要頭痛了!那麼什麼是 gateway 呀!?說的簡單一點:在同一個 network 底下,各 IP 可以直接進行溝通,但是在不同的 network 底下,則需要藉由 gateway 來進行資料的傳遞!是以,當您的主機發現該封包的 IP 不在同一個網域内時,就會自動的将封包傳送到 gateway 上面去啦!而由于你的主機與 gateway 是可以直接進行溝通的,是以 gateway 與 你的主機『一定需要在同一個 network 當中』,這個就沒有問題了吧!!

. 預留 IP ==> 保留 IP 與内部循環網絡:

  還有一點也是衆所皆知的,就是目前的網絡的 IP 網段越來越少了!那怎麼辦?!呵呵!别擔心,當初規劃的時候為了預防這個問題,已經有規劃出幾個網段來作為『内部網絡的預留 IP 』之用,那麼這些 IP 網段有哪些呢?依舊分成三個 Class ,分别是:

o A Class:10.0.0.0 - 10.255.255.255

o B Class:172.16.0.0 - 172.31.255.255

o C Class:192.168.0.0 - 192.168.255.255

  由于這三個 Class 的 IP 是預留使用的,是以并不能直接作為 Internet 上面的連接配接之用,不然的話,到處都有相同的 IP 啰!那怎麼行!網絡豈不混亂?是以啰,這三個 IP 網段就隻做為内部網域的 IP 溝通之用,也就是說,他有底下的幾個限制:

o 私有位址的路由資訊不能對外散播 (就是内部網絡咯);

o 使用私有位址作為來源或目的位址的封包,不能透過 Internet 來轉送 (呵呵!當然啰!不然網絡會混亂);

o 關于私有位址的參考紀錄(如DNS),隻能限于内部網絡使用(一樣的原理啦!)

  這個預留的 IP 有什麼好處呢?呵呵!由于他的私有路由不能對外直接提供資訊,是以呢,你的虛拟網絡将不會直接被 Internet 上面的 Cracker 所攻擊!但是,當然啰,你也就無法以保留 IP 來『直接上網』啰!是以相當适合一些尚未具有實體 IP 的企業内部用來規劃其網絡之設定之用!否則當你随便指定一些可能是實體 IP 的位置來設計你的企業内部的網絡設定時,萬一哪一天真的連上 Internet 了,那麼啟不是可能會造成跟 Internet 上面的 IP 相同了嗎?!這可不是鬧着玩的,要整個将你原先規劃的 IP 網段整個重新調整過呢!哈哈!累死了!那麼萬一你又要将這些保留 IP 送上 Internet 呢?呵呵!這個簡單,設定一個簡單的防火牆加上 NAT ( Network Address Transfer ) 主機設定,你就可以透過 IP 僞裝(不要急,這個在後面也會提到!)來使你的保留 IP 的計算機也可以連上 Internet 啰(雖然不是真的直接,但是很像『直接上網』呢!)

  好了,那麼除了這個預留的 IP 網段的問題之外,還有沒有什麼其它的怪東西呢?呵呵!當然是有啦!不然我幹嘛花時間來唬 XX 呢!?沒錯,還有一個奇怪的 A Class 的網域,那就是 lo 這個奇怪的網域啦 ( 注意:是小寫的 o 而不是零喔! )這個 lo 的網絡是當初被用來作為測試作業系統内部循環所用的一個網域!簡單的說,如果你沒有安裝網絡卡在你的機器上面,但是你又希望可以測試一下在你的機器上面設定的資料到底可不可以被執行,這個時候怎麼辦,嘿嘿!就是利用這個所謂的内部循環網絡啦!這個網段在 127.0.0.0/8 這個 A Class ,但是預設的主機 ( localhost ) 的 IP 是 127.0.0.1 呦!是以啰,當你激活了你的 WWW 伺服器,然後在你的主機的 X-Window 上面執行 http://localhost 就可以直接看到你的首頁啰!而且不需要安裝網絡卡呢!測試很友善吧!此外,你的内部使用的 mail 怎麼運送郵件呢?例如你的主機系統如何 mail 給 root 這個人呢?嘿嘿!也就是使用這一個内部循環啦!當要測試你的 TCP/IP 封包與狀态是否正常時,可以使用這個呦!( 是以哪一天有人問你:嘿!你的主機上面沒有網絡卡,那麼你可以測試你的 WWW 伺服器設定是否正确嗎?這個時候可得回答:當然可以啰!使用 127.0.0.1 這個 Address 呀!

  好啦!那麼說來的話,一組成功的網絡設定需要哪些資料呢?呵呵!就是:

1. IP;

2. network;

3. netmask;

4. broadcast;

5. gateway

  沒錯!就是這些資料!如果是 ADSL 撥接的話,這些資料都是由 ISP 直接給你的,那你大可放心的直接使用,但是如果是固定制(如學術網絡)的話,那麼就得使用上面的設定啰!缺一不可呢!以 192.168.0.0 這個 C Class 為例的話,那麼就是:

1. 192.168.0.1~254;

2. 192.168.0.0;

3. 255.255.255.0;

4. 192.168.0.255;

5. 自訂(依你的區網設定而異)

TCP 封包概念: 防火牆, TCP_Wrappers,

. TCP 封包:

  說完了 IP 之後,自然就不能不提 TCP/IP 這個架構底下的 TCP 封包啰!這個 TCP 是 Transmission Control Protocol 的意思,字面上的意思就是傳輸控制協定啦!嗯!還真是不錯的字眼!這個 TCP 就是實際在『傳送資料封包』的協定啦!剛剛我們有提到了 IP 這個東西嘛!那麼我們怎麼将資料寄到其它的地方去呢?很簡單,就是系統先将我們的資料打包,然後在這個包裹的上面寫上了『來源 IP 與埠口』及『目的地 IP 與 埠口』,有了這個 IP 門牌,及 埠口 樓層,我們就可以将資料封包正确無誤的寄到目的地啦!是以啰,要有 TCP 自然就必須要有 IP (因為 TCP 上面需要記錄 IP 來源與目的地啊!)而要有 IP 就必須要有網絡卡(必須要有這個東西才行嘛!)然後要網絡卡正确的工作又需要正确的驅動網絡卡!這樣一層一層的下來,嘿嘿!就不難解決我們的網絡問題啦!(當然啰, TCP 并不是這麼簡單的東西,不過我們這裡又不是再開班授徒!是以就講得很簡單啦!有興趣的趕緊買本書來看先!)

. 端口 ( port ):

咦!剛剛提到了 TCP 裡面怎麼有個陌生的名詞?『埠口』?呵呵!其實說穿了,也沒有什麼了不起的,你可以想象成 IP 就是某家銀行,而埠口就是銀行裡面的各個視窗啦!是以當 TCP 的封包進入到目的地 IP 主機之後,還要視當初送出這個 TCP 封包的時候,我們需要這個 TCP 封包送到那個埠口去!這是因為每個端口口的功能都不一樣!最常見到的埠口有這些:

21-20:FTP

22 :SSH

23 :Telnet

25 :SMTP ( e-mail )

80 :WWW

110 :POP3 ( e-mail )

  是以啦,當我們将資料丢到目的地主機上面的時候,我們的資料并不是亂丢的啦!而是要丢給實際在負責該封包解析的視窗(埠口)才是呢!那麼這些服務對應的埠口在哪裡可以查到呢?嘿嘿!你的主機裡頭就有檔案可以負責翻譯啦!那就是鼎鼎大名的: /etc/services 這個檔案啦!馬上給他使用 vi 進入看一下(像不像在上課! ^_^""),當我們激活一個服務的時候,有可能該服務是直接以 port 來激活的,也有可能是經由 /etc/services 對應的 port 号與服務名稱來比對的!這個可能依照寫作之作者的不同而異!無論如何,我們要查詢一個服務的基本埠口時,就可以藉由查詢此一檔案來簡單的得知啰!

. 防火牆概念:

  好啦!那麼提到了 TCP 就不能不稍微聊一聊甚麼是『 Firewall 』呢?簡單的來說,最簡易的 firewall 就是藉由『分析 TCP 封包,并經由一些既定規則,來将不想讓某些 IP 或者是某些埠口的封包踢掉!』舉個例子來說,我們都知道 Telnet 似乎不怎麼安全,而由上面的埠口看到, telnet 是 port (埠口) 23,那麼隻要有任何的 TCP 封包帶有 port 23 的要求時,你就将他擋到門外!嘿嘿!這就可以稱作是防火牆啦!這個部分我們會在後頭的 iptables 在詳細的說明一下!

. TCP_Wrappers:

  除了 TCP 分析的 iptables 軟體之外,我們可以藉由相當簡單的 TCP_Wrappers 來分析 TCP封包呢!這個功能就更簡單啦!單純的使用 /etc/hosts.allow 及 /etc/hosts.deny 這兩個檔案的設定值來解析 TCP 封包的規則,并将其設定抵擋原則,嘿嘿!馬上就具有最簡易的防火牆機制啰!這部份我們也會在後續繼續提及!

Gateway 與 Router :

Gateway 與 Router 也是節點當中相當重要的一環,他的主要工作是:

. 将兩個不同的網域 ( network ) 進行轉譯的功能;

. 制作路由 ( route ) 的功能。

  剛剛在上頭我們知道在同一個 network 當中,資料可以在兩個 IP 之間直接溝通,那麼如果不在同一個 network 呢?舉個例子來說,如果在上面的圖示當中,那個 PC1 的 IP 是 192.168.0.1 而 PC2 的 IP 是 192.168.1.1 的話,而且兩者之間并沒有使用一些通訊協定,單純隻以 TCP/IP 來溝通時,由于位在不同的網段,是以正常狀态下『兩者之間是無法直接聯機的』,這個時候就必須要透過轉譯器 ( Router ) 的協助啦!這個轉譯器的功能其實不隻如此,他還可以轉譯不同的作業系統的通訊協定等等的,不過這裡我們僅簡單的讨論一下他的功能之一而已,Router 就是負責溝通兩個或者是多個不同的網段的封包連接配接啦!是以,如果你的網絡切的很細時,由于主機與 router 需要在同一個網域裡面,呵呵,這個時候就得需要很多的 router 來進行不同 network 之間的連接配接了,否則不同的 network 怎麼連接配接~? Linux 目前也可以用來作為 Router 呦!這個在後續我們提到 Router 的時候再來說明!

  好了,知道不同的 network 之外,來讨論一下,什麼是『路由』呢?路由就是『讓你的資料封包可以經由 route table 找到下一個要去的 IP 位址』。簡單的以我們系上的網絡架構來進行說明,我的工作機假設 IP 是 140.116.44.125 好了,那麼我的封包如果是要傳送給 140.116.44.202 時,由于我們系上是一個 C Class 的網域,是以 125< --> 202 可以直接傳遞!但如果我的資料封包是要送到 tw.yahoo.com ( 202.1.237.21 ) 去呢?這個時候我的 125 就會先判斷我的路由表 ( route table ) 看看預設的網關 ( gateway ) 是哪一部計算機,然後他會将 資料封包傳送到該 gateway 主機上去,而 gateway 主機在經由判斷他自己的路由表,來判斷這個資料封包下一個節點要傳送到哪裡去!?這一傳再傳最後才能到達 tw.yahoo.com 這部機器上!

  是以, route table 是相當重要的,你的 gateway 就相當的重要啰!因為你的所有的非 network 的封包都是經由 gateway 送出去的,萬一你設定 gateway 錯誤時,嘿嘿!那麼自然就無法将你的資料封包正确的傳導出去啰!這是目前在設定 網絡參數 當中最容易被搞錯的地方啰!

其它讨論:何為實體 IP, 保留 IP, 浮動式 IP, 與動态 IP

. 實體 IP:就如同前面的 IP 觀念裡頭提到的,在網絡的世界裡,為了要辨識每一部計算機的位置,是以有了計算機 IP 位址的定義。一個 IP 就好似一個門牌!例如,你要去微軟的網站的話,就要去『 207.46.197.101 』這個 IP 位置!這些可以直接在網際網絡上溝通的 IP 就被稱為『實體 IP 』了。

. 保留 IP:不過,衆所皆知的,IP 位址僅為 xxx.xxx.xxx.xxx 的資料型态,其中, xxx 為 1-255 間的整數,由于近來計算機的成長速度太快,實體的 IP 已經有點不足了,好在早在規劃 IP 時就已經預留了三個網段的 IP 做為内部網域的保留 IP 之用。這三個預留的 IP 的網段分别為:

  不過,由于是内部的保留 IP ,是以當您使用這些位址的時候,當然是有所限制的,限制如下:

o 私有位址的路由資訊不能對外散播

o 使用私有位址作為來源或目的位址的封包,不能透過Internet來轉送

o 關于私有位址的參考紀錄(如DNS),隻能限于内部網絡使用

  由以上的限制我們可以知道,保留 IP 僅能使用于内部網絡(或者說是區域網路絡内),而無法直接與外部的 Internet 進行資料的流通。如果需要連上 Internet 時,就必須要使用一部具有 NAT 功能的主機(或者是 IP 分享器)來作為封包溝通的轉換站了。但這也給我們架設IP網絡造成很大的友善,比如:

  即使您目前的公司還沒有連上Internet,但不保證将來不會啊。如果使用公共IP的話,如果沒經過注冊,等到以後真正要連上網絡的時候,就很可能和别人沖突了。也正如前面所分析的,到時候再重新規劃IP的話,将是件非常頭痛的問題。這時候,我們可以先利用私有位址(保留 IP )來架設網絡,等到真要連上intetnet的時候,我們可以使用IP轉換協定,如NAT (Network Addresss Translation)等技術,配合新注冊的IP就可以了(不過這可需要大學問喔)。

. 固定 IP 、動态 IP 與浮動式 IP:基本上,這兩個東西是由于近來網絡公司大量的成長下的産物,例如,你如果向中華電信申請一個商業型态的 ADSL 專線,那他會給你一個固定的實體 IP ,這個實體 IP 就被通稱為『固定 IP 』了,因為你每次藉由這一個 ADSL 上網時,你的 IP 是不變的。而若你是申請計時制的 ADSL ,那由于你的 IP 可能是由數十人輪流使用,是以你每次重新開機上網時,你這部計算機的 IP 都不會是固定的!于是就被稱為『動态 IP』或者是『浮動式IP』。基本上,這兩個都是『實體IP』,隻是網絡公司用來配置設定給使用者的方法不同而産生不同的名稱而已!(注:如 Giga 的撥接式固定 IP 并不是固定制的 IP 呦!還是屬于浮動式類型的 IP 啦!隻是每次配置設定的 IP 都是同一個而已!)

轉載自:http://www.xici.net/#u11244271/p7.htm

關注90後夢想大師,夢想從未止步.