網路技術概論(Linux主機伺服器架設技術)
網路技術概論(Linux主機伺服器架設技術)
網路的基本理論,提供給學員網管人員參考。希望對網管在網路故障偵錯、伺服安裝與設定等能有一定的幫助。
網路(NetWork)是利用傳輸線(或無線電波),把四散的電腦連結起來,使彼此的資料可以互通。
在早期,台灣網路尚未十分發達之前,電腦與電腦之間如果要交換文件,大多是靠磁碟片來做為媒介。
只是有時資料量太大,多張碟片就會變成一種麻煩。因此在當時,會利用電腦列表埠,以 LL3 線材連結,再塔配特定軟體,把兩台電串接起來,以方便交換檔案。
網路,就有點像是這個樣子,但更加的複雜化。
到了現代,大多數人對網路的印象就是上網(surf the internet),因為在網路的世界,可以玩游戲、看新聞、購物…等。
在這樣的概念之下,我們可以發現有兩個主體觀念出現:一是網站服務主機 (Server),如 tw.yahoo.com,它可以提供新聞、購物、拍賣、字典…等眾多服務,等客人上門。
另一個是:客戶端電腦(Client),它只負責讓使用者在網址列上輸入網址,按個「Enter」,便把對方的網頁秀在螢幕上。
而這兩者之間地理上的距離,可以是近在咫尺,也可能是遠在天邊。
為達成此目的,在此簡要介紹。
網際網路InterNet
我們知道,網路叫「Net」,以學員而例,整個電腦用網路線接起來,便會形成「網際網路」。
依此理論,兩所學員互連,便是「校園網路」與「校園網路」之間互連。
而英文字:「inter-net」便是代表了這個狀況:「網路與網路之間」互連,簡言之,InterNet 就是全世界串在一起的網路系統,讓我們可以在學員連到自己學員的官方網站,也可以連到美國 amazon 買書,或是大陸淘寶網購物。
網路基本概念
OSI 七層次架構與 TCP/IP 四層次架構
OSI 七層
TCP / IP 四層
簡要說明
Layer 7
應用層
應用層
功能:應用程式,如 IE, Firefox, FTP…等
相關設備:電腦、網路電話、入侵防禦系統(IPS)等
Layer 6
表達層
Layer 5
對談層
Layer 4
傳送層
TCP / UDP
功能:控制資料傳輸之正確性;為應用程式開設服務窗口(Port)
TCP:強調資料正確;多用於 HTTP, FTP等注重資料完整性的網路服務
UPD:強調資料傳送順暢;多用於多媒體資料或網路電話語音傳送
相關設備:防火牆等
Layer 3
網路層
IPv4 / ICMP / ARP
IPv6 / NDP(芳鄰探索協定)
功能:定義網際網路位址(v4/v6);網卡 MAC 位址之對映
相關設備:路由器或 L3 Switch
Layer 2
資料連接層
Host-to-Network
MAC
功能:實際負責網路封包的傳送與接收之硬體設備
每張網卡皆會有一組全球唯一值的 MAC 位址
相關設備:有線/無網網卡、集線器
Layer 1
實體層
網路的相連,中間隔了很多各種不同的設備。要讓它們之間能互通有無,就必須遵循相同的語言(通訊協定),否則你講你的,他講他的,誰也上不了網。基於這個構想,國際標準組織(ISO)就制定一組開放系統互連(OSI)參考模型。TCP/IP 網路架構也是基於這個理念所發展而成,而且,它在美國強力的推廣之下,已然取得全球的認可,成為全球互連的主要標準。以下,把上面兩篇引薦文繁雜的內容,整理簡化成以下幾個重點:
Socket
1. Server 應用程式啟動後,必先建立網路 Socket ,而這個 Socket 包含了 IP 位址及監聽 Port Number(1-1024)
2. Client 應用程式啟動並開始連線時,同樣會建妥 Socket,只是 client 的 Port Number 介於 1024 -65535
3. Client 連線至 Server 時,便形成 Socket pair,進行連線並傳輸資料
Soket Pair
Client應用程式
例:Firefox
→
Server 應用程式
例:Apache2+PHP
來源 IP Address
例: 163.26.182.99
目的 IP Address
例: 163.26.200.3
來源 Port
例:port 6524
目的地 Port
例: 80
資料傳送
* Server 端會先把所有等待傳輸的資料切割打包(建立封包),再分批送至 client 端。 而且它並不是乖乖的把所有封包依順序走同一條路(路由)到目的地,而是由路由器挑出所有可能的較短路徑,分批送出。到了目的地之後,再組合回來。
* 每個封包(Packet),皆分成 header 及 data 兩大部分,其中 header 便記載來源 IP,目的地 IP,以及通訊協定等資料
* 封包送至 Client 時,要先判斷目的地的 IP Address 是否處在同一網段
o 同網段 → 找到對方的網卡,把封包送出去
+ IPv4:透過 ARP 查詢,找到該網卡之 MAC Address ,經由集線器傳送封包
+ IPv6:透過 NDP(Neighbor Discovery Protocol)之 neighbor solicitataion message 暨 neighbor advertisement message,找到目的地 MAC 位置後,把封包送至對方主機
o 不相同 → 把封包交給路由器處理
+ IPv4:由 ARP 查詢,找到路由器的 MAC Address,直接交給路由器,路由器再根據目的地 IP Address 送至對方主機
+ IPv6:由 NDP 的 Router solicitation message 暨 Router advertisement message,找到路由器 MAC 位址,再交由其處理傳送
* 判斷是否相同網段的方法,請見下一段文件「IPv4網段分割」之簡要說明
* 關於 IPv6 的芳鄰探索協定(Neighbor Discovery Protocol; NDP),可參考下列文件
o http://140.116.82.34/dclin/technique_paper/IPv6/neighbor_discovery.htm
o http://technet.microsoft.com/en-us/library/cc781068%28WS.10%29.aspx
o http://www.cu.ipv6tf.org/literatura/chap6.pdf
o http://www.cu.ipv6tf.org/literatura/chap4.pdf
以IPv4為例細說不同網段兩台電腦交換資料的過程
本文是承接上面資料傳送部分,進一步以圖片來加強說明。文章是以 IPv4 作為說明的主軸,與 IPv6 的差異點僅在尋找 MAC Address 的過程不同(IPv4→ARP; IPv6→NDP),其餘的部分是一樣的。
甲主機有資料要送到乙主機,資料封包會由應用層到資料鏈結層,層層加上 Header,其中比較重要的是:
* 從應用層傳到網路層時:加上來源 IP 及目的地 IP
* 往下送至資料鏈結層時:加上乙主機的 MAC Address
因甲主機依其網路設定值,在判讀乙主機的 IP Adress 後知道,他們同處一個網段,因此直接加上乙主機的 MAC Address
* 最後封包由實體層送至 Switch Hub
當封包送到 Switch Hub 時,Switch Hub 經判讀封包的 Hearder 得知目的 MAC Address,便直接把封包丟給乙主機,完成傳送。乙主機接收封包之後,會從最下層,層層分解封包,分述如下:
* 上傳到網路層 (IP 層):解析出來源 IP Address
* 再往上到傳輸層 (TCP .or. UDP)時:解析出 port 值,依其值轉給適當之應用程式
* 到最上方的三層(process/application)時:由網路應用程式接收來自甲主機的資料
網內與網外節點如何溝通
甲主機有資料要送到另一網段的乙主機,其傳送過程如下:
* 資料封包下到網路層時:加上來源 IP 及目的地 IP
* 再往下到資料鍵結層時:加上 Router 1 的 MAC Address
因為甲主機分析後發現:乙主機與他並不在同一網段,所以他會把目的地的 MAC Address 設成 Gateway MAC Address,也就是《Router 1》,至於 Router 1 要如何建立路徑通往 Router 2 ,就不是甲主機的事情了。
* 送到 Router 1 的資料鍵結層時:Router 1 會把目的地的 MAC Address 改成 Router 2 ,並經由路由表判定,送至 Router 2
* 當資料封包送至 Router 2 時:Router 2 會根據網段內的 IP ←→ MAC 對照表(ARP 表),把資料封包送至乙主機
如果,Router 2 在 ARP 表找不到乙主機的 IP Address 與 MAC 對照時,會在網段內進行 ARP 廣播,向各節點詢問:【請擁有此 IP Address 的主機把 MAC Address 交出來】,乙主機接受到此訊息,便會對 Router 2 做 ARP 回應。得到乙主機 MAC Address 的 Router 2,便直接把封包傳給了它。
* 得到來自甲主機封包的乙主機,其處理程序與上例一致
IP 基本概念
IP 位址的英文為 Ineternet Protocol Address,它是各網路設備上的一組全球唯一識別碼,也可以說是「網路地址」,有了這個地址,電腦與電腦之間的資料才可以正確的被傳送。此時,有人也許會有一些疑慮? 「MAC 位址不也是全球唯一值,為何不使用它來擔任地址的工作?」。原因為: MAC Address 的編碼原則為【廠商識別】+【流水號】,因此只能從它了解其出廠別,無法知其所在的網段所在(地理位置)。因此,必須建立「網路地址」的機制,並依網段來區辨不同的使用團體(Network),進而找到使用者所在(IP Address)。目前,全球通用的 IP Address 版本有二:第四版(IPv4)及第六版(IPv6),而第四版已廣為全球共用,第六版目前仍待推廣。以下筆者針對這兩種版本,做一簡單的描述:
IPv4及IPv6位址表示法
IPv4 概念
IPv4 的網路位址是由四個中進位數字加三個點組成,例: 【163.26.200.1】。可是每一組數字,只允許從 0 到 255 之間,共28 個數字。也就是說,它是由四組 (0 到 28-1)數值所組合而成的符號,代表著某一特定網路地點。依此觀念可知,全球可用的網路節點數是 256 x 256 x 256 x 256 = 232 個節點。
IPv6 概念
第六版的 IP 位址表示法,稱之為 IPv6 。它改用 8 組,每組 4 個 16 進位值來表示,詳見上圖。依此其理論可用範圍為:
0000:0000:0000:0000:0000:0000:0000:0000 ~ FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
高達 2128 個節點,這麼多點,就算扣除一些保留用途的特殊範圍(FF0x, FE8x…)外,比起 IPv4 來,仍是巨量,依此便可解決 IPv4 的不足。
IPv4 網段分割
雖然目前全球通用的 IP 定址法版本有二,而且它們無論在「定址大小」、「虛擬IP」、「尋找 MAC」…等功能、做法有所不同,但網段分割這部分的原理相同,因此,筆者直接以 IPv4 為例,來解釋網段之分割原理。
無論是 IPv4 或 IPv6 ,它們可都是必須擔當起全球所有上網設備間的互連,在這麼龐大的網路節點上,設備間要能跨縣、跨國交換資料,就要有一套管理方式才可以,也就所謂的分段措施。他們把全部的 IP 切成一段段來分配。而且,每分割完一個網段,其第一個 IP 及最後一個 IP ,皆不可以使用。第一個 IP 稱之為【網段代表號】;最後一個 IP 是【廣播】。例如: 163.26.200.0 – 163.26.200.255 這個 C Class 的網段的 ".0" 及 ".255" 皆是不可運用的 IP。
TCP/IP 的分段是一種階層式定址法,也就是每一個 IP Address皆包含了兩種意義:一是網路位址,另一是主機位址。以 163.26.182.34 為例,其中 【163.26.182】這三組數字是該網段的網路位址,【.34】則是主機位址。判斷是否同段的運算法則為【遮罩】法,什麼是遮罩呢?就是用〔 IP 〕去和〔遮罩〕的二進位碼做 AND 邏輯運算,若兩組不同 IP 和某一遮罩 AND 邏輯運算完,得到相同的值,就代表他們處再同一段網段內。說明如下:
網路遮罩 NetMask
AND 運算
二進位的 AND 邏輯運算是說: 只有《1+1》才等於 1 ;其他相加皆是 0。亦即, 《1+0》《0+1》《0+0》皆等於 0。
舉列如下
請問以下兩組 IPv4 Addres,那一組的兩個 IP 是位於同一網段內? 它們的 NetMask 皆是 255.255.255.128
IP1: 163.26.108.130 → 10100011.00011010.01101100.10000010
IP2: 163.26.108.201 → 10100011.00011010.01101100.11001001
Netmask: 255.255.255.128 → 11111111.11111111.11111111.10000000
IP3: 163.26.100.130 → 10100011.00011010.01100100.10000010
IP4: 163.26.108.36 → 10100011.00011010.01101100.00100100
Netmask: 255.255.255.128 → 11111111.11111111.11111111.10000000
第一組:
IP1: 163.26.108.130 IP2: 163.26.108.201
AND
運算 10100011.00011010.01101100.10000010
+ 11111111.11111111.11111111.10000000
————————————–
10100011.00011010.01101100.10000000 10100011.00011010.01101100.11001001
+ 11111111.11111111.11111111.10000000
————————————–
10100011.00011010.01101100.10000000
結果 163.26.108.128 163.26.108.128
第二組:
IP3: 163.26.108.130 IP4: 163.26.108.36
AND
運算 10100011.00011010.01101100.10000010
+ 11111111.11111111.11111111.10000000
————————————–
10100011.00011010.01101100.10000000 10100011.00011010.01101100.00100100
+ 11111111.11111111.11111111.10000000
————————————–
10100011.00011010.01101100.00000000
結果 163.26.108.128 163.26.108.0
由以上 AND 運算結果得知,第一組得到同一個答案,但第二組則否。因此可說,只有第一組的兩個 IP Address 是位在同網段內。而且,而這個所算出的答案就是「網段代表號」,也就是前文所說的第一個不能動的 IP Address。
IPv4 網路分段原則
IPv4 的網段,會有所謂 A Class、B Class 及 C Class 等說法,至於,我們所說的 A class , B class, C class 到底是什麼意思呢?它可以是兩種意義:
(一). 國際網路組織分配 IP 網段給各國各組織,所制定的遊戲規則。如下表:
* A Class : 0 – 127.xxx.xxx.xxx 的 IP (0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx),皆是以一個 A Class 的量分配出去。
* B Class : 128- 191.xxx.xxx.xxx 的 IP(10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxx),分配時,是切成 B Class 的量分配出去。
* C Class: 192 – 223.xxx.xxx.xxx 的 IP(110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxx),分配時,是切成 C Class 的量分配出去。
* 224.xxx.xxx.xxx 的 IP 保留其他用途
(二). 另一意義是:它是一種計量單位
* 一個 A Class 的量: A.0.0.0 — A.255.255.255 共 256 x 256 x 256 = 16, 777,216 個 IP。
* 一個 B Class 的量: A.A.0.0 — A.A.255.255 共 256 x 256 = 65,536 個 IP。
* 一個 C Class 的量: A.A.A.0 — A.A.A.255 共 256 個 IP。
如何判定遮罩
在前文,筆者是給 IPv4 Address 及 Netmask,再去判斷這些 IP Address 是否位處同一網段。現在,如果只給一個 IPv4 Address 及其網段大小,那麼,要如何計算出遮罩的數字? 請見下文分解。
以一個 C Class 為例
我們以 163.26.200.0 一個 C Class 為例,它的範圍是: 163.26.200.0 — 163.26.200.255 。轉成二進位值如下:
10100011.00011010.11001000.00000000
│
10100011.00011010.11001000.11111111
建立遮罩的原則是:
* 【網路位址:不會變的部份,如 163.26.200:底下的遮罩值皆填 《1》】
* 【主機位址:會變的部份,如最後的 0 – 255:底下的遮罩值皆填《0》】。
依此原則:
* 遮罩二進位值: 11111111.11111111.11111111.00000000 (前面不變的填 1,會變動的部分填 0 )
* 遮罩十進位值: 255.255.255.0
* 由二進位值計算,共得到 24 個 《1》,所以本網段也寫成 163.26.200.0/24
* 值「24」在 IPv6 叫做 prefix 24,它代表子網路的大小
以半個 C Class 為例
我們以 163.26.108.128 開始之後半段 C Class 網段為例,它的範圍是: 163.26.108.128 — 163.26.108.255,轉成二進位值如下:
10100011.00011010.01101100.10000000
│
10100011.00011010.01101100.11111111
依上面的原則:
* 遮罩二進位值:11111111.11111111.11111111.10000000
* 遮罩十進位值:255.255.255.128
* 由二進位值計算,共得 25 個《1》,所以本網段也可以記成 163.26.108.128/25
給某個網址及遮罩,請找出其網段代表號及廣播位置
實務上,若只給您一個 IP 值,再告訴您網路遮罩,您要如何算出此網段之代表號及廣播,並以另一型式寫出該網段。
範例: 163.26.119.131 / 255.255.255.192
10100011.00011010.01110111.10000011/11111111.11111111.11111111.11000000
* 分析一:前面共有 26 個數字不能變化
* 分析二:所以 10100011. 00011010. 01110111. 10 (163.26.119.128 是不會變化的)
* 分析三,最小值(代表號)便是: 10100011. 00011010. 01110111. 10000000 (163.26.119.128)
* 分析四,最大值(廣播)便是: 10100011. 00011010. 01110111. 10111111 (163.26.119.191)
* 因此,網段另一種寫法是: 163.26.119.128/26
作業: 163.26.62.90 / 255.255.255.192
* 提示:請自行把上述兩個值轉成二進位值,再進行分析,便可得解。
網路設備如何配置 IP?
IPv4 分配原則
網路設備介接至學術網路時,皆會得到一個網段,可能是 1 個 C Class,也可能是半個或 1/4 個 C Class,而網段內某些 IP 是有固定用途的,解說如下:
* Network:第一個 IP 是網段代表號
* DNS Server:第二個 IP 給 DNS Server 使用
* 防火牆: 倒數第三個 IP
* L3 Switch (路由器):倒數第二個 IP
* 廣播:最後一個 IP
IPv6 分配原則
* IPv6 各校配發查詢 http://voip.tnc.edu.tw/ngn/ipv6-iplist.pdf
* DNS1 Server:2001:288:75xx::1
* DNS2 Server:2001:288:75xx::2 (非必要)
* L3 Switch (路由器): 2001:288:75xx::ff
IPv6 文件
相信在看完 IPv4 的相關觀念後,再來理解 IPv6 便不會太大困難。而關於 IPv6 的解說,下面這篇文章已著墨甚多,請大家參閱。
* IPv6 參考文件: http://ipv6.tnc.edu.tw/ipv6
網路硬體
在講完軟體的通訊協定暨其簡易的運作原理後,再來要談談實現這些運作的硬體設備有那些,並簡單交代一下其歷史,以方便讀者了解一些名稱之命名由來。
各種網路拓樸
網路拓樸可以是兩種意義:
1. 依理論上電子訊號在設備間交換所走的路徑及其原理而定
2. 依實際上網路設備安裝位置及佈線型式來看
目前,在各大市面上所販賣的設備,無論是有線或無線,幾乎都是採用乙太網路 (ethernet)之通訊協定(802.3)產品,而這也是各國中小學所採用的硬體設備。所以在下文,筆者只針對乙太網路做詳細的介紹。其餘,請自行參考相書籍。
乙太網路(ethernet)簡介
資料傳遞原理
乙太網路訊號傳送的拓樸是採用【匯流排式(BUS)+廣播】式,也就是,大家都是必須經由同一條公共走道送出訊息。而且,甲電腦要送資料給乙電腦時,是由甲把資料經由匯流排( BUS)廣播到所有節點。每個節點接到封包後,發現不是他的,便直接丟棄。只有乙電腦拆封後,看一下收件人是自己,才會把它接收起來。
因為此一特性,所以在 BUS 上,一次只允許一台傳送資料,若兩台同時傳送,就會發生碰撞(Collision)。為了解決此問題,它採用了載波感應多重存取/碰撞偵測 (Carrier Sense Multiple Access / Collision Detection; CSMA/CD) 基頻技術。也就是說,一台設備要送訊號之前,要先聽一下(listen),道路是否正在使用中,若沒人用,才送出資料。若有人用,就再等。但即使如此,仍可能因兩台同時偵測到沒人用,同時送出封包而發生碰撞。一碰撞,此節點會立即發出擁塞(jam)訊息到 BUS 上。此一 BUS 上的設備接到 jam 訊息後,便會中止動作,進入等待狀態,過一段時間,才又隨機啟動傾聽/傳送的動作。
搭配早期的乙太網路設備圖 (請參考下圖),就很容易理解上述的原理。依圖示,我們發現電腦間利用 RG58 線材(類似電視第四台的訊號線),所建構成的 BUS 來溝通訊息。
Net rg58.png
橋接器 bridge
若同一條 BUS 的節點數太多台,導致碰撞的機率大增。網路會因為 jam 太多而緩慢不堪。因此,就產生了《橋接器》設備,來切割碰撞區域,如下圖所示。橋接器的兩側,皆是單獨的碰撞區域。A區的甲工作站要送資料給B區的戊工作站時。甲在A區先做廣播的動作,橋接器接收了此封包,經拆封後,發現收件人的 MAC 位置是在B區,它就會在B區再廣播一次。自然,戊工作站也就可以收得到。
問題來了:【橋接器怎麼會知道收件人的 MAC 位置在那一區?】。這是因為橋接器會為 A 及 B 區建立 MAC Address 清單。
交換式集線器 (L2 Switch Hub)
講到這裡,諸位有沒有發現:【為什麼我們學員都沒上述的設備?】。這是因為,上述網路設備皆是古董級的東西了。從現在起,我們要開始講目前各校會使用到的設備,首先,從交換式集線器 (Switch Hub)講起,它與 Bridge 一樣,是屬於第二層的設備,只看得懂 MAC 。
從橋接器的分區模型中,來思考一下:【如果買多一點橋接器,每台電腦皆有其專屬的橋接器,那不就不必擔心碰撞的問題了,不是嗎?】。亦即,每個分區只放一台電腦,資料封包自然也就碰不著了。實現這個理想的產品就叫《交換式集線器》,Switch Hub 每個 port ,都是一個橋接器,而且只連接一台設備。在其內部會動態記錄每個節點的 MAC Address,當有兩個節點間要傳送資料封包時,Switch Hub 便會依各自的 MAC Address 建立起兩者之間的專屬連線,資料一旦傳送完畢,立即切斷。由以上可知,集線器是在 OSI 七層次架構的第二層(資料連接層)運作,因此一般的集線器最前面會加個「L2」字樣,代表它只能根據 MAC Address 傳送封包。至於封包內的 IP 位址是第幾代(v4 or v6),與它完全無關。
Switch Hub 在實體佈線上,以單一集線器來看,是屬於星狀拓樸。也就是說,每個節點,皆把線材集中到它身上。再由它來為各節點間建立溝通的管道。但以整個學員的佈線來看,它是由一台台的集線器堆疊而成,看起來比較像是樹狀拓樸。因此,我們會有一個思考:「單一台集線器,當然符合每個節點皆有其單一MAC記錄,但多台集線器之間怎麼交換這些 MAC 位址?」,其實這個問題在 IEEE 802.3 通訊協定早就有妥善的規畫,而且硬體廠商只要遵循其規畫做成產品,便可互通。而使用者只要將這些集線器組合(switch hub set),想像成一台巨大的集線器就好。
交換式路由器 (L3 Switch Router)
交換式集線器只解決了校內網路各節點溝通的需求,如果,要上到學術網路 (TANet) 或是 InterNet ,又該怎麼辨?我們知道,在 Internet 的世界要找到對方,只能靠《IP Address》,而不是靠 MAC Address,可是校內的的交換器是第二層的設備,只記錄了各節點的 MAC Address ,根本無法憑 IP Address 找節點。那麼,校內節點,要連接到遠方的節點時,要怎麼辨?是不是要有一個設備,幫忙找出連結對方節點的道路,並把資料丟過去。而,這個幫忙找路的設備就叫【路由器】。
由於路由器必須要有能力解析 IP Address ,所以,它是隸屬於第三層的網路設備。