WebServer 之http與httpd(apache)基礎介紹

httpdApache超文本傳輸協議(HTTP)服務器的主程序。被設計爲一個獨立運行的後臺進程,它會建立一個處理請求的子進程或線程的池。說到httpd,首先就要了解HTTP協議,HTTP協議(HyperText Transfer Protocol,超文本傳輸協議)是用於從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議。它可以使瀏覽器更加高效,使網絡傳輸減少。它不僅保證計算機正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內容首先顯示(如文本先於圖形)等。

         以下是個人對WebServerhttphttpd基礎知識的簡單總結梳理:

  1. WebServer http協議

    http協議版本介紹

         http/0.9:原型版本;

         http/1.0cache,MIME(multipupose internet Mail Extensions)

                   methodGETPOSTHEADPUTDELETETRACEOPTIONS...            

         http/1.1:緩存功能大大增強

                   speedy:簡寫spdy

         http/2.0

         

         端口:80/tcp

               https協議:443/tcp

 

基於TCP承載的HTTP協議:                  

    httphyper texttranfer protocol,超文本傳輸協議;應用層的的一種協議

          作用對象是用超文本標記語言編譯的文本,實現文檔的檢索

     

               htmlhyper text marklanguage,超文本標記語言;

                        格式:

                              <html>

                                    <head>

                                          <title></title>

                                     </head>

                                     <body>

                                                   

                                     </body>

                               </html>

http協議的工作模式:request/response

         一次完整的http事務:請求<-->響應;

 

請求內容:主要就是web資源   

                web資源:

                     一個html文檔;

                     一個圖片;

                     一個mp3文件片斷;

                      ...


    URLUniform ResourceLocator,資源標識,用於描述服務器上某特定資源

          的位置; 

                          URL組成:

                              URL scheme:協議,http,https, ftp,

                              服務器地址:IP:PORT

                              資源路徑:/path/to/resource

                                   DocumentRoot

                           

                              http://www.magedu.com/images/logo.jpg

                  

   基本語法格式:                                                                  <scheme>://<user>:<password>@<host>[:<port>]/<path>;<params>?<query>#<frag>

  params:參數      

        http://www.magedu.com/admin/admin.php;username=admin

  query:查詢                                                                      http://www.magedu.com/admin/admin.php?logintime=12/07/2018

  frag:在同一個頁面文件中的偏移量

                                      http://www.magedu.com/admin/readme.html#chart1

                                                       

                 資源的種類:

                      靜態資源:.jpg,.gif, .png, .html, .txt,

                      動態資源:

                            服務器端技術:.php,.jsp, ...

                            客戶端技術:.js

        一次完整的http請求的處理過程:

            (1)建立或處理連接:接收請求或拒絕請求;

            (2)接收請求:接收客戶端發來的具體請求報文;

            (3)處理請求:對請求報文進行解析;

            (4)訪問資源:對本地訪問而言,通過存儲IO獲取用戶請求的資源;

            (5)構建響應報文:

            (6)發送響應報文

            (7)記錄於日誌中:

 

