http协议详解和httpd基本介绍


    httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。


    要了解httpd就需要先了解下各种协议。

        http:Hyper Text Transfer Protocol,超文本传输协议

        html:Hyper Text Mark Language,超文本标记语言

        CGI:Common Gateway Interface,通用网关接口,http和程序解释器的链接协议


    http协议版本:

        http 0.9: 仅用于传输html文档

        http 1.0:引入MIME机制,从而支持多媒体数据;引入keep-alive(持久连接)支持三次握手后不用断开继续请求支援;缓存

        http 1.1:更多请求方法,更精细缓存控制;持久连接(persistent)


    http事务:http一次请求及对应的响应过程

    注意:http协议是无状态,stateless,是通过cookie缓存进行交互。


    http方法:

        GET:请求获取一个资源,需要服务器发送
        HEAD:跟GET近似,但其不需要服务响应请求的资源,而返回响应首部
        POST:基于HTML表单向服务器提交数据,服务器通常需要存储此数据;
        PUT:与GET相反,向服务器发送资源;服务器通常需要存储此资源;
        DELETE:删除URL指向的资源
        OPTIONS:探测服务器端对请求的URL所支持使用的请求方法
        TRACE:跟一次请求中间所经过的代理服务器、防火墙或网关等


    http状态码:

        1XX:信息性状态码
        2XX:成功状态码
             200:OK
             201:CREATED
        3XX: 重定向类的状态码
             301: Moved Permanently, 永久重定向
             302: Found, 临时重定向,会在响应报文中使用“Location: 新位置”;
             304: Not Modified
        4XX:客户端类错误
             403:Forbidden 请求被服务器拒绝
             404: Not Found 没有找到文件
             405: Method Not Allowed 不允许此方法请求资源
        5XX:服务器类的错误
             500:Internal Server Error, 服务器内部错误
             502:Bad Gateway, 错误网关,代理服务器从上游服务器收到一条伪响应;
             503:Service Unavailable, 服务暂时不可用


       http协议:协议首部

          Name:Value 例如: Content-Type: images/gif
          首部类型:
                通用首部:

                    Connection: 定义C/S之间关于请求、响应的有关选项
                    Cache-Control: 缓存控制

                请求首部:

                    Client-IP:  
                    Host: 请求的主机
                    Referer: 指明了请求当前资源原始资源的URL
                    User-Agent: 用户代理
                    Accept首部:
                               Accept: 服务端能够发送的媒体的类型
                               Accept-Charset: 支持的字符集
                               Accept-Encoding:编码格式
                               Accept-Language:接受的语言格式                

                响应首部:

                      Age: 资源响应后可以使用时长
                      Server: 向客户说明自己的程序名称和版本


                http请求报文:
                      <method> <request-URL> <version>
                      <HEADERS>
                      <entity-body>
                http响应报文:
                      <version> <status> <reason-phrase>
                      <HEADERS>
                      <entity-body>
                解释:
                      <method>:请求方法
                      <request-URL>: 请求的资源,可以是相对路径,也可以绝对路径
                      <version>: http协议版本,格式HTTP/<major>.<minor>,例如HTTP/1.0
                      <headers>:各种所可以使用的首部
                      <status>: 状态码
                      <reason-phrase>: 原因短语,指状态码的易读信息


    一次Web资源请求的具体过程(服务器的角度)

        建立连接、接收请求、处理请求、访问资源、构建响应、发送响应、记录日志


     连接:
        连接套接字:(client, cport <--> server, sport)
        监听套接字:80端口
     web服务器的I/O结构:
        单进程模型:每次只响应一个用户请求。
        多进程模型:多进程每个进程响应一个用户请求实现并发的效果
        复用的I/O机制:一个进程生成多个线程,每个线程响应一个用户请求
        复用的I/O机制:多个线程,每个线程响应多个用户请求


    httpd基本介绍

        httpd的特性:
        高度模块化:core + modules
        DSO:动态共享对象(Dynamic Shared Object)
        MPM:多路处理模块(Multipath Processing Module)
             prefork: 每个进程响应一个用户请求,预先生成多个空闲进程,并发能力差;
             worker: 启动多个进程,每个进程生成多个线程,每个线程响应一个用户请求;
             event: 基于事件响应方式,启动多个线程,每个线程响应N个请求;


     httpd的功能特性:
         丰富用户认证:基本认证和摘要认证
         CGI:原生支持perl CGI
         虚拟主机:基于端口、IP、主机名
         反向代理:负载均衡
         用户站点:
         路径别名:
         支持第三方模块
     安装方式:rpm包、源码编译


    以上为http协议详解和httpd基本介绍,后续介绍httpd相关属性配置和编译安装。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。