TCP/IP 通訊協定及網路架構研析

36 篇文章 0 订阅
 

一、TCP/IP 整體架構概述

  一般而言,網路通訊協定是一種層級式(Layering)的結構,每一層都呼叫它的下一層所提供的服務來完成自己的需求。而 TCP/IP 通訊協定可以分為以下四層:

圖 3-1 TCP/IP 協定架構的層次

 (一)應用層(Application Layer):應用程式間溝通的協定,如簡易電子郵件傳送(SMTP, Simple Mail Transfer Protocol)、檔案傳輸協定(FTP, File Transfer Protocol)、網路終端機模擬協定(TELNET)等。

 (二)主機傳輸層(Transport Layer):提供端點間的資料傳送服務,如傳輸控制協定(TCP, Transmission Control Protocol)、使用者資料協定(UDP, User Datagram Protocol)等,負責傳送資料,並且確定資料已被送達並接收。

 (三)網際層(Internet Layer):負責提供基本的封包傳送功能,讓每一塊資料封包都能夠到達目的端主機(但不檢查是否被正確接收),如網際協定(IP, Internet Protocol)。

 (四)網路存取層(Network Access Layer):實質網路媒體的管理協定,定義如何使用實際網路(如Ethernet, Serial Line等)來傳送資料。

  舉例而言,當我們要寄一封電子郵件(E-mail)的時候,首先我們啟動收發郵件的程式,指定這封郵件的收件人及寄件人姓名及地址,以及郵件的內容。以上這些資料格式都定義在電子郵件協定中。而電子郵件協定又利用 TCP 模組,將整份郵件訊息由本地送到收件人的信箱去。

  在 TCP 中定義了如何將訊息正確無誤地送抵目的端主機, TCP 模組先將訊息切割成一塊塊方便傳輸的資料包(datagram),藉由記錄及追蹤送出的資料包,可以得知哪些資料包已經到達目的端主機。而那些沒有到達目的端主機的資料包,就必須再送一次,直到對方確定收到為止。這些資料包將會在網際網路中穿梭奔馳,經過各種不同類型的網路及主機,才能到達目的端,而 IP 就負責幫我們做這件事。

  首先,當資料包經過不同類型的網路時,由於每一種網路所能傳輸的單元大小不同,所以連接不同網路的閘道(gateway)主機內的 IP 模組,可能需要把資料包再分成較小塊的資料塊(fragment),然後才能在下一個網路中繼續旅程。另外,IP 也定義了在網際網路上每一台主機的位址格式,有了這些可唯一辦認每一台主機的位址,每一塊包含IP 位址的資料塊才能夠正確地抵達目的端主機。

  到達目的端之後,目的端主機的 IP 模組,會設法將所有的資料塊組合起來, TCP 模組再將資料包組合成訊息,並要求來源端主機重送遺失的資料包。目的端主機上的 TCP 模組確定資料包已經組合成為完整無缺的訊息之後,就通知來源端主機的 TCP 模組,完成訊息傳送。最後,目的端主機上的郵件傳輸協定(SMTP)負責將訊息轉成收件人看得懂的郵件,正如寄件人所發出的原件一般。

  由以上介紹可知,網際協定(IP),是 TCP/IP 的心臟,也是網際層中最重要的協定。IP 提供基本的封包傳送服務,而這正是 TCP/IP 網路賴以建立的基礎。本研究報告將詳細討論 IP 運作的原理以及在網路中實際的運用情形。



二、利用 TCP/IP 傳送訊息

  在上一節中我們提到了 TCP/IP 的整體架構。接著我們詳細討論資料包如何在 TCP/IP 的網路架構中傳送。在四層網路架構中,有兩個協定負責傳送及處理資料包。 TCP負責將訊息切割成一塊塊資料包,在遠端主機重新按順序組合起資料包,並且要負責重送遺失的資料包。為了達成任務,TCP 必須在每一塊資料包的前面加上一個資料頭,資料頭中包含了 TCP 所需用來處理資料包的資訊。這就好像我們將信件裝進信封中,而郵差可以根據信封上的住址替我們送信一般。

TCP 資料頭格式

  一塊被 TCP 加上資料頭的資料塊看起來就像下面這個樣子:

