HTTP 報文格式及apache配置文件簡介


一、http簡介

httphypertext transport protocol 超文本傳輸協議

Htmlhypertext 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>

wKioL1NVDvuy2DbZAAKBmN65c28025.jpg

(圖片摘自《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. 請求發出後,服務器返回響應的同時也會返回響應狀態碼。

wKiom1NVD1vgg7E8AAF0uNsm6t0559.jpg


4. HTTP首部

     首部和方法配合工作,共同決定了服務器和客戶端能做什麼事情。

wKioL1NVDz7zz2e3AAFTkY40k1A242.jpg

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)
.........

如果我們不想使用某一個模塊,只需要在配置文件中將其註釋掉然後重啓就可以了





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章