操作系統中有很多默認的網絡服務或者客戶端程序,例如 Web 服務器和瀏覽器、FTP 服務器和客戶端、Telnet 服務器和客戶端等,在 Linux 環境下有 Apache 、Mozilla、VSFtp 等。接下來對這些程序的協議和使用進行介紹,主要包括以下內容:
█ HTTP 協議及服務,主要介紹 HTTP 協議的標準和應用;
█ 介紹 FTP 協議標準,並介紹 FTP 客戶端的使用;
█ 對 TELNET 的協議標準進行簡介;
█ 介紹 Linux 下網絡服務的配置方法。
HTTP協議和服務
HTTP 協議是目前應用最廣泛的應用層網絡協議,它是目前互聯網繁榮的基礎。
1. HTTP 協議概述
應用層協議 HTTP 是 Web 的核心。HTTP 協議在 Web 的客戶端程序和服務器程序中得以實現,運行在不同系統上的客戶端程序和服務器程序,通過交換 HTTP 消息彼此交流。HTTP 協議定義數據格式,使得服務器和客戶端通過協議進行數據交流。
Web 頁面(webpage,也稱爲文檔)是客戶端和服務器交流的基本內容,它由多個對象構成。對象(object)是可由 URL 進行尋址的文件,例如 HTML 文件、JPG 圖像、GIF 圖像、Java 小應用程序、語音片段等。
Web 頁面大多數由一個基本 HTML 文件和很多 HTML 文件中所引用的對象構成。例如,如果某個 Web 頁面包含 1 個 HTML 文本文件和 5 個 PNG 圖像,這個 Web 頁面就由 6 個對象構成,即基本 HTML 文件加 5 個圖像。這個基本的 HTML 文件使用文件中的內置 URL 來引用本頁面中所使用的其他對象,例如上述的 5 個 PNG 圖像需要在基本 HTML 文件中進行 URL 的引用定義。
一個 URL 由兩部分構成:存放該對象的服務器主機名和該對象的路徑名。例如,在如下的 URL 中:
roll.mil.news.sina.com.cn/phototj_slide/146/index.shtml
roll.mil.news.sina.com.cn 是一個主機名,/phototj_slide/146/index.shtml 是一個路徑名。
瀏覽器是 Web 的用戶代理,它顯示所請求的 Web 頁面,並提供大量的導航與配置特性。Web 瀏覽器還實現 HTTP 的客戶端,因此在 Web 上下文中,可以從進程意義上互換使用 “ 瀏覽器 ” 和 “ 客戶 ” 兩詞。
流行的 Web 瀏覽器有 Google Chrome、Firefox 和微軟的 IE 等。Web 服務器存放可由 URL 尋址的 Web 對象。Web 服務器還實現 HTTP 的服務器端。流行的 Web 服務器有 Apache、 微軟的 IIS 以及 IBM WebSphere。
2. HTTP 協議的基本過程
HTTP 協議是基於客戶端 / 服務器之間的請求響應進行交互的。
1. HTTP 協議的宏觀過程
一個客戶端與服務器建立連接後,發送一個請求給服務器,請求方式的格式爲:統一資源標識符、協議版本號,後邊是 MIME 信息包括請求修飾符、客戶端信息和可能的內容。
服務器接到客戶端的請求後,向客戶端發送相應的響應信息,其格式爲:一個狀態行包括信息的協議版本號、一個成功或錯誤的代碼,後邊是 MIME 信息包括服務器信息、實體信息和可能的內容。
如下圖(客戶端和服務器之間的 HTTP 協議基本框架)所示,爲一個客戶端和服務器之間的 HTTP 協議訪問基本過程。
在 Internet 上,HTTP 通信通常發生在 TCP/IP 連接之上。默認端口是 TCP 協議的 80 端口,其他端口也是可用的。但這並不是說 HTTP 協議在 Internet 或其他網絡的其他協議之上可以完成,HTTP 只能在 TCP 協議的基礎之上進行傳輸。
在 WWW 中,“ 客戶 ” 與 “ 服務器 ” 是一個相對的概念,這個概念只在某個連接中有效,某個連接中的客戶在另一個場景中可能是服務器。WWW 服務器運行時,一直在 TCP80 端口(WWW 的默認端口)監聽,等待連接請求的出現。
2. HTTP協議的內部過程
以上簡要介紹了 HTTP 協議的概要運作方式,下面對 HTTP 協議的內部操作過程進行詳細介紹。
首先,簡單介紹基於 HTTP 協議的客戶 / 服務器模式的信息交換過程,如下圖(客戶端和服務器之間的 HTTP 請求響應的過程)所示, 它分 4 個過程:建立連接、發送請求信息、發送響應信息、關閉連接。
(1)建立連接。連接的建立是通過申請套接字(Socket)實現的。客戶打開一個套接字並把它綁定在一個端口上,如果成功,就相當於建立了一個虛擬文件。
(2)發送請求。打開一個連接後,客戶端把請求消息送到服務器的監聽端口上,完成提出請求動作。
HTTP/1.0請求消息的格式爲:
請求消息 = 請求行(通用信息丨請求頭丨實體頭) CRLF[實體內容]
請求行 = 方法請求 URL HTTP 版本號 CRLF
方法 = GET|HEAD|POST|擴展方法
URL = 協議名稱 + 宿主名 + 目錄與文件名
請求行中的方法用於 HTTP 的動作方式,常用的方法有 GET、HEAD 和 POST。不同的請求對象對應 GET 的結果是不同的,對應關係如下:
對象 GET 的結果
文件 文件的內容
程序 該程序的執行結果
數據庫査詢 査詢結果
HEAD 方法要求服務器查找某對象的元信息,而不是對象本身。
POST 方法從客戶端向服務器傳送數據,POST 發送的數據被服務器接收後進行處理。一個請求的例子如下:
GEThttp://networking.zju.edu.cn/zju/index.htmHTTP/1.0
頭信息又稱爲元信息,即信息的信息,利用元信息可以實現有條件的請求或應答。
請求頭——告訴服務器怎樣解釋本次請求,主要包括用戶可以接受的數據類型、壓縮方法和語言等。
實體頭——實體信息類型、長度、壓縮方法、最後一次修改時間、數據有效期等。
實體——請求或應答對象本身。
(3)發送響應。服務器在處理完客戶的請求之後,要向客戶端發送響應消息。
HTTP/1.0 的響應消息格式如下:
響應消息 = 狀態行(通用信息頭|響應頭|實體頭) CRLF (實體內容)
狀態行 = HTTP 版本號 狀態碼 原因敘述
狀態碼錶示響應類型
1XX 保留
2XX 表示請求成功地接收
3XX 爲完成請求客戶需進一步細化請求
4XX 客戶錯誤
5XX 服務器錯誤
響應頭的信息包括:服務程序名、通知客戶清求的 URL 需要認證、請求的資源何時能使用。
(4)關閉連接。客戶和服務器雙方都可以通過關閉套接字來結束 TCP/IP 對話。