圖 3-2 TCP 資料頭格式

  其中的 Source Port 及 Destination Port 用來指定此資料包對於主機的不同連結(connection)。假設有兩個人同時在一台就地端主機上對另一台遠端主機做檔案傳輸,此時就地端的 FTP 程式可能指定其中一人的 Source Port 為 1001,而另一個人的 Source Port 為1002 (這是隨機所取的數字,只要能區分不同連結即可)。至於遠端的主機為了讓世界各地的主機能夠和它作檔案傳輸的動作,所以其FTP伺服器須有一公開的標準 Port(就是 Port 21)。 有了 Source Port 及 Destination Port ,遠端主機的 TCP 模組就可以把資料包組合起來給某一連結。譬如,所有Source Port = 1001 及 Destination Port = 21 的封包們會被組合成為完整訊息,交給遠端的FTP 伺服器程式(Destination Port 21所指定的應用程式)。同理也適用於 Source Port = 1002 及Destination Port = 21 的資料包們。

  至於資料頭中的 Sequence Number ,則是指定此資料包在訊息中的序號。有了這些序號,遠端的 TCP 模組才能夠依序將資料包組合起來而不弄錯順序。Acknowledge Number 則是接收者用來通知發送者(所以此欄位在由遠端傳回的資料包中才有效)已成功地接收到的字元數,讓發送者在一段時間後重新發送未到達的資料包。

  假設我們用下圖來表示待傳送的訊息:

圖 3-3 待傳送的訊息

  首先,發送及接收兩端的TCP 模組互相對話、建立連接,並且根據兩端所能處理的資料包大小,選擇較小的那個為標準來切割資料包,結果如下:

圖 3-4 訊息被切割成為資料包

  然後, TCP 模組在每一塊資料包前加上前述的 TCP 資料頭,此時整個待傳送的訊息看起來如下:

圖 3-5 資料包加上 TCP 資料頭

  為了方便起見,我們仍將一塊被加上 TCP 資料頭的資料包稱為資料包(datagram),TCP 模組將這些資料包送給IP 模組,同時告訴IP 模組接收端主機的 IP 位址。(此IP 位址是一個32 位元的數字,可以唯一區別網際網路上的每一台主機。我們將在下一節中詳細討論此一位址的定義及相關技術)。IP 的工作就是負責幫資料包找到一條適當的路徑(route)以到達接收端主機。為了讓各網路的路由器(router)能往前繼續傳送資料包,IP 必須在資料包前加上自己的資料頭。

IP 資料頭格式

  被 IP 加上資料頭之後的資料包,看起來是這個樣子的:

圖 3-6 IP 資料頭格式

  IP 的資料頭中最重要的就是來源位址(Source Address)及目的位址(Destination Address),來源位址是發出此訊息的主機位址,有了此一位址,目的端主機才知道資料包從何處來,在必要時可以回覆訊息。目的位址則是接收訊息的主機位址,有了此一位址,網路上的各router 才能判斷將資料包往何處送。

  Protocol Number 則告知目的端主機將此資料包送給哪一個呼叫此IP 的協定(TCP 或是UDP . . . 等其中之一)模組繼續處理。當資料包被送到某個網路時,如果這個網路沒有辦法傳送如此大的資料包時,每一個資料包會被切成幾個更小的資料塊,此時Flags 和Fragment Offset 被用來記錄追蹤這些小資料塊們。 Time to Live 中的數字在資料包每經過一個系統的時候就會被逐漸遞減,當此值等於0 時,此資料包會被丟棄不再傳送,如此就可以避免萬一傳送的路徑形成迴路時無法停止傳送。

  加上 IP 資料頭之後,整個訊息看起來就變成這個樣子:

圖 3-7 資料包加上IP 資料頭

Ethernet 資料頭格式

  最後,目前大多數的網路在實質上都屬於乙太網路(Ethernet)。由於Ethernet 有自己的定址方式(Ethernet使用48位元的位址格式,每塊Ethernet 網路控制卡本身就內含了這個位址設定,所有的 Ethernet 控制卡製造廠商都得向全球統一的中心註冊,以確保每一塊卡上的位址都不相同)。所以當資料包在 Ethernet 上傳送時,Ethernet 協定要負責將每一塊資料包上的目的端主機位址和自己主機上的Ethernet 位址做一轉換比對,才知道是不是要接收此資料包或是要繼續向外傳送此資料包。所以Ethernet 會在所有的資料包前加上來源及目的主機的位址(各48 位元)。如下圖所示:

