電腦網路與連結技術第十 三章 TCP/IP 與 Internet 連結技術 上一頁    下一頁

13-3 IP 協定

內容:

13-3-1 IP 封包格式

               IP 協定是 TCP/IP 網路之中最主要的協定,用來在廣泛複雜的網路上找到所欲連接之工作站,並負責雙方的連線。IP 通訊協定所採用的連接技術是『電報傳輸』(Datagram)(請參考本書第四章),主要工作有二:(1) 為每一部工作站定名,使成為網路唯一的識別名稱,有了這個名稱呼叫,才可以連結其它工作站,或被其它工作站連結,宛如電話號碼一般。(2)尋找連結路徑。在廣泛複雜網路之中,尋找出可到達目的地的最佳路徑。因此,IP 通訊協定是 TCP/IP 網路中最為重要、也最為複雜的通訊軟體。目前 Internet 網路已連結全世界上億的電腦,任何地區的網路只要透過簡單的路由器就可銜接上 Internet,每一部路由器的主要功能就是實現 IP 通訊協定功能,所以 IP 必須有足夠的共通性和連結性,本節就依照這個方向介紹 IP 通訊協定。首先,我們來觀察 IP協定的封包格式,如圖 13-5 所示,各欄位功能如下:

13-5 IP 封包之結構

(1) 版本(Version):4 位元。表示 IP 封包的 IP 版本。

(2) 網際標頭長度(Internet Header Length, IHL):4 位元。表示本 IP 封包標頭的長度(位元組表示)。範圍為 5 ~ 15,預設值為 5

(3) 服務型態(Type of Service, TOS):8 位元。其內容為 "PPPDTRUU"PPP 表示本 IP 封包的優先權(Precedence);D = 0 表示一般延遲(Delay),D = 1 表示低延遲;T = 0 為一般傳送量(Throughput),T = 1 為高傳送量;R = 0 為一般可靠度,R = 1 為高可靠度(Reliability);UU 保留未用。

(4) 總長度(Total Length):16 位元。是指該封包的總長度,包括封包標頭及資料的長度。範圍由 576 ~ 65535 位元組。

(5) 辨識碼(Identification):8 位元。表示資料分割(fragmentation)的識別編號。同一筆資料如被分割成若干個區段,每段給予相同的辨識碼,接收端再依辨識碼組合回原來資料封包。

(6) 旗標(Flags):3 位元。其格式為 "0DM"D = 0 表示可以分段,D = 1 為不可分段(Dont fragment);M = 0 表示最後分段,M = 1 為不是最後分段(More fragment)。

(7) 分段偏移(Fragment Offset):13 位元。表示目前的分段在原始的資料中所在的位址。原始分段允許有 8192 個分段,以每 8 個位元為一個基本偏移量,所以最大容許 65536 位元資料,此值和總長度一樣。因此範圍為 0 ~ 8191,預設值為 0

(8) 存活時間(Time to Live, TTL):8 位元。表示該資料片在網路上的存活時間,封包每經過一個路由器(或網路閘門),該值就被減一。如路由器發現某封包的 TTL = 0,便將該資料片丟棄而不轉送。範圍 0 ~ 255

(9) 協定號碼(Protocol Number):8 位元。表示該 IP 封包所承載通訊協定的協定號碼。在 TCP/IP 協定中,許多通訊協定(如IPICMPTCPUDP等等)都被包裝成 IP 封包,而以 IP 通訊協定發送。所以,在IP 封包裡必須有協定號碼欄位,來表示目前所承載之資料是屬於哪一個通訊協定(IPICMPTCP 等等)。一些較常用著名(well-known)的協定號碼如表 13-1 所示。

(10) 標頭檢查集(Header Checksum):16 位元。做標頭錯誤檢查用。

(11) 來源位址(Source Address):32 位元。發送此 IP 封包的來源位址。

(12) 目的位址(Destination Address):32 位元。目的主機之位址。

(13) 選項欄位(Options):可變長度。提供多種選擇性服務。例如:來源路徑選擇(Source routing)用來追蹤 IP 封包所經過的路徑等等。

(14) 填補欄位(Padding):IP 資料片的標頭一定是 32 位元的整數倍,當 Options 欄位不足 32 位元整數倍時由 Padding 欄位補足。

  13-1 著名協定號碼(節錄)

