姓名:張馨藝; 學號:201631062606
哎呀,本文依舊使用markdown語法進行編寫排版
目錄
HTTP
HTTP協議的概念
http(超文本傳輸協議):是一個基於請求與響應模式的、無狀態的、應用層的協議,常基於TCP的連接方式,HTTP1.1版本中給出一種持續連接的機制,絕大多數的Web開發,都是構建在HTTP協議之上的Web應用。
P.S:由此想到了上學期學的《計算機網絡》,覺得應該聯系到計算機網絡體系對HTTP進行理解,先占個坑,之后在復習《計算機網絡》的時候再展開詳述
由概念提取出的關鍵字:
- 應用層協議 - 針對WEB應用
- 一種連接的機制 - web應用之間使用HTTP協議來進行信息交換
HTTP協議的特點
- 客戶/服務器模式。
- 簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯系的類型不同。由於HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快。
- 靈活:HTTP允許傳輸任意類型的數據對象。
- 無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答后,即斷開連接。采用這種方式可以節省傳輸時間。
- 無狀態:HTTP協議是無狀態協議。無狀態是指協議對於事務處理沒有記憶能力。缺少狀態意味着如果后續處理需要前面的信息,則它必須重傳,這樣可能導致每次連接傳送的數據量增大。另一方面,在服務器不需要先前信息時它的應答就較快。
HTTP - URL
HTTP URL:URL是一種特殊類型的URI,包含了用於查找某個資源的足夠的信息
格式: http://host[":"port][abs_path]
- http 表示要通過HTTP協議來定位網絡資源;
- host 表示合法的Internet主機域名或者IP地址;
- port 指定一個端口號,為空則使用缺省端口80;abs_path指定請求資源的URI;
- 如果URL中沒有給出abs_path,那么當它作為請求URI時,必須以“/”的形式給出,通常這個工作瀏覽器自動幫我們完成。
eg:
- 輸入:www.guet.edu.cn
瀏覽器自動轉換成:http://www.guet.edu.cn/ - http:192.168.0.116:8080/index.jsp
HTTP - Web瀏覽器與Web服務器之間的通信步驟
- 建立TCP連接
Web瀏覽器首先通過網絡與Web服務器建立連接,該連接是通過TCP來完成的,HTTP是比TCP更高層次的應用層協議。(TCP是傳輸層協議) - Web瀏覽器向Web服務器發送請求命令
Web瀏覽器向Web服務器發送請求命令
例如:GET/sample/hello.jsp HTTP/1.1 - Web瀏覽器發送請求頭信息
瀏覽器發送其請求命令之后,還要以頭信息的形式向Web服務器發送一些別的信息。(之后瀏覽器會發送一空白行來通知服務器,它已經結束了該頭信息的發送) - Web服務器應答
客戶機向服務器發出請求后,服務器會客戶機回送應答 例如HTTP/1.1 200 OK - Web服務器發送應答頭信息
服務器會隨同應答向用戶發送關於它自己的數據及被請求的文檔 - Web服務器向瀏覽器發送數據
Web服務器向瀏覽器發送頭信息后,它會發送一個空白行來表示頭信息的發送到此為結束,接着,它就以Content-Type應答頭信息所描述的格式發送用戶所請求的實際數據。
即發送完響應頭信息后,還會發送響應數據???? - Web服務器關閉TCP連接
一般情況下,一旦Web服務器向瀏覽器發送了請求數據,它就要關閉TCP連接
以下是一張瀏覽器發送請求和服務器響應請求的示意圖(來自網絡):
HTTP請求格式
HTTP協議嚴格規定了HTTP請求和HTTP響應的數據格式
當瀏覽器向Web服務器發出請求時,它向服務器傳遞了一個數據塊,也就是請求信息,HTTP請求信息由3部分組成:
- 請求方法、URI、HTTP協議版本
- 請求頭(Request Header):包含許多客戶端環境和請求正文的有用信息
- 請求正文: 包含請求參數——他和請求頭之間用空格隔開,用於表示請求頭結束
- 下面是一個HTTP請求的例子:
GET/sample.jspHTTP/1.1 [請求方法]
Accept:image/gif.image/jpeg,/ [請求頭]
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
Accept-Encoding:gzip,deflate
[空行]
username=zhangxinyi&password=1234 [請求正文]
HTTP響應格式
- 協議版本、狀態代碼、描述
- 響應頭(Response Header)
- 響應正文
- 下面是一個HTTP響應的例子:
HTTP/1.1 200 OK
Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:23:42 GMT
Content-Length:112