6-5 網路作業系統
6-5-1 網路作業系統簡介 我們對電腦的『作業系統』( Operating System, OS)或許有所熟悉,它除了管理該部電腦上所有的硬體外,並提供介面讓使用者操作電腦。如果沒有作業系統,電腦就形同廢物,起不了任何作用。作業系統提供各種程式介面,讓程式設計師可以在電腦上開發應用程式。同樣的,作業系統上可以掛上各公司行號所發展的應用程式,使得作業系統上的資源更加豐富。另一方面,我們必須同時考慮其方便性,因此作業系統必須提供一些非常友善的操作介面,例如視窗介面與多媒體處理介面(X-windows 或 Windows 系列)。因此,我們可以說一部電腦所提供功能的優劣,完全取決於其使用作業系統為準。 此外,一部電腦通常可安裝不同的作業系統,以目前 Pentium 系列電腦為例,同一部電腦上可以分別安裝 MS-DOS、Windows 98、Windows NT、Windows 2000、Unix、Linux、OS/2等作業系統,如果安裝 MS-DOS 只能單機單程式使用( Single-User Single-Task);安裝 Windows 98 可有視窗介面,圖文並茂,並且是單人/多工系統(Single-User Multi-Task);安裝 Unix 系統還可達到多人/多工系統(Multi-User Multi-Task)。由此可見作業系統扮演角色的重要性。 同樣的,網路上也必須有一個『網路作業系統』(Network Operating System, NOS),它除了必須具備管理網路上各種通訊行為外,也必須提供各種網路介面,讓程式設計師開發應用程式,以及提供一般使用者的操作介面。所以一個網路的處理能力如何,也是取決於網路作業系統的功能。目前市面上也有許多網路作業系統,例如:Microsoft Network(MSN)、Network File System(NFS)、Netware(Novell)、System Network Architecture (SNA)、ArpaNet。各種網路作業系統提供許多網路應用程式,例如:E-mail、File Server、Web Server、Database Server 等應用。 但是,網路作業系統和電腦作業系統在架構上還是有很大的不同點。一般作業系統管理電腦本身的硬體周邊環境,如磁碟機的存取、螢幕的顯示、鍵盤和滑鼠的輸入等等。當我們在建構網路作業系統時,只要將有關網路的軟硬體裝置在原作業系統上擴充即可。也就是說,網路作業系統是外掛在原作業系統之上,如圖 6-8 所示。
圖 6-8 網路作業系統與電腦作業系統 早期開發網路作業系統也大都採用外掛式的,也就是在現有的作業系統上安裝網路作業系統。至於電腦本身內部的軟硬體處理,還是由本地作業系統(Local Operating System, LOS)處理,對於網路上的通訊行為則由網路作業系統負責。但隨著網路上應用愈來愈複雜,我們需要另一個特殊的作業系統才能符合環境的需求。也有必要發展一個專屬的作業系統來結合網路作業系統,因此有:Netware File Server、Windows NT server、Windows 2000 Server 的誕生。在這些專屬的作業系統上,當然也可以加掛其它網路作業系統。 一般我們稱 Unix 或 Linux 為網路作業系統,其實它也是一般電腦作業系統,只不過將許多網路處理功能安裝在系統核心(Kernel)上,使對網路的處理能力特別強,所以稱它為網路作業系統。一般我們客戶端(Client)的電腦對網路的處理能力沒有伺服器端那麼複雜,不需要一個專屬的網路作業系統,因此都採用外掛式的網路作業系統,例如,在 Windows 98 上安裝 Microsoft Network 或 TCP/IP 網路(ArpaNet)。 既然網路作業系統是採用外掛式的,不會影響到作業系統本身的處理能力,亦即一部電腦可同時安裝許多套的網路作業系統。譬如,在一部 Windows 98 的電腦上可以安裝多種的網路作業系統,如,Microsoft Network、Novell Netware、SNA、ArpaNet 等等。在同一部電腦上執行不同的應用程式可能會用到不同的網路作業系統,例如,『網路芳鄰』是屬於 Microsoft Network;而『IE 瀏覽器』則屬於ArpaNet。 我們瞭解網路作業系統是處理所有通訊行為,也就是說,它包含網路通訊協定的第一層到第七層的通訊協定。但是各家網路廠商所製作的網路作業系統考量到應用的範圍層次不同,也許在各層通訊協定裡所用到的技術也不盡相同。譬如,Microsoft 網路所訴求的對象是範圍較小的區域網路,但希望應用的層次較高;另外,ArpaNet 網路所訴求的功能是較廣域的網路通訊,但網路應用的層次則較簡單。因此,考量到不同的應用,各層次的通訊協定的製作也會不同。在 Microsoft 網路上,第三層和第四層採用 NetBEUI 通訊協定;而 ArpaNet 則採用 TCP/IP 通訊協定。但為了能在不同網路上執行各種網路作業系統,各網路之間也許在某些層次採用相同的通訊協定(如 Ethernet 網路或 ATM 網路),這也是說明通訊協定為何要合乎堆疊性的主要原因。另外,有一個重要的觀念不容忽視,各網路作業系統考慮到應用的層次時,通訊協定裡雖然有七個層次,但並非所有網路作業系統都裝置所有層次。譬如,在 ArpaNet 網路上,就沒有將其功能細分出表現層和交談層,而將其納入應用層之內。 6-5-2 網路介面程式 網路介面程式是提供開發各式各樣的應用程式,程式設計師只要透過介面程式來編寫應用程式,就不需要去考慮網路是如何實現出來的。就像是在一般作業系統上的『系統呼叫』(System Call)程式一樣。程式設計者只要呼叫 open() 介面程式,而給予適當的參數(parameter),它便會指定到磁碟機或其他週邊設備上,並可存取到所需的資料,而無需考慮到磁碟機和其他週邊設備如何驅動馬達和磁軌。 一般網路作業系統為了方便程式開發,除了提供應用層介面程式,也提供其他層次的介面程式。這些介面程式就如 1-6-1 節裡所介紹的上下層介面程式一樣。所以,發展應用程式不一定是由應用層發展。程式設計師可依照自己的需要,呼叫各層次的介面程式,這樣發展的應用程式的變化性就較大,更能滿足不同的需求。 我們用 TCP的程式介面來說明,如何利用介面程式開發應用系統的概念(有興趣在網路上編寫程式的讀者,請參考拙著『Internet 網路原理與實務』)。例如,我們希望開發一個檔案伺服器,讓網路上的使用者可以儲存和讀取檔案。其程式架構如圖 6-9 所示。在這個程式裡,我們會用到下列 TCP 的介面程式(又稱系統呼叫): (1) socket():開啟 TCP 通訊服務點。 (2) bind():對 socket() 定址,連結至相對應的埠口位址(port number)。 (3) listen():設定 socket 為等待狀態,等待 Client 端要求連線。 (4) connect():要求和對方通訊端(socket)連線。 (5) accept():接受對方(socket)連線要求。 (6) write():將資料寫入連線中的 socket,傳送到通訊對方。 (7) read():由連線的 socket() 中讀取資料。 (8) close():釋放 socket,中斷連線。
圖 6-9 檔案伺服器程式架構 由上述簡單的例子,我們可以瞭解如何在傳輸層上開發應用層的應用程式,因為它們之間並沒有交談層,所以通訊方式就依照傳輸層介面(socket())所提供的方式(全雙工方式);也沒有表現層,所以傳輸之間的資料格式沒有特殊定義和管理,只能用一般資料型態(ASCII)傳送。如果有一端傳送特殊的資料格式,對方可能無法辨識。但該程式只做資料的存放和讀取,伺服器端並未做資料的處理,所以對資料格式也不必特別處理。由這個簡單的例子,我們也可以瞭解並非所有應用程式都需要七個通訊協定,但第一、二、七層(實體層、資料連結層、應用層)缺一不可。 6-5-3 網路命令程式 如同一般作業系統,網路作業系統必須提供一些有關網路管理的命令程式(command 或 utility),讓使用者方便管理或操作網路作業系統。我們可以透過命令程式來管理整個網路環境,也可以瞭解網路運作的情況。各種網路作業系統所提供的命令或有不同,以下我們就一些 Internet 網路上命令程式來介紹,如果讀者希望有較完整之命令格式的使用方法請參考相關書籍。 (1) ping:測試網路位置是否正常。 # ping 163.15.2.1 (測試 163.15.2.1 電腦位置是否正常) (2) finger:查詢網路上使用者的相關資料。 # finger (顯示在網路上所有的使用者) # finger root@linux-1 (查詢遠端電腦 linux-1 上 root 使用者的資訊) (3) ifconfig:設定網路介面(interface)環境,如 IP 位置、網路遮罩等等。 # ifconfig –a (查閱所有網路介面設定狀態) # ifconfig eth0 163.15.2.62 (設定 eth0 網路介面的 IP 位置) # ifconfig eth0 broadcast 163.15.2.255 (設定 eth0 的廣播位置) # ifconfig eth0 netmask 255.255.0.0 (設定網路遮罩,class B) (4) route:設定路由器之靜態路徑選擇(static routing)路徑。 # route (查閱所有靜態路徑選擇表的設定) # route add –net 163.15.3.0 gw 163.15.2.62(設定網路位置的網路閘出口) # route add default gw 163.15.2.63 (設定 default 的網路閘的位置) # route del 163.15.2.61 (刪除路徑設定) (5) netstat:查閱網路組態和網路狀態。 # netstat –nr (顯示路徑分派的情形) # netstat –ia (顯示網路介面的統計資料) (6) traceroute:可追蹤路徑選擇所經過的路徑。 # traceroute www.nsysu.edu.tw (追蹤到中山大學網站所經過的路徑) 6-5-4 網路應用程式 建構網路的主要目的是要透過網路執行某些應用。不同的網路作業系統所訴求的應用範圍,和其所提供的網路應用程式一不相同。任何人都可以利用網路介面程式開發其所需的網路應用程式,所以網路應用程式的變化性非常的大。一般我們會將專屬的應用安裝在特殊的主機上以提高它的處理能力,因此就有所謂『主從式架構』(Client/Server Architecture)的誕生。因此網路應用程式可歸類為下列兩種: (1) 伺服端(Server):在網路上提供服務的程式,又稱為網路伺服器。依照它所提供的服務如下列:(簡列一些實例) ● Mail Server:提供信件服務。 ● FTP Server:提供檔案傳送服務。 ● Print Server:提供檔案列印的服務。 ● Database Server:提供資料庫系統讓使用者查詢的服務。 ● Web Server:提供網頁讓使用者瀏覽的服務。 (2) 客戶端(Client):在網路上使用伺服器所提供服務之應用程式。 ● internet explore (IE):使用Web Server上服務的應用程式(瀏覽器)。 ● mail:使用mail server上服務的應用程式。 ● ftp:使用 ftp server 上服務的應用程式。 就一部電腦而言,執行了 Server 程式時,它就是一部伺服器,當然也可以執行 Client 程式,因此也是客戶端。一般而言,任何一部主機電腦可同時執行若干個 Server 程式,而成為多個伺服器的提供者。但我們為了提高執行效率,都會將較常用的 Server 程式安裝在某一特殊主機電腦上,如圖 6-10 所示。還有一些在 Internet 網路上較常用的應用程式,簡單介紹如下。 ● telnet:遠端登入程式。 ● # telnet linux-1 (登入到遠端電腦 linux-1 上) ● ftp:檔案傳送程式。 ● # ftp linux-1.cma.edu.tw (由遠端電腦 linux-1 上作檔案傳輸) ● rcp:遠端複製程式。 ● rsh:執行遠端電腦上程式。 ● # rsh linux-1 cat /etc/passwd (執行遠端電腦 linux-1 上的程式 cat /etc/passwd) ● mail:傳送信件到遠端電腦上使用者。 ● # mail tsnien@cc.cma.edu.tw < letter (將 letter 信件傳送給 tsnien 使用者)
圖 6-10 Client/Server 架構
|
翻轉工作室:粘添壽
電腦網路與連結技術:
翻轉電子書系列:
|