HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)
是用於從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議。它可以使瀏覽器更加高效,使網絡傳輸減少。它不僅保證計算機正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內容首先顯示(如文本先於圖形)等。
HTTP是客戶端瀏覽器或其他程序與Web服務器之間的應用層通信協議,在internet上的web服務器上存放的都是超文本信息,客戶機需要通過HTTP協議傳輸索要訪問的超文本信息.
客戶機在瀏覽器輸入所要訪問的網址,網址統稱爲URL,用於描述某服務器某特定資源的位置.格式爲:
協議://主機名稱或地址,在主機名稱[:port]
port端口:
http默認端口爲80端口,默認端口是可以省略的,如果服務器端更改了監聽端口時才需在客戶端上手動指定端口.
http請求處理的過程:
1.建立或處理鏈接:接收請求或拒絕請求.
2.接受請求
接收請求的方式通常是併發響應模型:
單進程I/O模型:串行響應;
多進程I/O模型:同時啓動多個進程,每個進程響應一個請求;
複用的I/O模型:一個進程響應多個請求;
多線程模型:一個進程生成多個線程,每個線程響應一個請求;
事件驅動:一個進程直接響應多個請求;
複用的多進程I/O結構:啓動m個進程,每個進程生個n個線程,每個線程響應一個請求;
3.處理請求
長鏈接
短連接
4.構建響應報文
5.發送響應報文
6.記錄日誌信息
httpd的特性
模塊化
支持動態的裝載和卸載(DSO)
多路處理模塊(MPM)有三種經典模塊
prefork:一個主進程,多個子進程;工作模式:一個進程響應一個請求;
主進程:管理子進程;創建套接字;接收用戶請求,並派發給某子進程處理;...
子進程:處理請求,響應請求;
worker:多進程多線程模型;一個線程響應一個請求;
主進程:管理子進程;創建套接字;接收用戶請求,並派發給某子進程處理;...
子進程:負責管理線程;
線程:處理並響應請求;
event:事件驅動模型,多進程模型,每個進程響應多個請求;
主進程:管理子進程;創建套接字;接收用戶請求,並派發給某子進程處理;...
子進程:處理並響應請求;
httpd-2.2:event爲測試模型;
在CentOS 6中使用:MPM不支持DSO機制;
httpd-2.4:production ready;
在CentOS 7中使用:支持DSO機制;
httpd的版本
CGI:公共網關接口
虛擬主機:ip,PORT,HOSTNAME
反向代理
負載均衡:bytraffic,bybussiness,byrequest
路徑別名
豐富的用戶認證機制
basic
digest
支持第三方模塊等等