TCP/IP 協定與 Internet 網路:第一章 TCP/IP 協定簡介 上一頁 下一頁
1-2 通訊協定的特性
我們大略知曉 Internet 是由 TCP/IP 通訊協定所構成的網路,那到底什麼叫『通訊協定』(Communication Protocol),這又是值得我們探討的題目,以下我們分別介紹何謂通訊協定及其特性。
1-2-1 何謂通訊協定?
『定義電腦之間能互相通訊的協議標準,網路上所有電腦都必須依照此標準來製作通訊行為,才能使電腦之間互相了解對方的意思,並能完成其共同的任務(job)』,這個協議標準稱之為『通訊協定』(Communication Protocol)。固然,通訊協定是欲讓通訊雙方(或兩個以上)所必須依據的規範。但並非每一部電腦只有一個規範,也許在一部電腦上可同時存在許多協定,可同時以不同的通訊協定和不同領域的電腦通訊。這樣,就如人的行為一樣,每一個人可擁有不同語言能力和生活習慣,也可以同時和不同領域的人交談或溝通。如圖 1-2 所示,在網路上也許存在著不同的通訊協定。電腦 A(例如 Windows 98)擁有多種通訊協定:NetBEUI、TCP/IP、IPX 和 DLC,它的通訊行為可能如下:
(1) 電腦 A 如果它欲透過網路到電腦 B 上存取檔案。電腦 B 是 Win 2000 檔案伺服器,它們之間通訊就必須利用 NetBEUI 協定連接(Microsoft 網路)。
(2) 如果欲透過網路到電腦 C 上瀏覽網頁。電腦 C 是 Web Server,其所使用的是 TCP/IP,因此雙方必須用 TCP/IP 協定連結(Internet 網路)。
(3) 如果欲到電腦 D 上存取檔案。電腦 D 是 Novell 的檔案伺服器,它們之間必須利用 IPX 通訊協定連接(Netware 網路)。
(4) 如果要和 IBM 電腦連接,就必須透過 DLC 通訊協定。
所以,一部電腦上可以安裝多種通訊協定,與不同網路之間通訊。但如果安裝太多通訊協定而沒有使用到,它會佔用記憶體,也會影響電腦的執行速度。
圖 1-2 各種通訊協定的連接
1-2-2 通訊協定的層次性
到目前為止,我們知道通訊協定是讓電腦之間連接的依據。但它必須能符合各種不同的環境因素,和不同的應用需求。因此,通訊協定必然是一個龐大軟體和硬體的結合體,要如何設計和實現(Implement)它,的確是件不容易的事。首先我們必須先去探討通訊協定應有的特性,再依照這些特性來制定規則及實現,也許比較容易,有關於通訊協定之特性,我們將其分類如下:
(A) 階層性(Hierarchical)
就如同一般設計軟體一樣,將龐大的企劃案(project)分割成若干個獨立實體(entity),每個實體各自獨立實現。但對整個企劃案而言,這些獨立實體有上下相連功能關係(表示上一層完成工作後再交給下一層),此特性稱之為階層性或層次性(Layered)。通訊協定就是利用層次性的關係,將整個通訊協定分為若干個層次來分別實現。
(B) 功能性(Functionality)
我們希望將通訊協定區分為若干個層次來實現,但區分的標準是什麼?我們是將整個通訊協定應具有的功能區分為數個層次,每一層次處理某一特定功能,層次之間的功能不能互相衝突,因此,層次也稱之為『功能層』(Function Layer)。
(C) 隔離性(Isolationality)
因為每一層次都是獨立的,所以上下層次間沒有絕對的從屬關係,不會因上下層的更動而影響本層次的功能,本層次的變動也不會影響上下層次的功能,也就是說層次間具有隔離性。此特性為通訊協定堆疊的基本原理。
我們用圖 1-3(a) 開會程序的結構圖來說明層次性的堆疊關係,我們如將臨時動議的層次抽離,而改用餐會層次,這對原來提案表決和散會的層次沒有影響。也就是說,對整個開會的程序並沒有改變,而變更某一層次也許是因當時環境的需求。按照這個特性,我們視不同的環境需求,將通訊協定堆疊成不同的架構,這就是通訊協定最重要的特性:『堆疊原理』。實務上的例子如圖 1-3(b) 所示,電子郵遞的應用,依照不同環境也許會使用到 Token-Ring 或 Ethernet 的層次,但其對其他層次的工作並沒有影響。甚至對使用者而言,某一層次的替換也不會影響其工作型態,這也稱為透通性(Transparency)。
圖 1-3 通訊協定的堆疊原理
1-2-3 通訊協定的堆疊原理
其實我們可以反過來講,如果建構一個通訊協定,便依照我們所需求的功能和環境因素,尋找所需要的功能層次將他們堆疊起來便可以完成,也稱為 『協定堆疊』(Protocol Stack)。但要這些功能層次能堆疊起來,必須考慮到他們之間連結的『介面』(Interface)、和相對對方電腦之間 『前端對前端協定』(Peer-to-Peer Protocol)的技術問題,我們敘述如下:
(A) 層次介面 (Layer Interface)
任何層次都將依照它的功能製作成一個獨立實體(entity),每一層次都必須提供他對上一層、或對下一層的連結程式,這一個連結程式稱之為『層次介面』(Layer Interface)。這個觀念就如同硬體介面一樣,當主機板要和 I/O 介面卡(如 VGA 顯示卡)連接時,必須透過標準介面(如 PCI 介面),這標準介面定義每個連接接腳(pin)的訊號方式。軟體介面程式也是一樣,但它是利用程序呼叫(Procedure Call)所攜帶的參數來作訊息的傳遞,上下層次之間便利用此程序呼叫,該程式就稱為『介面程式』(Interface Procedure)。如圖1-4 所示,我們將通訊協定依照功能區分為七個層次,每一層次和它的上下層之間的聯繫,便需透過介面程式來連結。
如果我們將這些介面程式制定成標準格式,各家廠商在發展通訊協定時,由自己的特殊方法製作層次內所需的功能,但層次之間的介面程式依照標準格式製作。如此,不同廠商所發展的通訊協定便很容易結合,達到通訊協定堆疊的功能。
(B) 前端對前端協定(Peer-to-Peer protocol)
互相連線中的電腦,依照通訊協定所需功能區分為數個層次,每一層次負責某一部分功能,因此,通訊雙方的相對層次之間就必須協議出共同的工作模式,這個協議稱為『前端對前端協定』(Peer-to-Peer protocol)。如果互相通訊中的電腦,他們的通訊協定中所有層次都能協議出共同認定的方法來通訊,對整個通訊協定而言,他們已經依照共同協議在互相通訊,整個通訊協定的製作便算成功。
但在不對稱的層次間 (譬如第四層和對方第六層或第五層) 沒有關係,依照此方法才能將各個功能層次完全分割出來,也才能容易地實現網路上通訊協定。
圖 1-4 通訊協定之介面與前端對前端協定
(C) 層次間的介面連接
一般主機電腦都屬於『多元程式系統』(Multiprogramming System),也就是說在一部電腦內也許會有多個應用程式同時在執行。每一個應用程式呼叫任何一層通訊協定時,所產生的程式稱之為通訊軟體。一個應用程式在每一層裡也許會產生一個以上的通訊軟體,這些上下層的通訊軟體之間的聯繫就必須透過 『服務存取點』(Service Access Point, SAP)。所謂服務存取點就是層次介面程式所產生的邏輯編號,每一個邏輯編號也代表一條『虛擬鏈路』(Virtual Link)。如圖 1-5 所示,第 N+1 層通訊軟體呼叫第 N 層通訊協定,所產生的服務存取點,便表示已銜接(Attach)到第 N 層,第 N 層也用同樣的方法連接到第 N-1 層。兩端應用程式就是利用這些虛擬鏈路串接在一起,這也稱為『連線』(Connection)。依照這些特性所攜帶的訊息才能使通訊雙方同等層次之間溝通,也就是所謂通訊協定的製作。例如,圖 1-5 之中,通訊雙方的第 N 層之間的協定。
圖1-5 通訊軟體之間的連線與通訊