動作

InternetBase

出自 Itsmw

網路概論簡介

 本文主旨在說明一些網路的基本理論,提供給學校網管人員參考。希望對網管在網路故障偵錯、伺服安裝與設定等能有一定的幫助。但因筆者學識有限,所以只能提一些簡要概念,敬請見諒。若有不足之處,請大家參考下面兩篇網路文件:


 網路(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等注重資料完整性的網路服務
UDP:強調資料傳送順暢;多用於多媒體資料或網路電話語音傳送
相關設備:防火牆等

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 是否處在同一網段
    • 同網段找到對方的網卡,把封包送出去
      • IPv4:透過 ARP 查詢,找到該網卡之 MAC Address ,經由集線器傳送封包
      • IPv6:透過 NDP(Neighbor Discovery Protocol)之 neighbor solicitataion message 暨 neighbor advertisement message,找到目的地 MAC 位置後,把封包送至對方主機
    • 不相同把封包交給路由器處理
      • IPv4:由 ARP 查詢,找到路由器的 MAC Address,直接交給路由器,路由器再根據目的地 IP Address 送至對方主機
      • IPv6:由 NDP 的 Router solicitation message 暨 Router advertisement message,找到路由器 MAC 位址,再交由其處理傳送

  • 判斷是否相同網段的方法,請見下一段文件「IPv4網段分割」之簡要說明
  • 關於 IPv6 的芳鄰探索協定(Neighbor Discovery Protocol; NDP),可參考下列文件



以IPv4為例細說不同網段兩台電腦交換資料的過程

 本文是承接上面資料傳送部分,進一步以圖片來加強說明。文章是以 IPv4 作為說明的主軸,與 IPv6 的差異點僅在尋找 MAC Address 的過程不同(IPv4→ARP; IPv6→NDP),其餘的部分是一樣的。


同網段內兩節點間如何溝通

Net a hub b.png

甲主機有資料要送到乙主機,資料封包會由應用層到資料鏈結層,層層加上 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)時:由網路應用程式接收來自甲主機的資料


網內與網外節點如何溝通

Net a router b.png

甲主機有資料要送到另一網段的乙主機,其傳送過程如下:

  • 資料封包下到網路層時:加上來源 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

  • 提示:請自行把上述兩個值轉成二進位值,再進行分析,便可得解。






IPv6 文件

 相信在看完 IPv4 的相關觀念後,再來理解 IPv6 便不會太大困難。而關於 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 清單。

Net bridge.png



交換式集線器 (L2 Switch Hub)

 講到這裡,諸位有沒有發現:【為什麼我們學校都沒上述的設備?】。這是因為,上述網路設備皆是古董級的東西了。從現在起,我們要開始講目前各校會使用到的設備,首先,從交換式集線器 (Switch Hub)講起,它與 Bridge 一樣,是屬於第二層的設備,只看得懂 MAC 。


Net hub.png

 從橋接器的分區模型中,來思考一下:【如果買多一點橋接器,每台電腦皆有其專屬的橋接器,那不就不必擔心碰撞的問題了,不是嗎?】。亦即,每個分區只放一台電腦,資料封包自然也就碰不著了。實現這個理想的產品就叫《交換式集線器》,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 ,所以,它是隸屬於第三層的網路設備。

Net l3switch.png



本文小檔案

題名: Title::InternetBase
作者: Creator::itsmw作者群
主題/關鍵詞: Subject::net,internet,tcp/ip,osi 7,ipv4, ipv6
簡述: Description::網路的基本理論
出版者: Publisher::台南縣教網中心 itsmw 計畫
其他參與者: Contributor::itsmw作者群
日期: Date::2010-5-5
文件類型: Type::02技術報告
Type::07網路相關
資料格式: Format::text/html
文件識別代號: Identifier::http://myip.tw/itsmw/index.php?title=InternetBase
來源: Source::http://myip.tw/b2ddoc/LinuxBase/m1_netbase.html
語言: Language::zh-TW
相關資源: Relation::http://myip.tw/b2ddoc/LinuxBase/m1_netbase.html
文件涵蓋範圍: Coverage::與平台無關
版權規範: Rights::GNU Free Documentation License 1.2