圖 3-8 Ethernet 資料頭格式

  Type Code 是用來指明此資料包在Ethernet 上層對應的是 TCP/IP 或DECnet 或Xerox . . . 等協定中的哪一種。而Ethernet 除了會為資料包加上資料頭之外,也會在資料包的尾端加上一個加總檢查數,以確保資料包內容在傳送過程中沒有出錯。若用「E」代表Ethernet 資料頭,「C」代表加總檢查數,你的訊息看起來會是這樣子:

圖 3-9 資料包加上 Ethernet 資料頭

  當這些資料包被目的端主機接收到之後,所有的資料頭都會被移除。Ethernet 模組會除去 Ethernet 資料頭及加總檢查數,並且依據 Type Code 來做進一步處理。如果 Type Code 表明了使用 IP ,則 Ethernet 模組會將資料包上傳給 IP 模組。IP 模組除去了 IP 資料頭時,根據該 IP 資料頭的 Protocol 欄位中所指明的協定做判斷,若其值為 TCP ,則該資料包會被上傳給 TCP 模組。 TCP 模組再根據 TCP 資料頭中的 Sequence Number 及其它資訊來組合所有的資料包,還原成原來的訊息。


三、IP 網路架構概述

IP 功能概述

  正如上節所述,網際協定(IP)是整個網際網路的中心協定,它的功能包括:

 (一)定義資料包。資料包(datagram)是網際網路中傳送資料的基本單位。

 (二)執行資料包的分解及重組。當資料包經過不同類的網路時,閘道中的 IP 模組,可能需要把資料包分成較小塊的資料。

 (三)定義定址方式。網際網路位址(Internet Address,或稱為IP Address),用來明確區分網際網路中各主機的所在位址。

 (四)決定資料包到遠地主機的路徑。稱為 Path Routing。

  其中的前兩點,己於上一小節中介紹過了,以下將介紹IP 位址的定義方式。至於網際網路中的路徑架構及尋找路徑的方式,將在下一章中介紹。

IP 的定址方式

  IP 利用資料包的形式在主機間移動資料。資料包的來源位址和目的位址,包含在資料頭中。此位址是一 32 位元的數字,通常我們以點號分開 4 成個位元組來表示之,並且寫成十進位數以方便閱讀(如 128.6.4.7)。

  由於 IP 位址必須明確的代表某一網路中的某一主機,所以必須包含有兩個部份。第一個部份指定網路,第二部份再指定此網路中的某一台主機。由於實際上各地區的網路可能有大有小(大的如學校機構,小的如私人公司),所以位址的範圍有三種不同的設定:

 (一)如果 IP 位址的第一個位元是 0 ,我們稱之為A 等級(Class A)的網路位址。

圖 3-10 Class A 的網路位址格式

此種 Class A 位址的第一個位元指定等級,其後七個位元指定網路,最後二十四個位元指定主機。也就是說 IP 位址屬於 1.1.1.1 到 126.254.254.254 的都是 Class A(原本應為 0.0.0.0 到 127.255.255.255,但是 0.0.0.0 和 127.0.0.0 兩組,以及所有的位元組值 0 及255 都被保留成其它用途,將在後面解釋),而每一組 Class A 的網路都可以容納數百萬台主機。

 (二)如果 IP 位址的前兩個位元是 10 ,我們稱之為 B 等級(Class B)的網路位址。

圖 3-11 Class B 的網路位址格式

這些位址的特性是前兩個位元指定等級,其後十四個位元指定網路,最後八個位元指定主機。也就是說 IP 位址屬於 128.1.0.0 到 191.254.254.254 的都是 Class B ,而每一組 B 等級網路都可以容納 64516 台主機。

 (三)如果 IP 位址的前三個位元是110 ,我們稱之為 C 等級 (Class C)的網路位址。

圖 3-12 Class C 的網路位址格式

  這些位址的特性是前三個位元指定等級,其後二十一個位元指定網路,最後八個位元指定主機。也就是說 IP 位址屬於 192.1.1.1 到 223.254.254.254 的都是 Class C 。每一組 Class C 網路可以容納 254 台主機。

  其它的 IP 位址(前三位元為 111 ,也就是大於 223 )是保留位址,目前尚未定義。

  並不是所有的網路位址或主機位址都可以拿來使用。有兩個A 等級網路位址(0 和 127)被保留做特殊用途。網路0 指的是「預設路徑」(default route),而用來簡化IP 必須處理的路徑資訊。網路127 是「繞回位址」(lookback address)。IP 主機位址中所有的位元都設定為0 時,指的是網路本身;而IP 主機位址中所有的位元都設定為1 時,指的是廣播位址,用來向一個網路上的所有主機同時發送訊息。