http協議報文格式:

        通用格式:

            起始行

            Name:Value

            Name:Value

            ...

                           

            主體


            request

                <method><request-URL> <version>

                <headers>

                           

                <body>

                           

            response

                <version><status> <reason-phrase>

                <headers>

                           

                 <body>

 

           格式中的關鍵字段說明:        

                   method:請求方法,標明客戶端希望服務器對資源執行的動作

                            GETHEADPOST

                            WebDAVPUTDELETE

                            OPTIONSTRACE

                           

                            注:POST:向服務器端提交表單等數據

                                     HEAD:只從服務器端獲取響應報文的首部

                                     PUT:上傳資源  DocumentRoot

                                     DELETE:刪除資源  DocumentRoot

                                     WebDAV機制:web分佈式版本協作功能,只有打開的這個功能才能PUT

                                                            DELETE

                                     OPTIONS:請求服務器返回給我列出某一資源所支持所有的請求方法

                                     TRACE:追蹤從客戶端到服務器端所經過的代理服務器(web網關)

 

                            協議查看或分析工具:tcpdump,wireshark, tshark, ...

                           

                   status:狀態碼,statuscode

                            三位數字,1xx,2xx, ..., 5xx

                            標明請求處理過程的結果狀態;

                           

                            1xx:100-101, 信息提示;

                            2xx200-206,成功類的響應碼,例如200

                            3xx300-305,重定向類的響應碼,例如301(永久重定向), 302(臨時重定

                                 向), 304(資源沒修改,對客戶端緩存而言)等;

                            4xx400-415, 錯誤類信息,客戶端錯誤,例如 401(認證質詢), 404(訪問

                資源不存在), 403(無權限)等;

                            5xx500-505, 服務器端錯誤,例如500(服務器內部錯誤),502bad gateway

                 等;

                           

                   headers:請求/響應報文的首部

                            媒體格式:通過MIME實現

                                 媒體格式標記形式:

                                    major/minor

                                          images/jpeg

                                          text/html

                                          text/plaintext

                                          text/xml

                                           ...

 

                            格式:

                                     Name:Value

                                    

                            首部分類:

                                     通用首部

                                     請求首部

                                     響應首部

                                     實體首部

                                     擴展首部

                                    

                            通用首部:請求、響應報文均可使用;

                                     Date:報文的創建時間;

                                     Connction:連接狀態,keep-alive,close

                                     Via:經由,報文傳輸經由的代理節點;

                                     Cache-Control:緩存控制

                                     Pragma

                           

                            請求首部:

                                     Accept:可接受的媒介類型;MIME

                                     Accept-Charset:接受字符集格式;

                                     Accept-Encoding:接受的編碼格式,deflate,gzip, ...

                                     Accept-language:接受的語言;

                                    

                                     Client-IP

                                     Host:請求的服務器名稱和端口;

                                     Referer:包含當前正在請求的資源的上一級資源;

                                     User-Agent:客戶端代理;

                                    

                                     條件式請求首部:

                                               Expect:期望返回的結果

                                               If-Modified-Since:自從某時間是否發生了修改

                                               If-Unmodified-Since:

                                               If-None-Match:本地緩存中存儲的文件的ETag的值是否與                                                                  服務器對應的資源的不相同;

                                               If-Match:

                                              

                                     安全請求首部:

                                               Authrization:向服務器發送賬號和密碼;

                                               Cookie:向服務器端發送Cookie信息;

                                               Cookie2

 

                                               示例:

                                               Cookie:_gscu_2145764248=62963660up7ov365;sto-id-                                                                jzxx=GFBEKIMA;_trs_uv=l187_365_io2qnkij;_gscu_20

                                                      65735475=62963431dzqj3716

                                              

                            響應首部:

                                     信息性首部:

                                               Age:響應持續時長

                                               Server:服務器端軟件程序的名稱、版本、...

                                              

                                     協商首部:

                                               Accept-Ranges:服務器端可接受的請求類型範圍;

                                               Vary:服務器查看的其它首部列表;

                                              

                                     安全響應首部:

                                               Set-Cookie:爲客戶端設定Cookie

                                               Set-Cookie2:

                                               WWW-Authenticat:認證質詢

                                              

                            實體首部:

                                     Allow:對此實體可使用的請求方法;

                                     Location:資源的真正地址;

                                    

                                     Content-Encoding:資源的編碼格式

                                     Content-language:資源的語言

                                     Content-Length:資源的長度

                                     Content-Location:資源的真正地址;

                                     Content-Type:資源的類型

                                    

                                     緩存相關:

                                               Etag:code標記

                                               Expires:實體過期時間;

                                               Last-Modified: 最近一次的修改時間;

                           

                            擴展首部:

                                     X-Forwared-For:中間經由哪個服務器轉發的

                                     ...

                                    

                            參開書籍:《HTTP權威指南》前四章;

 

         併發響應模型:(對接收請求而言)

                            單進程I/O模型:串行響應;

                            多進程I/O模型:同時啓動多個進程,每個進程響應一個請求;

                            複用的I/O模型:一個進程響應多個請求;

                                     多線程模型:一個進程生成多個線程,每個線程響應一個請求;

                                     事件驅動:一個進程直接響應多個請求;

                                     複用的多進程I/O結構:啓動m個進程,每個進程生成n個線程,每個

                                          線程響應一個請求;

 

