Web服務器是Web資源的容器。Web資源是Web內容的源頭。內容資源既能夠是靜態的Html,圖片,js也能夠是動態的腳本程序生成的內容。html
Web服務器會爲因此Http對象類型附加一個MIME類型,當Web瀏覽器從服務器中取回一個對象時,會先查看其相關的MIME的類型,查看是否能夠處理這個對象,瀏覽器能處理常見的數百種對象類型,例如,顯示圖片,播放音樂或者使用外部的軟件來處理特殊的格式web
MIME類型是一種文本標記,表示【主要對象/子類型】,中間經過斜槓來區分瀏覽器
html格式爲text/html緩存
普通的ascii文本文檔爲text/plain性能優化
jpeg圖片爲image/jpeg類型服務器
gif圖片爲image/gif類型app
潘哥的QuickTime視頻文件爲video/quicktime類型框架
微軟的PowerPoint演示文件爲application/vnd.ms-powerpoint類型tcp
主要用來在互聯網上標識資源存在的路徑爲知的,相似顯示生活中的地址同樣
URI又分爲URL和URNide
URL 統一資源定位符,URL描述了一臺特定的服務器上某資源的特定位置。
通常URL都遵循以下格式
URL第一部分稱爲方案,說明訪問資源使用的協議類型,例如:http://
第二部分給出在互聯網上的位置,例如:www.joes-hardware.com
剩下的部分指定了在該服務器上的某個資源,例如:/specials/saw-blade.gif
URN統一資源名,做爲特定的名稱訪問特定的內容,與資源地址無關,URN處於試驗階段,本文大部分試驗URL來作說明。
一個HTTP事務由一條訪問請求命令和響應結果組成,簡單理解就是一次請求的往返。
http支持幾種不一樣的請求命令,這些命令統稱爲http方法(http method),某個請求都包含一個方法,這些請求會告訴服務器執行什麼類型的動做。
常見的http方法
GET方法 從服務器向客戶端發送命名資源
PUT 未來自客戶端的數據存儲到一個命名服務器資源中去
DELETE 從服務器刪除命名資源
POST 將客戶端的發送的數據發送到一個服務器的網關應用程序(即PHP)
HEAD 僅發送命名資源響應中的HTTP頭部
每條http響應報文返回都會攜帶一個響應狀態碼,告知客戶端這次請求服務端處理的狀態
常見http的狀態碼
200 OK,請求成功,返回資源
302 Redirect(重定向),到其餘地方獲取數據資源
404 Not Found(招不到),沒法找到該資源
解釋性短語,每一個狀態碼都會附帶一條解釋性的文本短語,該短語主要用於描述而已
常見短語,下列短語不同,可是都是200的狀態描述
200 ok
200 Document attached
200 Success
All`s cool, dude
即一個Web頁面統稱由多個資源組成,即一個Web頁面有html、js、圖片、視頻等, 因此一個Web頁面不是簡單的當個資源,而是多個資源的集合
http報文由純文本構成,不是二進制碼,因此很是方便人們閱讀(前提是學習http協議)
客戶端向服務器發送的http報文稱爲請求報文
從服務器想客戶端發送的http報文稱爲響應報文
除了上面兩種,沒有其餘的了
http請求報文和響應報文很相似,都包括下面三個部分
起始行
報文的第一行就是起始行,在`請求報文`中說明要作什麼,在`響應報文`中說明出現了什麼狀況
首部字段
起始行後面接零個或多個字段,每一個字段都帶有一個名字和值,造成鍵值對形式(key:value),首部由一個空行結束
主體
空行以後就是可選的報文主體了,包含了全部的數據類型。`請求主體`中包含了要發給服務器的數據,`響應主體`中裝載了要返回給客戶端的數據。 起始行和首部字段都是由文本形式且都是結構化的數據,而主體不同,能夠包含`二進制`數據(例如圖片、視頻、音頻、程序),主體也能夠包含文本
下圖是一個簡單的報文請求實例,能夠看到請求報文中的請求中的請求起始行,請求首部,和響應報文中的響應起始行,響應首部和響應主體。
注意,這個請求報文使用的get方式,因此沒有請求主體!
注意,響應報文中Content-type: text/html
即告訴瀏覽器該返回數據的主要對象(text)和子類型(html)
tcpip的篇章很大,http權威只是簡單說了幾點,這裏就說下tcpip的特色,更多資料要查詢專門講tcpip的書籍
無差錯的數據傳輸
按序傳輸(數據老是按照發發送的順序到達)
未分段的數據流(能夠在任意時刻以任意尺寸將數據發送出去)
HTTP/0.9
只支持GET方法,不支持多媒體MIME類型,各類HTTP首部或版本號,只是爲了實現獲取簡單HTML對象而已
HTTP/1.0
第一個普遍使用的HTTP版本,新增了版本號,各類HTTP首部、額外的方法,及多媒體處理等
HTTP/1.0+(非官方的標準)
新增了keep-alive鏈接,虛擬主機,代理鏈接支持
HTTP/1.1
1.1的版本修正了HTTP設計的各類缺陷,引入重要的性能優化等,當前互聯網主流的版本
HTTP-NG(又名HTTP/2.0)
繼1.1原型的建議,重點關注性能及強大的服務邏輯遠程執行框架,將來再說
上面說的都是兩個Web應用程序(客戶端瀏覽器和服務端Web服務器)兩者相互發報文來實現基本事務處理。其實在互聯網上要和不少Web應用程序交互,還有其餘的應用程序
代理
位於客戶端和服務器之間的http中間實體
緩存
http倉庫,使常常被訪問的網頁能夠保存在離客戶端更近的地方
網關
鏈接其餘應用程序的特殊Web服務器
隧道
對http報文進行盲裝發的特殊代理
Agent代理髮起自動http請求的半智能web客戶端