美文网首页
httpd整理

httpd整理

作者: ckhzw | 来源:发表于2017-04-24 21:39 被阅读0次

    http协议:超文本传输协议

    • html:超文本标记语言;

    • 应用层协议格式:文本(http/sftp),二进制(memcache)

    • http服务器程序:
      httpd
      Nginx
      lighttpd 轻量级

    • 应用程序服务器:不仅能处理静态资源,还能处理动态资源;
      IIS .net
      Tomcat jsp

    • http协议版本:
      HTTP/0.9 只支持GET方法
      HTTP/1.0 引入MIME,支持传输多媒体;引入cache,支持更多的Method
      HTTP/1.1 增强了缓存,开始支持持久连接功能;
      HTTP/2.0 借鉴了SPDY,增强了性能;

    MIME:多用途互联网邮件扩展;Multipurpose Internet Mail Extension
    主要作用:传输非文本格式的数据;
    major/minor
    HTML格式的文本:text/html
    普通ASCII文本:text/plain
    JPEG格式的图片:image/jpeg

    WEB资源的分类:

    • 静态资源:图片,txt文本,css,mp3,html
    • 动态资源:客户端请求的是程序文件,需要服务器端的应用程序运行后返回运行的结果;
      注意:一个站点由众多的资源构成,每个资源都需要单独请求;

    URL:唯一标识服务器端某特定资源的存放位置;

    • 语法格式:scheme://server[:port]/path/to/source
      。 URI 统一资源标识符;URL和URN(统一资源名)是URI的子集;

    • httpd协议本事是无状态的,无法永久存储用户的信息,所以引用了cookie和session机制
      。Cookie:保存在客户端;由服务器发送给客户端,唯一标识用户的信息;
      。 胖cookie 信息量大,可能会泄露用户信息
      。瘦cookie 仅记录个人用户信息

    • Session:保存在服务器端

    一次完整的http请求过程:

    1.接收客户端的连接,如果不希望与这个客户端建立连接,就直接关闭;
    2.接收来自客户端的http请求;
    3.处理请求:分析请求报文中的首部信息,并采取相应的行动;
    4.访问资源:发起系统调用,获取请求的资源;
    5.构建http响应报文并发送给客户端;
    6.记录到日志文件中

    并发响应模型:(c10K问题)

    1.单进程i/o模型:启动一个进程处理所有用户的请求;
    2.多进程i/o模型:并行启动多个进程,每个进程处理一个请求;
    3.复用的i/o模型:
    多线程模型:一个进程产生多个线程,一个线程处理一个请求;
    事件驱动机制:一个进程直接响应n个请求;
    4.复用的多进程i/o模型:启动m个进程,每个进程生成n个线程;则,响应请求数量为m*n

    • http事务:一次http事务=一次请求+一次响应的过程;

    。 request报文首部:

        <method><URL><vsersion>
        <HEADERS>(name:value)
        
        
       <request body>
    

    。 response报文首部:

    <vsrsion><status><reson-phrase>
    <HEADERS>
    
    
    <body>
    
    • Method:
      GET,HEAD,POST,PUT,DELETE,TRACE(跟踪资源经过的代理服务器),OPTIONS(返回服务器对资源支持使用的method)

    • status:
      。 1xx 信息类
      。2xx 成功类
      。 3xx 重定向类;
      。 4xx 客户端错误
      。 5xx 服务器端错误

    • 常用状态玛:
      。200 请求成功;OK
      。301 永久重定向;Moved Permanently
      。302 临时重定向;Found
      。304 请求资源未发生改变;Not Modified
      。401 输入账号密码后才能访问资源;Unauthorized
      。403 请求被禁止;Forbidden
      。404 服务器找不到客户端请求的资源;Not Found
      。500 服务器内部错误;Internal Server Error
      。502 代理服务器从后端服务器收到一条伪响应;Bad Gateway
      。504 超时
      。499 Nginx自定义状态码;客户端向Nginx服务器发请求,服务端还未处理完成,响应还没完成。客户端就主动断开了;

    • HEADER:
      通用首部:
      请求首部:
      条件式请求首部:IF-Modified-Since,If-None-Match
      响应首部:
      实体首部:
      扩展首部:

    • 通用首部:既可以用在请求报文中又可以用在响应报文中
      Date:报文的创建时间
      Connection:连接方式,如keep-alive,Close
      Via:显示报文经过的中间节点
      Cache-Control:控制缓存的生效机制
      Pragma:兼容Http 1.0,缓存相关

    • 请求首部
      Accept:通知服务器自己可以接受的媒体类型
      Accept-Charset:可以接受的字符集
      Accept-Encoding:通知服务器自己接受的编码格式,如gzip
      Accept-Language:接受的语言
      Client-IP:客户端IP
      Host:请求的服务器名称和端口号
      Referer:包含当前正在请求资源的上一级资源
      User-Agent:客户端代理

    • 条件式请求首部
      Expect 期望服务器端发送什么类型信息
      If-Modified-Since 自从指定的时间之后,请求的资源是否发生过修改
      If-Unmodfied-Since 自从指定的时间之后,请求的资源是否没有修改
      If-None-Match 缓存中存储的文档ETag标签是否与服务器端文档Etag不匹配

    • 安全请求首部
      Authorization 向服务器发送认证信息
      Cookie/Cookie2 客户端向服务器发送Cookie

    • 代理请求首部
      Proxy-Authorization:向代理服务器认证

    • 响应首部:
      。信息性
      Age:响应持续时长
      Server:服务器程序软件名称和版本

    • 协商首部:某资源有多种表示方法时使用
      Accept-Ranges:服务器可接受的请求范围类型
      Vary:服务器查看的其他首部列表,服务器根据首部内容挑选出最合适的资源版本发送给客户端(当代理服务器收到了客户端的请求时候,如果请求首部字段的值与?Vary?的值相同,才会从代理服务器的缓存中返回请求,反之就会向源服务器重新发送请求)

    • 安全响应首部
      Set-Cookie:向客户端设置Cookie
      Set-Cookie2
      WWW-Authenticate:来自服务器的对客户端的质询认证表单

    • 实体首部
      。 Allow 列出对此实体可使用的请求方法
      。 Location 告诉客户端真正的实体位于何处
      。Content-Encoding 内容的编码格式
      。Content-Language 内容的使用语言
      。 Content-Length 主体的长度
      。 Content-Location 实体真正所处位置
      。 Content-type 主体的对象类型

    • 缓存相关
      。 Etag 实体的扩展标签
      。 Expires 实体的过期时间
      。 Last-Modified 最后一次修改的时间

    • Web页面:
      。一个页面由多个资源组成;

    。PV:page view 入口页面被视为一个pv
    。UV:user view 每个独立的ip地址被视为一个uv;

    • 认证:
      。基于ip认证:
      。基于用户认证:basic,digest

    • 资源映射:
      。 Alias
      。 DocumentRoot

    • httpd:MPM
      。prefork:一个主进程,生成多个子进程,每个子进程处理一个请求;
      。 worker:一个主进程,生成多个子进程,每个子进程生成多个线程,每个线程处理一个请求;
      。 event:一个主进程,生成多个子进程,每个子进程处理多个请求;

    • I/O类型:

      • 同步和异步:
        --关注的是消息通知机制:被调用者的状态
        。同步:调用发出之后不会立即返回,但一旦返回,则返回既是最终结果;
        。异步:调用发出之后,被调用方立即返回消息,但返回的并非是最终结果:被调用者通过状态,通知机制等来通知调用者,或通过回掉函数来处理结果;

      • 阻塞和非阻塞:block,nonblock
        -- 关注的是调用者等待被调用者返回调用结果使得状态;
        。 阻塞:调用结果返回之前,调用者会被挂起;调用者只有在得到返回结果之后才能继续;
        。非阻塞:调用者在结果返回之前,不会被挂起,即调用不会阻塞调用者;

    • I/O模型:
      。 blocking IO 阻塞式IO
      。 nonblocking IO 非阻塞式I/O
      。 IO multiplexing 复用型IO
      。 signal dirven IO 事件驱动式IO
      。 asynchronous IO 异步IO

    相关文章

      网友评论

          本文标题:httpd整理

          本文链接:https://www.haomeiwen.com/subject/xrxmzttx.html