次級網路(Subnet)

  IP 位址分為兩部分,前半部是網路位址,後半部是主機在網路中的位置。 IP 利用位址的網路部分,在網路間為資料包選擇路徑。而主機部分則在資料包到達目的網路後,用來完成最後的傳送。一個大機構如果分配到一組網路位址,管理者要負責管理整個網路中的主機位址。此時可以將整個大網路分散成數個較小的網路,這些較小的內部網路,就叫做「次級網路」(subnet)。

  次級網路的基本原理是利用移動網路位址和主機位址位元間的「分隔線」來產生新的網路,但減少了每一個網路可有主機的數目。例如:一個 class B 的網路 128.66.0.0,前 16 位元是此網路的位址(128.26),而後 16 位元則可用來指定此網路內部的主機位置,共可有約 64,000 台主機。

  為了管理方便,我們可以將 16 位元的主機位址切分出 8 位元來做次級網路。如此一來,前 24 位元代表網路位址(128.64.1 - 128.64.254,有 254 個網路可供應用),而最後 8 個位元代表主機,也就是每一個次級網路中可以有 254 台主機。如此一來,每一個部門可以擁有自己的次級網路,並且定義管理自己的主機位址。

  次級網路只有當地知道,對 Internet 上的其它網路來說,並不在意某個網路中有幾個次級網路,整個 32 位元的位址仍然是被當作標準的IP 位址來解讀,當資料包進入某區域網路時,我們用一個所謂的「次級網路遮罩」(Subnet Mask)來達到處理 subnet 的目的。如果此 mask 中的某位元是1 ,則 IP 位址中的相對位元,就被解讀成網路位元。如果是 0,則這個位元屬於主機位址部分。

  例如,標準的 class B 的 subnet mask 是 255.255.0.0 (代表IP 位址的前 16 位元是網路位址,後 16 位元是主機位址)但是如果使用 Subnet Mask 為 255.255.255.0 的話,就可代表我們上列的例子(前24 位元是網路位址,後8 位元是主機位址)。

  此時,若某資料包上的目的 IP 位址是 128.66.12.1,進入此 class B 網路之後,和 subnet mask 255.255.255.0 作一運算,可得知目的地是 subnet 128.66.12.0 上的第一台主機。

網路間 Router 介面

  IP 位址通常被當作是主機位址,這在大部分的主機上沒有錯,但是正確的定義應該是指某一主機上的某一網路介面的位址,因為在連接兩個(或以上)不同實質網路的路由器(router)上,必須給每一個網路介面一個 IP 位址,如此才能夠作為兩個網路間傳送資料的橋樑。例如,在圖3 - 13 中 Router X 和 Router Y 分別有兩個不同的IP 的位址,以連接兩邊不同的網路。


 

圖 3-13 網路間 Router 介面實例

  Router X 連接起 128.66.12.0 及 128.66.1.0 兩個網路。 128.66.12.0 中的主機(如主機A ─ 128.66.12.2)認為 Router X 的位址是 128.66.12.3,而 128.66.1.0 中的主機(如主機C ─ 128.66.1.2)則認為 Router X 的位址是 128.66.1.5。如此一來,從主機 A 要傳送到主機 C 的資料包,將先送到主機A 所認得的 Router X ,位址為 128.66.12.3 的網路介面;再由 Router X 透過位址為 128.66.1.5 的網路介面轉送到主機C 上。而主機A 如何得知資料包要透過 Router X(而不是 Router Y )才能到達主機 C 呢?這就有賴於所謂的「路由協定」(Routing Protocol)了。我們將在下一章中討論 Routing Protocol 的特性及架構。


 參考資料

1、"TCP/IP Network Administration" -- Craig Hunt , O*Reilly & Associates , INC.

2、"Ipng and the TCP/IP Protocols" -- Stephen A. Thomas , Wiley Computer Publishing.

3、"Internet Protocol Tutorial" - Charles Hedrick , Rutgers University.

4、RFC 791 "Internet Protocol - Protocol Specification" -- Editor : Jon Postel, Information Sciences Institute University of Southern California, September 1981.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值