http協議學習

http:hypertext transfer protocol:超文本傳輸協議
超文本:帶有超級連接的連接
超級連接:可以實如今不一樣的文檔中跳轉
http/0.9版本:只支持純文本的傳輸(帶有超級鏈接)ASCII碼
  HTML:hypertext mark
  language:超文本標記語言
  支持get方法,且不支持請求頭html

Browser:瀏覽器
URI:uniform resource
indentifier:統一資源標識符
URL:uniform resource locator:統一資源定位符
  統一:路徑格式的統一
  protocal://address/to/resouce_path
web資源:用URL標識,而且讓用戶客戶端代理(瀏覽器)可以訪問的文件
HTML:把多種web資源整合成一個HTML文檔,並可以讓瀏覽器訪問顯示的一種語言
http/1.0版本:
   1.引入MIME機制(爲了實現可以傳輸分文本信息)
   MIME:multi Internet mail extension:多用途互聯網郵件交換協議,將非文本數據在傳輸以前從新編碼爲文本格式,接收方可以利用相反的方式將其從新還原爲原來的格式,還能調用相應的應程序顯示此文件
  擴展:SMTP:simple mail transfer protocol:簡單郵件傳輸協議
  2.請求與響應頭域
  3.響應對象以一個響應狀態行開始
  4.響應對象不止限於文本
  5.開始支持客戶端經過POST方法向web服務器提交數據,支持GET、HEAD、POST方法
  6.支持長鏈接(但默認仍是使用短鏈接),
  7.緩存機制(加快速度),以及身份驗證 web

動態網頁:web服務器存儲的文檔是非HTML文檔,而是動態語言,動態語言生成的腳本可以接受用戶的參數後造成HTML文檔,把生成的文檔返回給客戶端瀏覽器

http/1.1是目前使用最普遍的協議版本,在http1.0中使用長鏈接須要添加請求頭Connection:Keep-Alive,而在http1.1默認支持長鏈接,除非特殊聲明不支持(HTTP請求首部加上Connection:Close),http1.1引入了許多關鍵優化:keepalive鏈接。chunked編碼傳輸,字節範圍請求,請求流水線等
HTTP1.1協議中共定義了八種方法來代表Request-URI指定的資源的不一樣的操做方式:
  1. OPTIONS:返回服務器針對特定資源所支持的HTTP請求方法,也能夠利用向web發送'*'的請求來測試服務器的功能性
  2. HEAD:向服務器索要與GET請求相一致的響應,只不過想硬體將不會被返回,這一方法能夠在沒必要傳輸整個響應內容的狀況下,就能夠獲取包含在響應消息頭中的元信息
  3. GET:向特定的資源發出請求。注意:GET方法不該被用於產生「反作用」的操做中,例如在web app中,其中一個緣由是GET可能會被網絡爬蟲等隨意訪問
  4. POST:向指定資源提交數據進行數據請求(例如提交表單或者上傳文件).數據被包含在請求體中,POST請求可能會致使新的資源的創建或已有資源的修改
  5. PUT:向指定資源位置上傳其最新內容
  6. DELETE:請求服務器刪除Request-URI所標識的資源
  7. TRACE:回顯服務器收到的請求,主要用於測試和診斷
  8. CONNECT:http/1.1協議中預留給可以將鏈接改成管道方式的代理服務器 緩存

http/2.0是下一代http協議,目前應用還很是少,主要特色有:
  多路複用(二進制分幀):在二進制分幀層上,http2.0將全部傳輸的信息分割爲更小的消息和幀,並對他們採用二進制格式的編碼
  頭部壓縮:當一個客戶端向相同服務器請求許多資源時,向來自同一個網頁的圖像,將會有大量的請求看上去幾乎一樣的,這就須要壓縮技術對付這種幾乎相同的信息
  隨時復位:http1.1一個缺點是當http信息有必定長度大小數據傳輸時,你不能方便地隨時中止他,中斷TCP鏈接的代價是昂貴的,使用http2的RST_STREAM將可以方便中止一個信息傳輸,啓動新的信息,在不中斷鏈接的狀況下提升帶寬利用效率 服務器

服務器端推流:server Push:客戶端請求一個資源X,服務器端判斷也許客戶端還須要資源Z,在無需事先詢問客戶端狀況下將資源Z推送到客戶端,客戶端接受到後,能夠緩存起來以備後用.
優先權和依賴:每一個流都有本身的優先級別,會代表哪一個流是最重要的,客戶端會指定哪一個流是最重要的,有一些依賴參數,這樣一個流能夠依賴另外一個流,優先級別能夠在運行時動態改變,當用戶滾動頁面時,能夠告訴瀏覽器哪一個圖像是最重要的,你也能夠在一組流中進行優先篩選,可以突出抓住重點流

http報文:請求報文(http request)和響應報文(http response) 網絡

  請求報文語法: 多線程

<method><request-URI><version>
        <headers>
        <entity-body>

  響應報文語法: 架構

<version><status><reason-phrase>
        <headrers>
        <entity-body>

響應報文的狀態代碼:

  1xx:純信息,已經棄用
  2xx:「成功「類的信息
  3xx:重定向類的信息
  4xx:客戶端錯誤類信息
  5xx:服務器端錯誤類的信息 併發

Web服務器處理併發鏈接請求的併發模型

  1.單線程web服多器(Single-threaded web servers):此種架構方式中,web服多器一次處理一個請求.結束後讀取井處理下一個請求.在某請求處理辻程中,其它全部的清求將被阻塞,所以;在併發請求較多的場景中將會出現嚴重的性能問題(即一次只能處理一個請求)app

  2.多進程/多線程web服灸器:此種架構方式中, web服多器生成多個進程或線程並行處理多個用戸請求,進程或線程能夠按需或事先生成、有的web服務器應用程序爲每一個用戸請求生成一個単獨的進程或線程來進行響應,不過, 一旦併發請求數量達到成千上萬吋,多個同吋進行的進程或線程將會消耗大量的系統資源(即每一個進程只能響應一個請求,而且一個進程對應一個線程)

  3.I/O多路複用web服努器:爲了可以支持更多的並友用戶清求,愈來愈多的web服努器正在採用多種複用的架構--即同歩監控全部的鏈接靖求的活動狀態,當一個鏈接的狀態發生改變時(如數據準各完畢或發生某錯誤)將爲其執行一系列特定操做;在操做完成後此鏈接將從新變回暫時的穩定態並返回至打開的鏈接列表中,直到下次的狀態改變,因爲其多路複用的特性,進程或線程不會被空閒的鏈接所佔用,於是能夠提供高效的工做模弌.(
這種架構能夠理解爲一個進程能夠生成多個線程,每一個請求交給一個線程程迸行處理)


歡迎各×××陳師傅」
http協議學習