web 內容都是存儲在 web服務器上的,web服務器所使用的是 Http協議,所以常常會被稱爲 Http服務器.客戶端向服務器發送Http請求,服務器會在 Http響應中回送所請求的數據. Http客戶端和Http服務器共同構成了萬維網的基本組件.html
資源web
web服務器是 web資源(web resource)的宿主。最簡單的 web資源就是 web服務器文件系統中的 靜態文件,這些文件能夠包含任意內容:文本文件、html文件、圖片文件,或全部其餘你可以想到的格式。還能夠是 根據須要生成內容的軟件程序。瀏覽器
媒體類型緩存
因特網上有數千種不一樣的數據類型,Http仔細地給每種要經過 web傳輸的對象都打上了名爲MIME類型(MIME type)的數據格式標籤。最初設計MIME(Multipurpose Internet Mail Extension)是爲了解決在不一樣的電子郵件系統直接搬移報文時存在的問題。MIME在電子郵件系統中工做得很是好,所以Http也採納了它,用它來描述並標記多媒體內容。安全
web服務器會爲 全部 Http 對象數據附加一個MIME類型,當web瀏覽器從服務器中取回一個對象時,會去查看相關的MIME類型,看看它是否知道應該如何處理這個對象。大多數瀏覽器均可以處理數百種常見的對象類型:顯示圖片文件、解析並格式化html文件、經過計算機聲卡播放音頻文件或者運行外部插件軟件來處理特殊格式的數據。服務器
MIME類型是一種文本標記,表示一種主要的對象類型和一個特定的子類型,中間由一條斜槓來分隔。網絡
html 格式的文本文檔 由 text/html 類型來標記.tcp
普通的 ASCII 文本文檔 由 text/plain 類型來標記.url
JPEG 版本的圖片爲 image/jpeg 類型,GIF 格式的 圖片爲 image/gif類型.插件
URI
每一個web服務器資源都有一個名字,這樣客戶端就能夠說明他們感興趣的資源是什麼了。服務器資源名被稱爲統一資源標識符(Uniform Resource Identifier,Uri).Uri就像因特網上的郵政地址同樣,在世界範圍內惟一標識並定位信息資源.
統一資源定位符(uri)是資源標識符最多見的形式。它描述了一臺特定服務器上某資源的特定位置。他們能夠明確說明如何從一個精確、固定的位置獲取資源.
大部分Uri都遵循一種標準格式,這種格式包含三個部分:
一、Uri的第一部分被稱爲方案(scheme),說明了訪問資源所使用的協議類型。這部分一般就是 http協議(http://).
二、第二部分給出了 web服務器的因特網地址(好比,www.joes-hardware.com)。
三、其他部分指定了 web服務器上的某個資源(好比,/specials/saw-blade.gif).
事務
客戶端是如何經過Http 與 web服務器及其資源進行事務處理的??
一個http事務由一條(從客戶端發往服務器的)請求命令和一個(從服務器發回客戶端的)響應組成,這種通訊是經過名爲 http報文(http message)的格式化數據塊進行的。
如圖:包含請求與響應報文的 http事務
http 方法
http 支持幾種不一樣的請求命令,這些命令被稱爲 http方法(http method)。每條 http請求報文都包含一個方法,這個方法會告訴服務器要執行什麼動做(獲取一個 web 頁面、運行一個網關程序、刪除一個文件等)。
一些常見的http方法:
GET : 從服務器向客戶端發送命名資源
PUT:未來自客戶端的數據存儲到一個命名的服務器資源中去
DELETE : 從服務器中刪除命名資源
POST : 將客戶端數據發送到一個服務器網關應用程序.
HEAD : 僅發送命名資源響應中的 Http 首部.
狀態碼
每條 http 響應報文返回時都會攜帶一個狀態碼。狀態碼是一個三位數字的代碼,告知客戶端請求是否成功,或者是否須要採起其餘動做。
常見的 http 狀態碼:
200 : ok,文檔正確返回.
302 : Redirect(重定向)。到其餘地方去獲取資源.
404 : Not Found(沒找到),沒法找到這個資源.
http 報文
http 報文是由一行一行的簡單字符組成的。http報文都是純文本,以下圖:
請求報文(request message):從web客戶端發往 web服務器的 http報文;
響應報文(response message): 從服務器發往客戶端的報文.
報文分爲如下三個部分:
一、起始行
報文的第一行就是起始行,在請求報文中用來講明要作些什麼,在響應報文中說明出現了什麼狀況。
二、首部字段
起始行後面有零個或者多個首部字段。每一個首部字段都包含一個名字和一個值,爲了便於解析,二者之間用冒號(:)來分隔。首部以一個空行結束。添加一個首部字段和添加新行同樣簡單.
三、主體
空行以後就是可選的報文主體了,其中包含了全部類型的數據。請求主體中包括了要發送給web服務器的數據;響應主體中裝載了要返回給客戶端的數據。主體中能夠包含任意的二進制數據,也能夠包含文本。
鏈接
http 是個 應用層協議,http無須要操心網絡通訊的具體細節,它把聯網的細節都交給了通用、可靠的因特網傳輸協議 tcp/ip;
tcp 提供了:無差錯的數據傳輸;安序傳輸(數據老是會按照發送的順序到達);未分段的數據流(能夠在任意時刻以任意尺寸將數據發送出去)。
鏈接及響應步驟以下:
一、瀏覽器從 url 中解析出服務器的主機名;
二、瀏覽器將服務器的主機名轉換成服務器的ip地址;
三、瀏覽器將端口號(如有的話)從url中解析出來;
四、瀏覽器創建一條與 web服務器的 tcp 鏈接;
五、瀏覽器向服務器發送一條 http 請求報文;
六、服務器向瀏覽器回送一條 http 響應報文;
七、關閉鏈接,瀏覽器顯示文檔;
Web 的結果組件
代理
位於客戶端和服務器直接的 http 中間實體,接收全部客戶端的 http請求,並將這些請求轉發給服務器(可能會對請求進行修改以後轉發)。對用戶來講,這些應用程序就是一個代理,表明用戶訪問服務器。出於安全考慮,一般會將代理做爲轉發全部 web流量的可信任中間節點使用,代理換能夠對請求和響應進行過濾。
緩存
web緩存(web cache) 或者 代理緩存(proxy cache) 是一種特殊的 http 代理服務器,能夠將通過代理傳送的經常使用文檔複製保存起來。下一個請求同一文檔的客戶端就能夠享受緩存的私有副本所提供的的服務了。
網關
網關(gateway)是一種特殊的服務器,做爲其餘服務器的中間實體使用。一般用於將 http流量轉換成其餘的協議。網關接受請求時就好像本身是資源的源端服務器用於,客戶端可能並不知道本身正在與一個網關進行通訊。