簡述http服務

簡述http協議

  1. 協議版本
    (1)http/0.9:原型版本,功能簡陋,只有一個命令GET。GET /index.html,服務器只能迴應HTML格式字符串,不能迴應別的格式
    (2)http/1.0:支持cache,MIME,method,每個TCP連接只能發送一個請求,發送數據完畢,連接就關閉,如果還要請求其他資源,就必須再新建一個連接;引入了POST命令和HEAD命令;頭信息是ACII碼,後面數據可爲任何格式
    (3)http/1.1:引入了持久連接,即TCP連接默認不關閉,可以被多個請求複用,不用聲明Connection:keep-alive;引入了管道機制,即在同一個TCP連接裏,客戶端可以同時發送多個請求,進一步改進HTTP協議的效率;新增方法:PUT,PATCH,OPTIONS,DELETE
    (4)http/2.0:頭信息和數據體都是二進制,稱爲頭信息幀和數據幀,複用TCP連接,在一個連接裏,客戶端和瀏覽器都可以同時發送多個請求或迴應,且不用按順序一一對應,避免了"隊頭堵塞",此雙向的實時通信稱爲多工。引入頭信息壓縮機制,頭信息使用gzip或compress壓縮後再發送;客戶端和服務器同時維護一張頭信息表,所有字段都會存入這個表,生成一個索引號,不發送同樣字段,只發送索引號,提高速度。允許服務器未經請求,主動向客戶端發送資源,即服務器推送。
  2. HTTP工作機制
    (1)工作機制:
    http請求:http request
    http響應:http response
    一次http事務:請求<-->響應
    (2)web資源:web resource
    一個網頁由多個資源構成,打開一個頁面,會有多個資源展示出來,但是每個資源都要單獨請求。因此,一個"web頁面"通常並不是單個資源,而是一組資源集合
    靜態文件:無需服務端做出額外處理
    文件後綴:.html,.txt,.jpg,.js,.css,.mps,.avi
    動態文件:服務端執行程序,返回執行的結果
    文件後綴:.php,.jsp,.asp
    (3)提高HTTP連接性能
    並行連接:通過多條TCP連接併發的HTTP請求
    持久連接:keep-alive,長連接,重用TCP連接,以消除連接和關閉的時延,以事務的個數和時間來決定是否關閉連接
    管道換連接:通過共享TCP連接發起併發的HTTP請求
    複用的連接:交替傳送請求和響應報文(實驗階段)
  3. URL組成
    URL:shceme://username:password@host:port/path;params?query#frag
     shceme:方案,訪問服務器以獲取資源時要使用哪種協議
     user:用戶,某些方案訪問資源時需要的用戶名
     password:密碼,用戶對應的密碼,中間用:分隔
     host:主機,資源宿主服務器的主機名或IP地址
     port:端口,資源宿主服務器正在監聽的端口號,很多方案有默認端口號
     path:路徑,服務器資源的本機名,由一個/將其與前面的URL組件分隔
     params:參數,指定輸入的參數,參數爲名/值對,多個參數,用;分隔
     query:查詢,傳遞參數給程序,如數據庫,用?分隔,多個查詢用&分隔
     frag:片段,一個片或一部分資源的名字,此組件在客戶端使用,用#分隔
  4. 一次完整的http請求處理過程
    (1)建立連接:接收或拒絕連接請求
    (2)接收請求:接收客戶端請求報文中對某資源的一次請求過程
    web訪問響應模型(web I/O)
    單進程I/O模型:啓動一個進程處理用戶請求,而且一次只處理一個,多個請求被串行響應
    多進程I/O模型:並行啓動多個進程,每個進程響應一個連接請求
    複用I/O結構:啓動一個進程,同時響應N個連接請求
    實現方法:多線程模型和事件驅動
    多線程模型:一個進程生成N個線程,每線程響應一個連接請求
    事件驅動:一個進程處理N個請求
    複用的多進程I/O模型:啓動M個進程,每個進程響應N個連接請求,同時接收M*N個請求
    (3)處理請求:服務器對請求報文進行解析,並獲取請求的資源及請求方法等相關信息,根據方法,資源,首部和可選的主體部分對請求進行處理
    HTTP常用的請求方式.Method:
    GET,POST,HEAD,PUT,DELETE,TRACE,OPTIONS
    (4)訪問資源:
    服務器獲取請求報文中請求的資源web服務器,即存放了web資源的服務器,負責向請求者提供對方請求的靜態資源,或動態運行後生成的資源
    web服務器資源路徑映射方式:
    (a)docroot
    (b)alias
    (c)虛擬主機docroot
    (d)用戶家目錄docroot
    5.構建響應報文:
    一旦web服務器識別除了資源,就執行請求方法中描述的動作,並返回響應報文。
    響應報文中包含有響應狀態碼,響應首部,如果生成了響應主體的話,還包含響應主體
    (1)http協議常用的狀態碼
    200:成功,請求數據通過響應報文的entity-body部分;OK
    301:請求的URL指向的資源已經被刪除;但在響應報文文中通過首部Location指明瞭資源現在所處的新位置;Moved Permanently
    302:響應報文Location指明資源臨時新位置 Moved Temporarily
    304:客戶端發出了條件式請求,但服務器上的資源未曾發生改變,則通過響應此響應狀態碼通過客戶端;Not Modified
    401:需要輸入賬號和密碼認證能訪問資源;Unauthorized
    403:請求被禁止;Foibidden
    404:服務器無法找到客戶端請求的資源;Not Found
    500:服務器內部錯誤;Internal Server Error
    502:代理服務器從後端服務器收到一條僞響應,如無法連接到網關;Bad Gateway
    503:服務不可用,臨時服務器維護或過載,服務器無法處理請求
    504:網關超時
    (2)響應主體:如果事務處理產生了響應主體,就將內容放在響應報文中回送過期。響應報文中通常包括:
    描述了響應主體MIME類型的Content-Type首部
    描述了響應主體長度的Content-Length
    實際報文的主體內容
    (3)URL重定向:
    web服務構建的響應並非客戶端請求的資源,而是資源另外一個訪問路徑
    (4)MIME類型:
    Web服務器要負責確定響應主體的MIME類型。多種配置服務器的方法可將MIME類型與資源管理起來
    6.發送響應報文
    7.記錄日誌
    最後,當事務結束時,web服務器會在日誌文件中添加一個條目,來描述已經執行的事務
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章