美文网首页
成为一个合格的前端工程师 - HTTP - 3

成为一个合格的前端工程师 - HTTP - 3

作者: ahole | 来源:发表于2017-08-06 15:04 被阅读3次

    http 第五章

    个人感觉这章说了很多废话

    服务器都做了啥

    大多数服务器都做了啥

    1. 建立连接
    2. 接受请求
    3. 处理请求
    4. 访问资源
    5. 构建响应
    6. 发送响应
    7. 记录日志

    处理新连接

    服务端当接受到TCP新建连接请求的时候,会通过IP地址去判断时候为为其不想接受的地址,如果是就不接受。但是接受服务器就会把连接添加到WEB服务器连接列表中。

    客户端主机名识别

    占坑

    ident 协议

    占坑

    接受报文

    1. 解析请求行
      请求行的分隔符是空格,解析结束符号 CRLF。
    2. 读取以CRLF为分隔的报文首部,两个CRLF标志全部请求首部的结束
    3. 以 Content-Length 为长度标志的请求体

    注 :有时一个TCP包不够存放一个HTTP请求,这是会现将不完整的TCP包放在内存中等待下一个报文,解析完后把个个信息放在内存中。

    处理请求的模式

    1. 单线程服务器
    2. 多线程服务器
    3. 复用 I/O 服务器
    4. 复用 I/O 加多线程

    注: 下面这条全属胡扯
    单线程与复用I/O的区别是 单线程服务器一次只会开一个线程去处理请求,我们知道只有一个请求一次只能做一件事情,那么当服务器在处理请求的任何时候,对其他请求就像是不可见的都是没有的。复用式 I/O 服务器就开能够去同时监听多个已连接的请求,看其是否有变化,有的处理并关闭监听,处理完回到监听状态。

    docroot

    web 服务器支持各种不同类型的资源映射。最简单的就是 base + uri 的方式。意思就是:服务器设置 base 目录,在加上http请求中的的URI 。
    例如:base 设置为 /usr/local/http/ , 客户端发来的 url 为 http://www.ahole.cn/I-love-u 那么计算完就是 /usr/local/http/I-love-u;
    有一点需要注意的事,web服务器为了安全除设置的 base 目录以外的文件对外是不可见的,也就是客户端不能访问 /usr/local/http 外的文件。比如 发 ../xxx 不会访问 /usr/local/xxx 的文件。

    目录列表

    当服务器以上面的方式拼接起来是一个目录的时候,web 服务器会有多种解决方式,1.返回错误、2.扫描目录,返回像 index.html index.htm home.html 这样的页面、3. 返回一个索引页面,供用户选择(比较危险)

    动态内容资源映射

    我们知道我们的 web 存在动态内容。那么什么时候执行动态内容,什么时候作为静态内容直接返回呢。这些在每个服务器上都有不同,Apache 的机制是在配置文件中设置,URI 为某些特殊字符开头的就去跑动态内容。当然还有些就是都写特殊后缀去跑动态机制,比如 .php

    构建响应

    服务器构建响应有两个通用的过程。1、书写content-type 2、Content-Length 首部。 书中写的很初略

    重定向

    重定向的可能情况:

    • 永久删除资源
    • 临时删除资源
    • URL 增强
    • 负载均衡
    • 服务器关联
    • 规范目录名称

    负载均衡: 当其中一个服务器超载时,重定向到另一个服务器,就位负载均衡。
    服务器关联: 重定向到一个资源更相近的服务器上

    相关文章

      网友评论

          本文标题:成为一个合格的前端工程师 - HTTP - 3

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