• HTTP权威协议笔记-5.Web服务器


    5.1 Web服务器工作内容

    1. 建立连接——接受一个客户端的连接,或者将其拒绝
    2. 接受请求——从网络中读取一条HTTP报文
    3. 处理请求——对请求报文进行解释,并采取行动
    4. 访问资源——访问报文中指定的资源
    5. 构建响应——创建带有正确首部的HTTP响应报文
    6. 发送响应——将响应送回客户端
    7. 记录事务处理过程——将已完成事务的内容记录在日志中

    5.2 服务器结构类型:

    • 单线程Web服务器

        一次处理一个请求,直到其完成为止,性能较差,属于低负荷服务器

    • 多进程及多线程Web服务器

        可以高效率处理请求,可根据需求进行创建线程/进程,也可预先创建完成进程/线程,但根据服务器本身性能会有最大数量限制。

    • 复用I/O的服务器

        同时监督所有连接上的活动,当某条连接产生变化时就对那条线程进行少量处理,当处理结束时,将连接返回到开放连接列表中,等待下一次变化。

    • 复用的多线程Web服务器

        利用计算机的多个CPU,多个线程中的每一个都在观察打开的连接,并对每条链接进行少量的任务。

    盗图:

    5.3 构建响应

      如果有响应主体,响应报文通常包括:

    • 主体MIME类型的Content-Type首部
    • 描述响应主体的长度Content-Length首部
    • 实际报文内容

    5.4 MIME类型

    • 魔法分类

        服务器对资源内容进行扫描,将其与一个已知模式表进行匹配,以决定文件的MIME类型

    • 显式分类

        强制特定文件或目录内容拥有某个MIME类型

    • 类型协商

        与用户协商来决定使用哪种类型

    5.5 重定向

      Web服务器有时候会返回重定向响应而不是成功的报文,Web服务器可以讲浏览器重定向到其他地方来执行请求。

      重定向可用于下列情况:

    • 永久删除的资源

        资源可能已经被移动到新的位置,或者被重命名,有了一个新的URL,Web服务器这时会告诉客户端资源被修改,客户端会更新书签/地址去用新的URL获取资源,状态码301 Moved Permanently。

    • 临时删除的资源

       如果资源只是临时被移动或者修改,后续还是会修改回原状时,Web服务器需要客户端不要用新的地址/书签获取资源,状态码303 See Other 及 307 Temporary Redirect。

    • URL增强

       当请求到达时服务器会生成一个新的包含了嵌入式状态信息的URL,并将用户重定向到这个新的URL上去。客户端会根据这个新URL重新发起请求,这次的请求会包含完整的、经过状态增强的URL。

    • 负载均衡

       如果负载过重的服务器收到请求,可以将其定向到一个负载不太重的服务器上去,状态码303,307。

    • 服务器关联

        服务器可能含有其他用户的本地信息,服务端可以将客户端重定向到包含那个客户端信息的服务器上去,状态码303,307。

    • 规范目录名称

        客户端请求的URI是个不带尾部斜线的目录名时,大部分服务器都会将客户端定向到一个加了斜线的URI上去,这样链接就可以正常工作了。

  • 相关阅读:
    记一次坑爹的jconsole使用
    触发Full GC的时机
    java NIO之Selector
    java NIO之SelectedKey
    java泛型中的各种限制
    filebeat安装部署
    Kibana安装及简单使用
    elastucasearch基础理论以及安装
    Salt 与Salt API配置
    RabbitMQ 相关理论部分
  • 原文地址:https://www.cnblogs.com/Khan-Sadas/p/6170267.html
Copyright © 2020-2023  润新知