一、http簡介
http:hypertext transport protocol 超文本傳輸協議
Html:hypertext mark langguage :超文本標記語言
http協議的版本:
http/0.9: 1991,僅用於傳輸html文檔
http/1.0: 支持多媒體數據的處理,keep-alive(保持連接),有緩存功能
http/1.1: 更多的請求方法,更精細的緩存控制,持久連接
二、HTTP報文
在客戶端和服務器端進行通信的時候,通信雙方在網絡中發送請求和響應報文,雙方的報文必須要遵循一定的格式相互發送。
http報文包括三個部分,起始行,首部字段和主體。
<method>: 請求方法, 希望服務器端執行的動作,如GET、HEAD、POST等 <request-url>: 請求的資源,可以是相對路徑,也是完整的URL <version>:協議版本,格式HTTP/<major>.<minor>,如http/1.0 <headers>:HTTP首部 <status>: 狀態碼 <reason-phrase>:原因短語,數字狀態碼易讀信息 <entity-body>: 主體部分
1. 請求報文:request
報文格式: <method> <request-URL> <version> <headers> <entity-body>
2. HTTP響應:response
報文格式: <version> <status> <reason-phrase> <headers>
<entity-body>
(圖片摘自《HTTP權威指南》)
還是舉例驗證一下吧,更加直觀!
[root@station1 ~]# telnet 172.16.0.1 80 Trying 172.16.0.1... Connected to 172.16.0.1. Escape character is '^]'. GET /centos6.repo http/1.1 --{客戶端request#方法/請求目錄/協議版本 Host: 172.16.0.1 -------------------------#主機ip HTTP/1.1 200 OK ----------{服務器端response#版本/狀態碼/結果及原因 Date: Thu, 22 Aug 2013 13:01:44 GMT-------#日期 Server: Apache/2.2.15 (CentOS) -----------#服務器信息 Last-Modified: Sat, 17 Aug 2013 10:06:13 GMT ETag: "20de6-12d-4e421db6ce2c1" Accept-Ranges: bytes Content-Length: 301 Connection: close Content-Type: text/plain; charset=UTF-8 [base]------------------------------------#返回請求內容 name=CentOS $releasever $basearch on local server 172.10.0.1 baseurl=http://172.16.0.1/cobbler/ks_mirror/centos-6.4-$basearch/ gpgcheck=0 [epel] name=Fedora EPEL for CentOS$releasever $basearch on local server 172.16.0.1 baseurl=http://172.16.0.1/fedora-epel/$releasever/$basearch/ gpgcheck=0 Connection closed by foreign host.
3. 請求發出後,服務器返回響應的同時也會返回響應狀態碼。
4. HTTP首部
首部和方法配合工作,共同決定了服務器和客戶端能做什麼事情。
5. 一次web請求的基本過程是 C建立連接-->S接受請求-->S處理請求-->S訪問資源-->S構建響應-->S發送響應-->S記錄日誌。其中接受請求的這一步web服務器有三種輸入輸出結構,分別是 單線程I/O結構、多線程I/O結構、複用的I/O結構(單個線程響應多個請求)、複用的多線程I/O結構(多個線程,每個線程響應多個請求)。
三、httpd配置文件
如果是rpm包安裝的http,配置文件在/etc/httpd/conf/httpd.conf
l
102 <IfModule prefork.c> -----------如果是perfork.c。則使用下邊配置 103 StartServers 8----------啓動時默認開啓的進程數 104 MinSpareServers 5----------最小空閒線程數 105 MaxSpareServers 20----------最大空閒線程數 106 ServerLimit 256-----------最大活動進程數 107 MaxClients 256----------併發請求最大數 108 MaxRequestsPerChild 4000----每個子進程生命週期內所能服務的最大請求個數 109 </IfModule>
l Httpd 是高度模塊化設計的,方便動態的裝載和卸載模塊。
http -M 命令可以查看已經裝載的所以DSO和非DSO模塊
http -l :列出支持使用的非DSO模塊 [root@station57 ~]# httpd -M Loaded Modules: core_module (static)-----------------(static)非DSO模塊 mpm_prefork_module (static) http_module (static) so_module (static) auth_basic_module (shared)-------(shared)DSO模塊 auth_digest_module (shared) authn_file_module (shared) .........
如果我們不想使用某一個模塊,只需要在配置文件中將其註釋掉然後重啓就可以了