142536a 发表于 2018-11-19 13:19:49

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


httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。说到httpd,首先就要了解HTTP协议,HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

         以下是个人对WebServer之http和httpd基础知识的简单总结梳理:

[*]WebServer 之http协议
    http协议版本介绍
       http/0.9:原型版本;
       http/1.0:cache,MIME(multipupose internet Mail Extensions)
               method:GET、POST、HEAD、PUT、DELETE、TRACE、OPTIONS、...            
       http/1.1:缓存功能大大增强
               speedy:简写spdy
       http/2.0
      
       端口:80/tcp
             https协议:443/tcp

基于TCP承载的HTTP协议:                  
    http:hyper texttranfer protocol,超文本传输协议;应用层的的一种协议
          作用对象是用超文本标记语言编译的文本,实现文档的检索
   
             html:hyper text marklanguage,超文本标记语言;
                      格式:
                            
                                  
                                        
                                     
                                     
                                                    
                                     
                               
http协议的工作模式:request/response
         一次完整的http事务:请求响应;

请求内容:主要就是web资源   
                web资源:
                     一个html文档;
                     一个图片;
                     一个mp3文件片断;
                      ...


    URL:Uniform ResourceLocator,资源标识,用于描述服务器上某特定资源
          的位置;
                        URL组成:
                              URL scheme:协议,http,https, ftp,
                              服务器地址:IP:PORT
                              资源路径:/path/to/resource
                                 DocumentRoot
                           
                              http://www.magedu.com/images/logo.jpg
                  
   基本语法格式:                                                                  ://:@[:]/;?#
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:
               
               
                           
               
                           
            response:
               
               
                           
               

         格式中的关键字段说明:         
                   method:请求方法,标明客户端希望服务器对资源执行的动作
                            GET、HEAD、POST
                            WebDAV:PUT、DELETE
                            OPTIONS、TRACE
                           
                            注:POST:向服务器端提交表单等数据
                                     HEAD:只从服务器端获取响应报文的首部
                                     PUT:上传资源DocumentRoot
                                     DELETE:删除资源DocumentRoot
                                     WebDAV机制:web分布式版本协作功能,只有打开的这个功能才能PUT
                                                            和DELETE
                                     OPTIONS:请求服务器返回给我列出某一资源所支持所有的请求方法
                                     TRACE:追踪从客户端到服务器端所经过的代理服务器(web网关)

                            协议查看或分析工具:tcpdump,wireshark, tshark, ...
                           
                   status:状态码,statuscode
                            三位数字,1xx,2xx, ..., 5xx
                            标明请求处理过程的结果状态;
                           
                            1xx:100-101, 信息提示;
                            2xx:200-206,成功类的响应码,例如200;
                            3xx:300-305,重定向类的响应码,例如301(永久重定向), 302(临时重定
                                 向), 304(资源没修改,对客户端缓存而言)等;
                            4xx:400-415, 错误类信息,客户端错误,例如 401(认证质询), 404(访问
                资源不存在), 403(无权限)等;
                            5xx:500-505, 服务器端错误,例如500(服务器内部错误),502(bad 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
                     支持动态装载和卸载;
             MPM:multipathprocessing modules,多路处理模块
                  prefork:一个主进程,多个子进程;一个进程响应一个请求;
                     主进程:管理子进程;创建套接字;接收用户请求,并派发给某子进程处理;...
                     子进程:处理请求、响应请求;
                  worker:多进程多线程模型;一个线程响应一个请求;
                        主进程:管理子进程;创建套接字;接收用户请求,并派发给某子进程处理;...
                        子进程:负责管理线程;
                        线程:处理并响应请求;
                  event:事件驱动模型,多进程模型,每个进程响应多个请求;
                        主进程:管理子进程;创建套接字;接收用户请求,并派发给某子进程处理;...
                        子进程:处理并响应请求;
               注:MPM:            
                      httpd-2.2:event为测试模型;
                           CentOS6:MPM不支持DSO机制;
                      httpd-2.4:productionready;支持DSO机制;
                           CentOS7:MPM支持DSO机制,event为生产测试模式
   
    httpd的版本:
         httpd-1.3:官方已经停止维护;
         httpd-2.0:
         httpd-2.2:
         httpd-2.4:
                                    
         httpd.apache.org官方站点
      httpd的功能特性:
         CGI:commongateway interface;
                通用网络接口
         虚拟主机:IP, PORT, HOSTNAME
         反向代理
         负载均衡:bytraffic,bybusiness, byreques
         路径别名
         丰富的用户认证机制
               basic:
               digest:
         支持第三方模块
            ...

3.WebServer 之httpd部署与配置
    httpd软件说明:
         rpm包:CentOS base源;
      编译安装:定制新功能,或其它原因;

      CentOS 6:httpd-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 --level235httpd on
         CentOS 7:httpd-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
         
说明:以上内容由于时间有限匆忙写之,如有不清楚的内容还请海涵,不足之处,欢迎达人们批评指正。



页: [1]
查看完整版本: WebServer 之http与httpd(apache)基础介绍