httpd整理

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报文首部:

    
    (name:value)
    
    
   

。 response报文首部:






  • 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整理)