沃梦达 / IT编程 / 服务器 / 正文

WebServer 之http与httpd(apache)基础介绍

httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。说到httpd,首先就要了解HTTP协议,HTTP协议(HyperText Transfer Protocol,超文本传...

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 协议的实现

        简单的基本 ht tp协议 服务器:也称纯静态 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

         

说明:以上内容由于时间有限匆忙写之,如有不清楚的内容还请海涵,不足之处,欢迎达人们批评指正。

本文出自 “坏人的IT世界” 博客,请务必保留此出处http://badm008.blog.51cto.com/4574140/1827182

原文:http://badm008.blog.51cto.com/4574140/1827182

本文标题为:WebServer 之http与httpd(apache)基础介绍