協定名稱

協定號碼

協定全名(協定包裝在 IP 資料片內)

ICMP

1

Internet Control Message Protocol

IGMP

2

Internet Group Management Protocol

GGP

3

Gateway-to –Gateway Protocol

IP

4

IP in IP encapsulation

TCP

6

Transmission Control Protocol

EGP

8

Exterior Gateway Protocol

IGP

9

Interior Gateway Protocol

UDP

17

User Datagram Protocol

13-3-2 IP 位址

(A) IP 位址結構

        TCP/IP 網路中,任何一部連線的電腦或網路設備都稱為主機(host)。TCP/IP 被設計成適合連接全球各地不同類型、位置的網路系統,為了方便標定每部主機,TCP/IP 定義了一套通用的定址方法。當時所期望的定址格式是,必須能提供足夠的路徑選擇(routing)資訊,而且不要佔用太多記憶體空間,因此,將『IP 位址』(IP Address)的長度設定為 32 位元。為方便表達,我們將此 32 位元分割成四段,每連續 8 位元為一組,每組並以十進位值(0 ~ 255)表示,每組之間以點(dot)分隔。整個 IP 位主表示法就如下所示:

dec3.dec2.dec1.dec0(如 163.15.2.1

雖然 IP 位址長為 32 為元,但其中包含兩種號碼:網路號碼(Network number)及主機號碼(Host number),因此 IP 位址也可以表示成:(如圖 13-6 所示)

13-6 IP 位址結構

        實務連接的時候,並非每一部主機上都只有一個 IP 位址,一般 IP 位址都依照網路介面卡(Ethernet 網路卡)設定。如主機有特殊需要安裝多個網路介面卡(如當路由器使用),每只網路介面卡上都必須設定一個 IP 位址,因此,一部主機上就擁有多個 IP 位址,TCP/IP 網路也容許類似虛擬主機的設定,表示一只網路介面卡上可設定多個 IP 位址。

(B) IP 位址分級

下面我們要談,在 32 位元長度的位址中,應該用多少位址長度來表示網路位址或主機位址。TCP/IP 網路依照所能容納的主機和網路的數量多寡分成 ABC D E 五種類級(class),如圖 13-7 所示,其中 Class D 目前為多點廣播(Multicast)位址,Class E 則保留未來發展之用。分級技巧是配置不同數目的網路位址,網路位址的位元數愈多,所能指定的網路數量就愈多,但相對應的主機位址就愈少。Class C 所能容納的網路位址最多,所以在國際間網路上,大多採用 Class C 定址模式。Class A 所能容納的主機位址最多,但相對應的所能容納的網路位址最少,一般使用在區域網路的定址模式。各類級的特性如下:

13-7 各類級的 IP 位址結構

(1) Class A以最高位元(第 31 位元)為0 表示 Class A 模式。前一位元組(8 位元)表示網路位址;而後 24 位元表示主機位址。網路位址由 1.0.0.0 ~ 126.0.0.0,所能表示的主機位址是 1.0.0.0 ~ 126.255.255.255 的範圍之內。Netmask = 255.0.0.0(下小節說明)。

(2) Class B以二個最高位元為 10 表示 Class B 模式。前 16 位元表示網路位址;而後 16 位元表示主機位址。網路位址由 128.0.0.0 ~ 191.255.0.0,所能表示的主機位址為 128.0.0.0 ~ 191.255.255.255 的範圍之內。Netmask = 255.255.0.0

(3) Class C以前三個最高位元為 110 表示 Class C 模式。前 24 位元是網路位址;而後 8 位元為主機位址。網路位址由 192.0.0.0 ~ 223.255.255.0,所能表示的主機位址為 192.0.0.0 ~ 223.255.255.255 的範圍之內。Netmask = 255.255.255.0

(4) Class D以前四個位元為 1110 表示 Class D 模式。其主要應用於多點廣播(Multicast),一些特殊應用軟體皆用此模式,來對某些定點(工作站)廣播,如隨選視訊(VOD)就用此定址模式,對若干個定點工作站廣播視訊。

(5) Class E以前四個最高位元為 1111 表示 Class E 模式。目前保留尚未使用。

另外,網路位址 0 127 保留給特殊用途使用。網路 0 代表預設路徑位址,通常都將主機的『預設路由器』(Default router位址設定為 0.0.0.0。網路 127 代表回繞(Loopback位址,方便主機自己定址使用,並以 127.0.0.1 表主機本身自己。在一般網路上,設定某一個網路位址的主機位址都為 1 時,稱之為『廣播位址』(Broadcast Address,表示針對這個網路上的主機廣播,例如在 162.15.0.0 網路上的廣播位址為 162.15.255.255。又對於網路上所有主機廣播的位址為 255.255.255.255

剛開始設計 TCP/IP 網路時,電腦還未普及,網路也非常少,TCP/IP 協定開始應用時只連結大型主機,因此 32 位元容量的 IP 位址對當時來講已足足有餘,沒有想到後來 Internet 網路竟然大為風行,導致 IP 位址不足問題的發生。理論上,任何一部電腦連結上 Internet 網路都需要一個獨一無二的 IP 位址,因此 IP 位址將會在短期內被耗盡。雖然目前已提出 IPv6 的解決方案,但要網路上使用中的路由器和主機都更新為 IPv6 的通訊協定,並非易事。目前網路上大都是透過『網路位址轉換器』(Network Address Translator, NAT)來增加私人網路位址,以解決 IP 位址不足的問題。

(C) 網路遮罩(Network Mask, Netmask

        IP 位址是由網路號碼和主機號碼組成的 32 位元,為方便起見,一般都用 [network#, host#] 表示。網路號碼決定主機所屬的網路位址,因此主機在傳遞封包之前,會先過濾出網路號碼,再決定封包應該往哪一個網路傳送。

為使能由 IP 位址中過濾出網路號碼,我們使用『網路遮罩』(Netmask)來過濾。網路遮罩亦為 32 位元,在位元中 "1" 表示網路位址;而 "0" 表示主機位址,其遮罩方式如圖 13-8 所示。如IP 分級方式,Class A網路遮罩為 255.0.0.0Class B 255.255.0.0Class C 255.255.255.0。在一般網路遮罩,皆是 IP 位址的前面若干位元設定為 "1",因此,我們以網路號碼的長度(也是網路遮罩的長度)來代表網路位址的範圍,以『主機號碼/網路號碼長度』來表示一個網路位址,如 163.15.2.3/16 (網路遮罩長度為 16)表示該主機是在 163.15.0.0 網路中的0.0.2.3 位址。

13-8 IP Netmask

(D) 次網遮罩(Subnet Mask

        如果硬要將網路位址區分為三個類級(Class A ~ C),也許很難滿足各種環境需求。例如,目前 TANet 網路使用 Class B 的定址模式,分配到每一個學校 2 ~ 3 個網路號碼。每一個學校裡的網路,是由多個系所的區域網路所構成。在技術上,每一個區域網路都要有一個網路號碼,因此網路號碼一定不符所需,這就是 IP 分級所衍生的問題之一。解決的方法是再劃分次網路(Subnet),產生次網路的基本原理,是將原有主機號碼的幾個位元拿來當網路號碼,並不改變原來 32 位元的 IP 位址格式。

如欲劃分次網路,就必須有次網路的編號,原來 IP 位址所表達的是 [network#, host#] 方式,就必須更換為 [network#, subnet#, host#] 形式。而增加次網路號碼,就必須犧牲原來主機號碼的數量,次網路號碼增加愈多,主機號號碼就減少愈多,這樣做並不會改變整個位址格式,因為原來網路號碼並未改變,對外部網路而言,次網路位址也被視為主機位址,因此不影響外部網路的連結問題。我們以一個例子說明,假使希望在 163.15.0.0 的網路上增加 8 個次網路,基本上,163.15.0.0/16 網路是屬於 Class B 格式,它原來的 IP Netmask 255.255.0.0。我們為了增加 8 個次網路,必須將 3 個位元的主機號碼拿來當次網路號碼,因此 Netmask 255.255.224.0,如圖 13-9 所示。

13-9 次網路號碼

分割後所產生的網路位址為:(Network number = 163.15.0.0Netmask = 255.255.224.0

163.15.0.0/19163.15.32.0/19163.15.64.0/19163.15.96.0/19

163.15.128.0/19163.15.160.0/19163.15.192.0/19162.15.224.0/19

主機位址和網路位址範圍為:

    • 1 個次網路範圍:163.15.0.0 ~ 163.15.31.255

    • 2 個次網路範圍:163.15.32.0 ~ 163.15.63.255

    • 3 個次網路範圍:163.15.64.0 ~ 163.15.95.255

    • 4 個次網路範圍:163.15.96.0 ~ 163.15.127.255

    • 5 個次網路範圍:163.128.0.0 ~ 163.15.159.255

    • 6 個次網路範圍:163.160.0.0 ~ 163.15.191.255

    • 7 個次網路範圍:163.15.192.0 ~ 163.15.223.255

    • 8 個次網路範圍:163.15.224.0 ~ 163.15.255.255

依照 RFC 950 規範,將網路位址為 0,保留給預設路由器使用;主機位址都是 1 時保留給廣播位址使用。因此,經過此網路分割後,子網路位址為 0 或都是 1(如 163.15.0.0 163.15.224.0 網路),還是必須保留,不可分配給工作站使用。

13-3-3 IP 協定特性

        基本上,IP 的連接技術是非連接方式的『電報傳輸』(Datagram),因此在網路通訊的技術上,具有下列特性:

(1) IP 是非連接(Connectionless)服務。表示 IP 在傳送封包之前,雙方並未事先建立連線。發送端直接將封包發送到網路上,由網路上各個路由器(或網路閘門)負責轉送到達目的地。

(2) IP 無錯誤偵測功能。當封包進入路由器時,路由器只針對封包標頭上的目的位址轉送,並不保證該封包是否可安全無恙傳送到目的地,因此沒有針對封包內的資料作錯誤偵測。封包在傳輸當中,是否受到干擾或其他原因,而發生錯誤,這必須由委託傳送(或上層)的通訊軟體自行負責偵測。

(3) 封包彼此之間的次序,經傳送到對方後,可能和原來的不同。因為,每個封包都自行依當時網路情況尋找路徑(電報傳輸方式),所經過的路徑也不一定相同,到達的次序就不一定會和原來次序相同。

(4) 封包可能被重複傳送。重複傳送的原因可能是發送端的上一層協定在溢時後,未收到接收端的回應確認(中途遺失?),再發送另一個同樣的封包。而實際上,接收端在收到第一個封包時已作回應(對方沒收到?),結果又再收到同樣的封包。IP 本身只負責傳送封包,封包是否重複傳送,這必須由上層通訊軟體負責偵測。

(5) IP 並不驗證目的主機是否有確實收到正確的資料

13-3-4 IP 路徑選擇

IP 路徑選擇(IP Routing)是所有 TCP/IP 網路最主要的中心樞紐。上層的應用程式若想在浩瀚的網路之中找到欲通訊的對象,就得利用 IP 路徑選擇的功能。

在傳送過程之中,也許會經過許多『網路閘門』(Gateway)或『路由器』(Router),這些設備都必須具有路徑選擇的功能。當一筆資料由傳送端發出後,它將不知道,也不可能知道,這筆資料是否可安全到達目的地,和可能經過哪些路徑。所經過的路徑都是由封包到達某一路由器後,再由該路由器決定應該往哪一下個路徑(Next hop)傳送。因此,一筆資料可安全到達目的地,是由網路上所經過的路由器共同來完成,並非發送端事先可以控制的。

通常區域網路的範圍較小,在同一網路內,主機和主機之間無須借助路徑選擇即可通訊,一般都使用廣播方式(Broadcast)通訊。傳送主機將封包廣播到網路上,同一網路上所有主機收到該封包後,會先檢查封包標頭的目的位址是否和自己的位址相符,如果相符就收下該封包;否則忽略它。但在廣域網路上就無法利用廣播方式來傳送封包,如果每部主機都廣播,則整個網路將被廣播封包所佔滿。因此網路之間需設置一個以上的對外網路閘門或路由器,網路閘門就是負責過濾對外的通訊封包,它們卡在網路之間,只讓必要的封包通過,且阻擋不必要的封包經過。

以下說明路徑選擇的處理方式。當某一部主機或路由器(網路閘門)要發送封包時,首先檢查封包之目的 IP 位址,其處理程序如下:

(1) 一般路由器(或網路閘門)都安裝有兩個以上的網路卡,每個網路卡連接一個網路,也代表一個網路號碼。當它由任一個網路(或網路卡)上收到一個封包後,依照下列  )23處理。

(2) 若目的位址的網路號碼與本主機(或路由器)的網路號碼相同時,則表示目的主機在本網路內,不需選擇路徑,直接將封包送出,例如採用廣播方式(查詢 ARP 動作)。

(3) 若目的位址的網路號碼與本主機(或路由器)的網路號碼不同時,則表示目的主機不在本網路內,必須跨越路由器到其他網路。就將該封包轉送給另一路由器,由它去負責轉送。

當主機(或路由器)發現所要發送(或轉送)的封包不在本網路內,而必須將該封包轉送給其它路由器負責傳送時,如果網路上有多個路由器,應該轉送給哪一個路由器?或給哪一個路由器最為理想?這就牽涉到路徑選擇的問題。一般在路由器(或網路閘門)內部皆有維護一個『路由表』(Routing Table),當封包進入時,依照路由表上尋找出應該傳送給哪一個路由器,才可到達目的地(或最佳路徑)。建構(或維護)這路由表有兩種方法:

(1) 靜態路徑選擇(Static routing):路由表是由人工建立而成,建立後除非再由人工修改,否則不會變更。系統維護人員會依照網路狀況或規劃網路拓樸圖架構來建立靜態路由表。

(2) 動態路徑選擇(Dynamic routing):路由表是由網路上路由器(或網路閘門)隨時交換訊息所建立而成。因此,路由器會隨時依照網路狀況自動維護路由表。至於路由表如何建立的技術,在本書第四章有詳細介紹其演算法。

當路由器欲轉送封包時,首先查閱靜態路由表,如有適合的路徑便傳送出去,否則再搜尋動態路由表,找出較適當的路徑再傳送。

我們以圖 13-10 來說明 IP 路徑選擇的運作程序。圖中有三個網路:163.15.2.0/24163.15.3.0/24163.15.4.0/24Class B 位址分割子網路),利用兩個路由器(Router_A Router_B)所連結而成。每一路由器上都有兩個連接埠口,並個別設定 IP 位址。圖 13-10 (b) 為兩個路由器的路由表,其可能是靜態路由(Static Routing)或動態路由(Dynamic Routing)。我們以下列三種情況來說明路徑選擇的運作程序:

13-10 (a) IP 路徑選擇範例

13-10 (b) Router A B 的路由表

(1) 主機 A163.15.2.1)欲傳送封包給主機 B163.15.2.2):主機 A 發現目的網路位址和自己網路號碼相同(163.15.2.0/24),便將封包直接廣播到網路上,主機 B 由網路上收到封包。

(2) 主機 A163.15.2.1)欲傳送封包給主機 C163.15.3.1):目的網路號碼不同,必須透過路由器轉送。主機 A 便將封包傳送給 Router_A R1a(預定路由器)。Router_A Ra1 埠口收到封包(目的位址為 163.15.3.1)後,便由路由表上得知網路位址是 163.15.3.0/24 的封包,必須轉送到 163.15.3.254Ra2),便將該封包由 Ra2 埠口廣播出去(163.15.3.0/24 網路)。主機 C 由網路上讀取到該封包。

(3) 主機 A163.15.2.1)欲傳送封包給主機 D163.15.4.1):Router_A 是網路(163.15.2.0/24)的唯一出口,主機(163.15.2.1)勢必將封包傳送給 Router_A(與網路號碼無關)。Router_A 由路由表上查詢後,便由 Ra2163.15.3.254)廣播出去(也可直接傳給 163.15.3.253)。Router_B Rb1 收到封包,再由路由表上查出,應轉送到 Rb2163.15.4.254),便由 Rb2 埠口將封包廣播出去。主機 D 由網路上(163.15.4.1/24)收到該封包。

上述中,我們都假設直接將封包廣播到網路上,其實它必須經過查詢網路實體位址(Ethernet 位址)後,再傳送給對方,這方面將在下一節中說明。

翻轉工作室:粘添壽

 

電腦網路與連結技術:

 

 

翻轉電子書系列: