簡單的瞭解HTTP協議

HTTP概念

  • HTTP協議用於客戶端與服務端之間的通信(應用HTTP協議,必定有一端是客戶端,另一端是服務器端)

  • 通過請求和響應的交換達成通信(必須由客戶端發起通信,服務器端在沒有接收到請求之前不會發送響應)

發送報文的結構:
 //包含了請求方法、請求資源路徑、HTTP協議版本
 GET(POST) /mini.png HTTP/1.1  
 //請求首部字段
 Host:120.25.226.186:32812     客戶端想訪問的服務器主機地址
 User-Agent:Mozilla/5.0        客戶端的類型,客戶端的軟件環境
 Accept:text/html              客戶端所能接收的數據類型
 Accept-Language:zh-cn        客戶端的語言環境
 Accept-Encoding:gzip         客戶端支持的數據壓縮格式 

 //內容實體
 name=user&ag=12
 響應報文的結構:
 //包含了HTTP協議版本、狀態碼、狀態碼的原因說明
 HTTP/1.1 200 ok       
 //響應首部字段        
 Server:Apache-Coyote/1.1      服務器類型
 Content-Type:image/jpeg       返回數據的類型
 Content-Length:56811          返回數據的長度
 Date:Mon,23,Jun 2014 12:54:52 GMT 響應的時間

 //主體
 data....
  • HTTP是不保存狀態的協議(協議本身不會保留之前一切的請求或響應)

  • 請求URI定位資源

  • 發起HTTP請求的方法

    • GET:獲取資源
      客戶端—-GET(訪問某個資源)—–>服務器

    • POST:發給服務器的參數全部放在請求體中
      客戶端—-POST(上傳某個信息)—–>服務器

    • PUT:傳輸文件(PUT自身不帶驗證機制,任何人都可以傳,不安全)
      客戶端—-PUT(上傳一個文件)—–>服務器

    • HEAD:獲得報文首部(不返回主體部分,只返回響應的首部)
      客戶端—-HEAD(把那個相關信息告訴我)—–>服務器

    • DELETE:刪除文件(與PUT相反,不安全)
      客戶端—-HEAD(把那個文件刪除)—–>服務器

    • OPTIONS:詢問支持的方法(查詢對請求URI指定資源支持的方法)
      客戶端—-OPTIONS(這個資源支持哪些方法訪問)—–>服務器

  • 持久連接節省通信量(建立1次TCP連接後可進行多次請求和響應)

    • 持久性連接的特點:只要任意一端沒有明確提出斷開,則保持TCP的連接
    • 管線化方式:所謂的管線化方式是指同時並行發送多個請求,而不需要一個接一個地等待響應
  • 使用Cookie的狀態管理

    • Cookie技術通過在請求和響應報文中寫入cookie信息來控制客戶端的狀態
    • Cookie會根據從服務器端發送的響應報文內的一個叫Set-Cookie的首部字段信息,通知客戶端保存Cookie,當下次客戶端再次請求時,客戶端會自動在請求的報文中加入Cookie值發送出去
    • 服務器端發現客戶端發來的Cookie時,會去檢查是哪一個客戶端發送的請求,對比服務器上的記錄,最後得到之前的狀態信息
1)請求報文(沒有Cookie)信息的狀態
 GET /mini.png HTTP/1.1  
 Host:120.25.226.186:32812
 *首部字段內沒有Cookie的相關信息

(2)響應報文(服務器端生成Cookie信息)
 HTTP/1.1 200 ok       
 Date:Mon,23,Jun 2018 12:54:52 GMT 
 Server:Apache
 <Set-Cookie:sid=123123123; path=/;expires=Wed,=>Jun 2018 12:54:52 GMT>
 Content-Type:image/jpeg      

(3)請求報文(自動發送保存着的Cookie信息)
 GET /mini.png HTTP/1.1  
 Host:120.25.226.186:32812
 Cookie:sid=123123123

HTTP返回結果的狀態碼

狀態碼 類別 原因短語 備註
200 成功狀態碼 OK
204 成功狀態碼 NO Content 請求成功但是沒有資源可返回
206 成功狀態碼 Partial Content 對資源某一部分的請求
301 重定向狀態碼 Moved Permanently 資源的URI不對
302 重定向狀態碼 Found 臨時重定向
303 重定向狀態碼 See Other 資源存在多個URI,應使用GET方法請求
304 重定向狀態碼 Not Modified 資源已找到,但未符合條件
307 重定向狀態碼 Temporary Redirect 臨時重定向
400 客戶端錯誤 Bad Request 請求報文中語法不對
401 客戶端錯誤 Unauthorized 該請求需要HTTP認證
403 客戶端錯誤 Forbidden 不能訪問該資源
404 客戶端錯誤 Not Found 服務器上沒有該資源
500 服務器錯誤 Internal Server Error 服務器內部資源不對
503 服務器錯誤 Service Unavailable 服務器超負荷或停機維護

與HTTP協作的web服務器

  • 虛擬主機:是指在網絡服務器上分出一定的磁盤空間,用戶可以租用此部分空間,以供用戶放置站點及應用組件,提供必要的數據存放和傳輸功能。
  • 通信數據轉發

    • 代理:是一種有轉發功能的應用程序,它扮演了位於服務器和客戶端“中間人”的角色,接收由客戶端發送的請求並轉發給其他服務器,同時也接受其他服務器返回的響應轉發給客戶端

      • 代理不會改變請求的URI,會直接發送給持有資源的服務器(源服務器)
      • 代理服務器轉發時,需要附加Via首部字段來標記經過的主機信息
        這裏寫圖片描述
      • 緩存代理(常說的鏡像):代理服務器轉發響應時,緩存代理會預先將資源的副本保存在代理服務器上,當代理服務器再次收到相同資源的請求時,代理服務器可直接將之前緩存的資源作爲響應返回
      • 透明代理:轉發請求會響應時,不對body做任何加工的代理類型叫透明代理,對報文內容做加工的代理叫非透明代理
    • 網關:轉發其他服務器通信數據的服務器,接收從客戶端發送來的請求時,他就像自己擁有資源的服務器一樣對請求進行處理

      • 網關能使通信新路上的服務器提供非HTTP協議服務
        這裏寫圖片描述
      • 利用網關能夠提高通信安全性,可以在客戶端與網關之間的通信線路上加密以確保連接安全(比如網關可以關聯數據庫)
    • 隧道:在相隔甚遠的客戶端和服務器之間進行中轉,並保持雙方通信連接的應用程序

      • 隧道可按要求建立一條與其他服務器通信的線路,可以使用SSL等加密手進行通信,隧道的目的就是確保客戶端能與服務器進行安全的通信
      • 隧道本身不對HTTP做任何解析,保持原樣中轉給服務器
        這裏寫圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章