Http基礎信息

Http基礎信息
1、 完整的http請求過程
1.1 建立或處理連接:接收請求或拒絕請求
1.2 接收請求
接收來自於網絡的請求報文對某資源的一次請求的過程;
併發訪問響應模型(Web I/O);
單進程I/O結構:啓動一個進程處理用戶請求,而且一次只處理一個:多個請求被串行響應;
多線程I/O結構:並行啓動多個進程,每個進程響應一個請求;
複用I/O結構:一個進程響應N個請求;
多線程模型:一個進程生成N個線程,每個線程響應一個用戶請求;
事件模型:event-driver
複用的多進程I/O結構:啓動多個(m)進程,每個進程響應n個請求;
1.3 處理請求
元數據:請求報文首部
<method><URL><VERSION>
host:www.magedu.com 請求的主機名稱
Connection;
1.4 訪問資源
web服務器,即存放了web資源的服務器,負責向請求者提供對方請求的靜態資源,或動態進行後生成的資源;這些資源放置於本地文件系統某路徑下,此路徑通常稱爲DocRoot
/var/www/html/
images/1.jpg
http://www.magedu.com/images/1.jpg

web服務器資源路徑映射方式:
docroot
alias
虛擬主機docroot
用戶家目錄docroot
1.5 構建響應報文

MIME類型:
顯式分類
魔法分類
協調分類
URL重定向;
web服務器構建的響應並非客戶請求的資源,而是資源另外一個訪問路徑;
1.6 發送響應報文
1.7 記錄日誌
2 http服務程序:
2.1 httpd(apache)
2.2 nginx
2.3 lighttpd
應用程序服務器:
IIS
tocat,jetty,jboss,resin
webshpere,weblogic,oc4j
www.netcraft.com

httpd的安裝配置的使用
httpd:apache
ASF:apache software foundation
httpd的特性:
高度模塊化:core+modules
DSO:Dynamic Shared Object
MPM:Multipath Processing Modules
prefork:多進程模型,每個進程響應一個請求:
一個主進程:負責生成n個子進程,子進程也稱爲工作進程,每個子進程處理一個用戶請求;即便沒有用戶請求,也會預先生成多個空閒進程,隨時等待請求到達:最大不會超過200個;
prefork:多進程模型,一個進程響應一個請求;
worker:多線程模型(多進程生成,一個進程生成多個線程),一個線程響應一個請求;
event:事件驅動模型,一個線程響應多個請求

更新
20-3-Http基礎信息
1、 Http協議
a) http/0.9,http/1.0,http/1.1,http/2.0
b) http協議:stateless
服務器無法持續追足蹤訪問者來源
cookie,session
c) http事務:
i. 請求:request;
ii. 響應:response
報文語法格式:
request報文
<method><request-URL><version>
<headers>

    <entity-body>
response報文
    <version><status><reason-phrase>
    <headers>

    <entity-body>

d) method:請求方法,標明客戶端希望服務器對資源執行的動作:
GET HEAD POST
e) version:
HTTP/<major>.<minor>
f) status:
三位數字:如200,301,404,502;標記請求處理過程中發生的情況
g) reason-phrase:
狀態碼所標記的狀態的簡要描述;
h) headers:
每個請求或響應報文柯包含任意個首部:每個首部都有首部信息,後面跟一個冒號,而後跟上一個可選空格,接着是一個值;
i) entity-body:請求時附加的數據響應附加的數據;
2、 method(方法)
a) GET:只從服務器獲取一個資源
b) HEAD:只從服務器獲取文檔的響應首部
c) 向服務器發送處理的數據
d) PUT:將請求的主體部分存儲在服務器上
e) DELETE:請求刪除服務器上指定的文檔
f) TRACE:跟蹤請求到達服務器中間經過的代理服務器
g) OPTIONS:請求服務器返回對指定資源支持使用的請求方法

協議查看或分析的工具:
tcpdump,tshark,wireshark
3、 status(狀態碼)
a) 1xx:100-101,信息提示:
b) 2xx:200-206,成功
c) 3xx:300-305,重定向
d) 4xx:400-415,錯誤類信息,客戶錯誤
e) 5xx:500-505,錯誤類信息,服務器錯誤

常用的狀態代碼:
200:成功,請求的所有數據通過響應報文的entity-body部分發送:OK
301:請求的URL指向的資源已經被刪除:但在響應報文中通過首部Location指明瞭資源現在所處的新位置:Moved Permanently
302:與301相似,但在響應報文中通過Location指明資源現在處的新位置;Found
304:客戶端發出了條件式請求,但服務器上的資源未曾發生改變,則通過此響應狀態碼通知客戶端:Not Modified
401:需要輸入賬號和密碼認證方能訪問資源:Unauthorized
403:請求被禁止:Forbidden
404:服務器無法找到客戶端請求的資源:Not Found
500:服務器內部錯誤:Internal Server Error
502:代理服務器從後端服務器收到了一條僞響應:Bad Gateway

4、 Headers
格式:
Name:Value
首部的分類:
通用首部
Date:報文的創建時間
Connection:連接狀態,如keep-alive,close
Via:顯示報文經過的中間節點
Cache-Control:控制緩存
Pragma:
請求首部
Accept:通過服務器自已可接受的媒體類型
Accept-Charset:
Accept-Encoding:接受編碼格式:如gzip
Accept-Language:接受的語言

    Client-IP:
    Host:請求的服務器名稱和端口號
    Referer:包含當前正在請求的資源的上一級資源
    User-Agent:客戶端代理

    條件式請求首部:
        Expect:
        If-Modified-Since:自從指定的時間之後,請求的資源是否發生過修過
        If-Unmodified-Sence;
        If-None-Match:本地緩存中存儲的文檔的ETag標籤是否與服務器文檔的Etag不匹配
        If-Match: 
    安全請求首部:
        Authorization:向服務器發送認證信息,如賬號和密碼
        Cookie:客戶端向服務器發送cookie
        Cookie2:
    代理請求首部:
        Proxy-Authorization:向代理服務器認證
響應首部
    信息性:
        Age:響應持續時長
        Server:服務器程序軟件名稱和版本
    協商首部:某資源有多種表示方法時使用
        Accept-Ranges:服務器可接受的請求範圍類型
        Vary:服務器查看的其它首部列表
    安全響應首部:
        Set-Cookie:向客戶端設置cookie
        Set-Cookie2:
        WWW-Authenticate:來自服務器的對客戶端的質詢認證表單
實體首部
    Allow:列出對此實體可使用的請求方法
    Location:告訴客戶端真正的實體位於何處

    Content-Encoding:
    Content-Language
    Content-Lenght:主本的長度
    Content-Location:實體真正所處位置
    Content-Type;主體的對象類型

    緩存相關:
        ETag:實體的擴展標籤
        Expires;實體的過期時間
        Last-Modified:最後一次修改的時間
擴展首部
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章