Http使用的是可靠的數據傳輸協議,因此即使數據來自地球的另一端,也能夠確保數據在傳輸過程中不會被損壞或產生混亂。
這樣用戶在訪問信息時就不用擔心其完整性了。
web服務端與服務器是如何通信的
Web內容都是存儲在web服務器上的,web服務器所使用的是http協議,因些經常會被稱為Http服務器,http客戶端發出請
求會話,它們會提供數據,客戶端向服務器發送HTTP請求,服務器會在HTTP響應中回送請求的數據。如圖
web資源
web服務器是web資源(web resource)的宿主,web資源的web內容的源頭。最簡單的web資源是web服務器
文件系統中的靜態文件。這些文件可以包含任意內容:文本內容,HTML文件,圖片等。
因特網上有數千種不同的數據類型,HTTP仔細地給每種要通過WEB傳輸的對象都打上了名為MIME類型(mime type)
的數據格式標簽。當web瀏覽器從服務器中取回一個對象時,會去查看相關的MIME類型,看看它是否知道
應該如何處理這個對象。大多數瀏覽器可以處理數百種覺的對象類型:顯示圖片文件、解析並格式化HTML文件、
通過計算機聲卡插入音頻文件,或者運行外部插件軟件來處理特殊格式的數據。
MIME類型是一種文本標記,表示一種主要的對象類型和一個我寫的子類型,中間由一條斜杠來分隔。如
- HTML格式的文本文檔由text/html類型來標記
- 普通的ASCII文本由text/plain類型來標記
- JPEG版本的圖片為image/gpeg類型
- GIF格式的圖片為image/gif類型
常見的MIME類型有數百個,更多類型請查看 w3school
http://www.w3school.com.cn/media/media_mimeref.asp
每個web服務器資源都有一個名字,這樣客戶端就可以說明它們要找的資源是什么了,服務器資源名稱被稱為
統一資源標識符(Uniform Resource Identifier,URI)。
URI就像因特網上的身份證一樣,在世界范圍內唯一標識並定位信息資源
這個是是我博客上的一個圖片資源URI
http://images.cnblogs.com/cnblogs_com/li-peng/578271/o_china.jpg
給出了URI,HTTP就可以解析出對象,URI有兩種形式,分別稱為URL和URN,
URL統一資源定位符是資源標識符最常見的形式。URL描述了一台特定服務器上某資源的特定位置。它們可以明確說明如何從一個
精確、固定的位置獲取資源。
大部分URL都遵循一種標准格式,這種格式包含三個部分
- URL的第一部分被稱為方案(scheme)說明了訪問資源所使用的協議類型。這部分通常就是HTTP協議(http://).
- 第二部分給出了服務器的因特網地址(如:www.images.cnblogs.com)
- 其余部分指定了Web服務器上的某個資源(如:cnblogs_com/li-peng/578271/o_china.jpg)
URN統一資源名。URN是作為特定內容的唯一名稱使用的。它與當前的資源所在地無關。使用這些與位置無關的URN,就可以將資源四處搬移。通過URN,還可以用同一個名稱能過多種網絡協議來訪問資源。
Urn還處於試驗階段,這里不詳細介紹了
事務
一個http事務由一條請求命令和一個(從服務器發回客戶端的)響應結果組成。這種通信是通過名為HTTP報文(http message)的格式化數據進行的
方法
HTTP支持幾種不同的請求命令,這些命令被稱為HTTP方法。每條HTTP請求報文都包含一個方法。這個方法會告訴服務器要執行什么動作(獲取一個web頁面、運行一個網關程序、刪除一個文件等)。下面列出了五種常見的HTTP方法
GET | 從服務器向客戶端發送發送命名資源 |
PUT | 將來自客戶端的數據存儲到一個命名的服務器資源中去 |
DELETE | 從服務器中刪除命名資源 |
POST | 將客戶端數據發送到一個服務器網關應用程序 |
HEAD | 僅發送命名資源響應中的HTTP首部 |
這些方法在以后會詳細討論。
狀態碼
每條HTTP響應報文返加時都會攜帶一個狀態碼,狀態碼是一個三們數字的代碼告知客戶端請求是否成功,或者是否需要采取其他動作
下表列出了幾種常用的狀態碼
200 | OK,文檔正確返回 |
302 | Redirect(重定向),到其他地方去獲取資源 |
404 | Not Found(沒找到)。無法找到這個資源 |
詳細http://www.w3school.com.cn/tags/html_ref_httpmessages.asp
Web頁面中可以包含多個對象
應用程序完成一項任務時通常會發布多個HTTP事件。比如,Web瀏覽器會發布一系列HTTP事務來獲取並顯示一個包含了豐富圖片的WEB頁面。
瀏覽器會執行一個事務來獲取描述頁面布局的HTML“框架”,然后發布另外的HTTP事務來獲取每個嵌入式圖片、圖像面板、java小程序,這些嵌入式資源甚至可能位於不同的服務器上。
復全Web頁面要為每個嵌入式資源使用一個單獨的事務
報文
先簡單說一個HTTP請求和響應報文結構,以扣會深入研究HTTP報文
HTTP報文是由一行一行的簡單字符串組成。HTTP報文都是純文本,不是二進制代碼,所以人們可以
很方便地對其進行讀寫。
從WEB客戶端發往WEB服務器的HTTP報文稱為請求報文(request message)從服務器發客戶端的報文稱為響應報文
(response message) ,此外沒有其他類型的HTTP報文。HTTP請求和響應報文的格式很類似
HTTP報文包含以下三個部分
- 起始行
報文的第一行就是起始行,在請求報文中用來說明要做什么,在響應報文中說明出現了什么情況
- 首部字段
起始行后面有零個或多個首部字段。每個首部字段都包含一個名字和一個值,為了便於解析,兩者之間用冒號(:)分隔。首部以一個空行結束。添加一個首部字段和添加新行一樣簡單
- 主體
空行之后就是可選的報文主體了,其中包含了所有類型的數據。請求主體中包括了要發送給Web服務器的數據;響應主體中裝載了要返回給客戶端的數據。起始行和首部都是文本形式且都是結構化的而主休則不同,主休中可以 包含任意的二進制數據(比如圖片、視頻、軟件程序)。當然,主體中也可以包含文本
請求的一個實例
我們就打開ORACLE的主頁http://www.oracle.com/cn/index.html