自學 Linux 18—Linux 應用層網絡服務程序簡介—HTTP 協議和服務

  操作系統中有很多默認的網絡服務或者客戶端程序,例如 Web 服務器和瀏覽器、FTP 服務器和客戶端、Telnet 服務器和客戶端等,在 Linux 環境下有 ApacheMozillaVSFtp 等。接下來對這些程序的協議和使用進行介紹,主要包括以下內容:

  █ HTTP 協議及服務,主要介紹 HTTP 協議的標準和應用;
  █ 介紹 FTP 協議標準,並介紹 FTP 客戶端的使用;
  █ 對 TELNET 的協議標準進行簡介;
  █ 介紹 Linux 下網絡服務的配置方法。

HTTP協議和服務

  HTTP 協議是目前應用最廣泛的應用層網絡協議,它是目前互聯網繁榮的基礎。

1. HTTP 協議概述

  應用層協議 HTTPWeb 的核心。HTTP 協議在 Web 的客戶端程序和服務器程序中得以實現,運行在不同系統上的客戶端程序和服務器程序,通過交換 HTTP 消息彼此交流。HTTP 協議定義數據格式,使得服務器和客戶端通過協議進行數據交流。

  Web 頁面(webpage,也稱爲文檔)是客戶端和服務器交流的基本內容,它由多個對象構成。對象(object)是可由 URL 進行尋址的文件,例如 HTML 文件、JPG 圖像、GIF 圖像、Java 小應用程序、語音片段等。

  Web 頁面大多數由一個基本 HTML 文件和很多 HTML 文件中所引用的對象構成。例如,如果某個 Web 頁面包含 1HTML 文本文件和 5PNG 圖像,這個 Web 頁面就由 6 個對象構成,即基本 HTML 文件加 5 個圖像。這個基本的 HTML 文件使用文件中的內置 URL 來引用本頁面中所使用的其他對象,例如上述的 5PNG 圖像需要在基本 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 ChromeFirefox 和微軟的 IE 等。Web 服務器存放可由 URL 尋址的 Web 對象。Web 服務器還實現 HTTP 的服務器端。流行的 Web 服務器有 Apache、 微軟的 IIS 以及 IBM WebSphere

2. HTTP 協議的基本過程

  HTTP 協議是基於客戶端 / 服務器之間的請求響應進行交互的。

1. HTTP 協議的宏觀過程

  一個客戶端與服務器建立連接後,發送一個請求給服務器,請求方式的格式爲:統一資源標識符、協議版本號,後邊是 MIME 信息包括請求修飾符、客戶端信息和可能的內容。

  服務器接到客戶端的請求後,向客戶端發送相應的響應信息,其格式爲:一個狀態行包括信息的協議版本號、一個成功或錯誤的代碼,後邊是 MIME 信息包括服務器信息、實體信息和可能的內容。

  如下圖(客戶端和服務器之間的 HTTP 協議基本框架)所示,爲一個客戶端和服務器之間的 HTTP 協議訪問基本過程。

客戶端和服務器之間的 HTTP 協議基本框架

  在 Internet 上,HTTP 通信通常發生在 TCP/IP 連接之上。默認端口是 TCP 協議的 80 端口,其他端口也是可用的。但這並不是說 HTTP 協議在 Internet 或其他網絡的其他協議之上可以完成,HTTP 只能在 TCP 協議的基礎之上進行傳輸。

  在 WWW 中,“ 客戶 ” 與 “ 服務器 ” 是一個相對的概念,這個概念只在某個連接中有效,某個連接中的客戶在另一個場景中可能是服務器。WWW 服務器運行時,一直在 TCP80 端口(WWW 的默認端口)監聽,等待連接請求的出現。

2. HTTP協議的內部過程

  以上簡要介紹了 HTTP 協議的概要運作方式,下面對 HTTP 協議的內部操作過程進行詳細介紹。

  首先,簡單介紹基於 HTTP 協議的客戶 / 服務器模式的信息交換過程,如下圖(客戶端和服務器之間的 HTTP 請求響應的過程)所示, 它分 4 個過程:建立連接發送請求信息發送響應信息關閉連接

客戶端和服務器之間的 HTTP 請求響應的過程

  (1)建立連接。連接的建立是通過申請套接字(Socket)實現的。客戶打開一個套接字並把它綁定在一個端口上,如果成功,就相當於建立了一個虛擬文件。

  (2)發送請求。打開一個連接後,客戶端把請求消息送到服務器的監聽端口上,完成提出請求動作。

  HTTP/1.0請求消息的格式爲:

請求消息	= 請求行(通用信息丨請求頭丨實體頭) CRLF[實體內容]
請求行	= 方法請求 URL HTTP 版本號 CRLF
方法		= GET|HEAD|POST|擴展方法
URL		= 協議名稱 + 宿主名 + 目錄與文件名

  請求行中的方法用於 HTTP 的動作方式,常用的方法有 GETHEADPOST。不同的請求對象對應 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 對話。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章