2.  WebServer httpd程序

    http協議的實現

        簡單的基本http協議服務器:也稱純靜態web資源服務器

         httpd (apache)

         nginx

         lighttpd

    httpd的特性:

        高度模塊化:core +modules

             modules支持:

                  DSO:Dynamic shared objects

                     支持動態裝載和卸載;

             MPMmultipathprocessing modules,多路處理模塊

                  prefork:一個主進程,多個子進程;一個進程響應一個請求;

                       主進程:管理子進程;創建套接字;接收用戶請求,並派發給某子進程處理;...

                       子進程:處理請求、響應請求;

                  worker:多進程多線程模型;一個線程響應一個請求;

                        主進程:管理子進程;創建套接字;接收用戶請求,並派發給某子進程處理;...

                        子進程:負責管理線程;

                        線程:處理並響應請求;

                  event:事件驅動模型,多進程模型,每個進程響應多個請求;

                        主進程:管理子進程;創建套接字;接收用戶請求,並派發給某子進程處理;...

                        子進程:處理並響應請求;

               注:MPM            

                      httpd-2.2event爲測試模型;

                           CentOS6MPM不支持DSO機制;

                      httpd-2.4productionready;支持DSO機制;

                           CentOS7MPM支持DSO機制,event爲生產測試模式

     

    httpd的版本:

           httpd-1.3:官方已經停止維護;

           httpd-2.0

           httpd-2.2

           httpd-2.4

                                    

           httpd.apache.org  官方站點

      httpd的功能特性:

           CGIcommongateway interface

                通用網絡接口

           虛擬主機:IP PORT HOSTNAME

           反向代理

           負載均衡:bytraffic,bybusiness, byreques

           路徑別名

           豐富的用戶認證機制

               basic:

               digest:

           支持第三方模塊

            ...

 

3.  WebServer httpd部署與配置

    httpd軟件說明:

        rpm包:CentOS base源;

        編譯安裝:定製新功能,或其它原因;

 

        CentOS 6httpd-2.2

                    sysinit腳本:/etc/rc.d/init.d/httpd

                    安裝:yuminstall httpd

                    程序環境:

                             配置文件:

                                       /etc/httpd/conf/httpd.conf  主配置文件

                                       /etc/httpd/conf.d/*.conf

                             程序文件:

                                       /usr/sbin/httpd

                                       /usr/sbin/httpd.event

                                       /usr/sbin/httpd.worker

                             注:這三個文件是編譯到程序內核的,不支持DSO

 

                             日誌文件:

                                       /var/log/httpd

                                                access_log:訪問日誌

                                                error_log:錯誤日誌

                             站點文檔根目錄:

                                       /var/www/html

                             模塊文件路徑:

                                       /usr/lib64/httpd/modules

                             啓動程序:

                                       # servicehttpd start

                                      

                                       chkconfig httpd on|off

                                        # chkconfig --level235  httpd on

        CentOS 7httpd-2.4

                    Systemd Unit File/usr/lib/systemd/system/httpd.service

                    安裝:yuminstall httpd

                    程序環境:

                             配置文件:

                                       /etc/httpd/conf/httpd.conf主配置文件

                                       /etc/httpd/conf.modules.d/*.conf模塊配置文件

                                       /etc/httpd/conf.d/*.conf

                             程序文件:

                                       /usr/sbin/httpd(工作方式文件)

 

                                       MPM支持DSO機制,所以各爲一個獨立的模塊;換模式只需要更換模塊即可

                                      

                             日誌文件:

                                       /var/log/httpd

                                                access_log:訪問日誌

                                                error_log:錯誤日誌

                             站點文檔根目錄:

                                       /var/www/html

                             模塊文件路徑:

                                       /usr/lib64/httpd/modules

                             啓動程序:

                                       #systemctl start httpd                     

                                       # systemctl enablehttpd.service

         

說明:以上內容由於時間有限匆忙寫之,如有不清楚的內容還請海涵,不足之處,歡迎達人們批評指正。

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