HTTP協議基本原理


姓名:張馨藝; 學號:201631062606

哎呀,本文依舊使用markdown語法進行編寫排版

HTTP

HTTP協議的概念

http(超文本傳輸協議):是一個基於請求與響應模式的、無狀態的、應用層的協議,常基於TCP的連接方式,HTTP1.1版本中給出一種持續連接的機制,絕大多數的Web開發,都是構建在HTTP協議之上的Web應用。

P.S:由此想到了上學期學的《計算機網絡》,覺得應該聯系到計算機網絡體系對HTTP進行理解,先占個坑,之后在復習《計算機網絡》的時候再展開詳述

由概念提取出的關鍵字:

  • 應用層協議 - 針對WEB應用
  • 一種連接的機制 - web應用之間使用HTTP協議來進行信息交換

HTTP協議的特點

  1. 客戶/服務器模式。
  2. 簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。每種方法規定了客戶與服務器聯系的類型不同。由於HTTP協議簡單,使得HTTP服務器的程序規模小,因而通信速度很快。
  3. 靈活:HTTP允許傳輸任意類型的數據對象
  4. 無連接:無連接的含義是限制每次連接只處理一個請求。服務器處理完客戶的請求,並收到客戶的應答后,即斷開連接。采用這種方式可以節省傳輸時間。
  5. 無狀態: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:
  1. 輸入:www.guet.edu.cn
    瀏覽器自動轉換成:http://www.guet.edu.cn/
  2. http:192.168.0.116:8080/index.jsp

HTTP - Web瀏覽器與Web服務器之間的通信步驟

  1. 建立TCP連接
    Web瀏覽器首先通過網絡與Web服務器建立連接,該連接是通過TCP來完成的,HTTP是比TCP更高層次的應用層協議。(TCP是傳輸層協議)
  2. Web瀏覽器向Web服務器發送請求命令
    Web瀏覽器向Web服務器發送請求命令
    例如:GET/sample/hello.jsp HTTP/1.1
  3. Web瀏覽器發送請求頭信息
    瀏覽器發送其請求命令之后,還要以頭信息的形式向Web服務器發送一些別的信息。(之后瀏覽器會發送一空白行來通知服務器,它已經結束了該頭信息的發送)
  4. Web服務器應答
    客戶機向服務器發出請求后,服務器會客戶機回送應答 例如HTTP/1.1 200 OK
  5. Web服務器發送應答頭信息
    服務器會隨同應答向用戶發送關於它自己的數據及被請求的文檔
  6. Web服務器向瀏覽器發送數據
    Web服務器向瀏覽器發送頭信息后,它會發送一個空白行來表示頭信息的發送到此為結束,接着,它就以Content-Type應答頭信息所描述的格式發送用戶所請求的實際數據。
    即發送完響應頭信息后,還會發送響應數據????
  7. Web服務器關閉TCP連接
    一般情況下,一旦Web服務器向瀏覽器發送了請求數據,它就要關閉TCP連接

以下是一張瀏覽器發送請求和服務器響應請求的示意圖(來自網絡):

HTTP請求格式

HTTP協議嚴格規定了HTTP請求和HTTP響應的數據格式
當瀏覽器向Web服務器發出請求時,它向服務器傳遞了一個數據塊,也就是請求信息,HTTP請求信息由3部分組成:

  1. 請求方法、URI、HTTP協議版本
  2. 請求頭(Request Header):包含許多客戶端環境和請求正文的有用信息
  3. 請求正文: 包含請求參數——他和請求頭之間用空格隔開,用於表示請求頭結束
  • 下面是一個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響應格式

  1. 協議版本、狀態代碼、描述
  2. 響應頭(Response Header)
  3. 響應正文
  • 下面是一個HTTP響應的例子:
    HTTP/1.1 200 OK
    Server:Apache Tomcat/5.0.12
    Date:Mon,6Oct2003 13:23:42 GMT
    Content-Length:112

VERY USEFUL!!!使用谷歌瀏覽器的開發者工具查看HTTP頭


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM