zoukankan      html  css  js  c++  java
  • http协议

    http 协议:

      1)http协议格式:

        URL:scheme://server[:port]/path/to/source (服务器上的每一个资源都有一个对应的url与之对应)

        request:

          <method> <url> <version>

          <HEADERA>

          <body>

        response:

          <verion> <status> <reason phrase>

          <HEADERS>

          <body>

    其中:

      method:

        除了get,head,post,put,delete,trace,options还有很多其他的方法

      status:

        1XX:信息类

        2XX:成功类,200

        3XX:重定向类301,302,304

        4XX:客户端错误类,403,404

        5XX:服务端错误类,502

      HEADER:

        通用首部(请求/响应都可以使用)

        请求首部

          If-Modified-Since,If-None-Match  

        响应首部

        实体首部(用在body中)

        扩展首部

      协议格式:文本、二进制

      2)Web页面:一个页面通常含有多个资源,也就是说我们浏览器访问的是一个页面的入口,在页面被浏览器加载显示的过程中,又会向服务器发送请求,将页面中包含的资源显示完毕

        为了加速页面的打开使用的机制:

          缓存,

          并发多线程发起请求,

          同一个页面的不同资源放在不同的域名下(配置浏览器针对同一个域名线程并发上限实现的)

        以上机制,会导致服务器面临大量并发请求的压力

      pv:page view

      uv:user view

      3)认证:

        基于IP认证:

        基于用户认证:

          basic认证

          digest认证

      4)资源映射:

        Alias(别名)

        DocumentRoot

      5)httpd:MPM(多路处理模块)

          prefork:主进程生成多个子进程,每个子进程处理一个请求。使用复用型IO

          worker:主进程生成多个子进程,每个子进程生成多个线程,每个线程响应一个请求。

          event:主进程生成多个子进程,每个子进程响应多个请求。使用事件驱动式IO

        I/O类型:

          a.同步(synchronous)和异步(asynchronous):

              关注的是消息通知机制

              同步:调用发出之后不会立即返回,但一旦返回,则返回的是最终结果

              异步:调用发出之后,被调用方立即返回消息,但返回的并非最终结果,被调用者通过状态,通知机制等来通知调用者,或者通过回调函数来处理结果

          b.阻塞(block)和非阻塞(nonblock):

              关注的是调用者等待被调用者返回调用结果是的状态

              阻塞:调用结果返回之前,调用者会被挂起,调用者只有在得到返回结果之后才能继续

              非阻塞:调用者在结果返回之前,不会被挂起,即调用不会阻塞调用者

        I/O模型:(IO有:网络io和磁盘io之分,某一时刻只能处理一种IO。一次IO处理分俩个阶段:第一个阶段是接受请求的进程将请求交给内核进程,内核进程将数据从磁盘读取到内核内存;第二阶段是将数据从内核内存拷贝到接受请求的进程中返回给调用者)

          阻塞式IO(blocking io):效率较低

          非阻塞式IO(nonblocking io):效率较低  

          复用型IO(io mutliplexing):效率较低

            select(),poll()    

          事件驱动式IO(signal driven io):第一阶段异步,第二阶段阻塞

            通知:水平触发:多次通知

               边缘触发:只通知一次

          异步IO(asynchronous io):效率最高

          

  • 相关阅读:
    记一次小程序之旅
    基于supervisor秒级Laravel定时任务
    如何在Ubuntu16.04 中安装Linux, Nginx, MySQL, PHP (LEMP 栈)
    从CSV文件中读取jpg图片的URL地址并多线程批量下载
    关于PHP程序员解决问题的能力
    Laradock 快速搭建PHP开发环境
    array_map 等php回调函数使用问题(关联数组下标获取)
    Laravel-Action 对代码的改造
    Sessions共享技术设计
    scrapy 写文件进行debug调试
  • 原文地址:https://www.cnblogs.com/wanjn/p/9463928.html
Copyright © 2011-2022 走看看