zoukankan      html  css  js  c++  java
  • 【总结】图解HTTP

    职责

    • HTTP:生成针对目标服务器的HTTP报文:请给我某个页面的资源
    • TCP:为了方便通信,将HTTP切成多个报文段,按照序号进行发送,把每个报文段可靠传给对方。
    • IP:搜索对方的地址,一边中转,一边传送

    URI

    • URI:统一资源标识符,
    • URL:统一资源定位符,资源的地点
      绝对定位符:

    • 查询字符串:可以传入参数
    • 片段标识符:可标记出已获取资源的子资源(文档的某个位置)

    HTTP

    定义:用于服务器端和客户端之前通信的协议。
    一定是从客户端开始发起通信的

    • 请求: 方法,资源的地址,版本号,请求首部字段,内容实体
    • 响应:协议版本,状态码,状态码原因短语,响应首部字段

    HTTP是不保存状态的协议:可以快速处理大量的事务。

    方法:GET & POST

    GET

    GET:告诉服务器端我要访问某个资源
    GET /index.html HTTP/1.1
    HOST : www.hackr.jp
    if-Modified-Since Jul2012
    

    只是返回从2012年以后更新过的页面。
    如果此时间之后没有更新则返回304 Not Modified。

    ###  POST
    POST:我要把这个信息告诉服务器端。

    HTTP/1.0和HTTP/1.1支持的方法
    方法说明
    GET获取资源
    POST传输给服务器端实体主体
    PUT传输文件
    HEAD获得报文首部
    DELETE删除文件
    OPTIONS询问支持的方法
    TRACE追踪路径
    CONNECT要求用隧道协议连接代理

      持久连接

    持久连接使得多数请求以管线化方式发送。不需要等待,直接发送下一个请求
    ** 使用Cookie进行状态管理:**
    服务器使用Set-Cookie(响应报文的首部字段信息),客户端保存Cookie
    客户端第二次发起连接的时候,会加入Cookie

    HTTP报文格式

    首部 +主体
    首部:

    • 请求行
    • 请求首部行
    • 通用首部行
    • 实体首部行

    不同的编码方式

    • 压缩
    • 分块发送:Chunked Transfer Coding

    发送多种数据的多部分对象集合:MIME

    获取部分内容范围请求:206 Partial Content

    内容协商返回最合适的内容:

    • 服务器驱动协商:
    • 客户端驱动协商
    • 透明协商

    HTTP状态码

    成功状态码

    ## 重定向状态码

    客户端错误

    服务器错误

    与HTTP协作的Web服务器

    VM:一台服务器搭建多个站点,使用DNS解析以后IP地址会相同。所以必须在HOST的首部指定主机名或者域名的URL

    • 代理:有转发功能的程序,接收客户端的请求并发送给服务器。
    • 网关:转发其他服务器的数据的服务器。可以直接处理请求。
    • 隧道:中转程序,主要用于客户端和服务器端相隔比较远的时候。

    代理

    接收客户端的请求并转发,不改变URL,直接转发。
    每次通过代理转发请求或者响应时,会追加到Via首部中。
    代理的作用:

    • 缓存技术:可以减少流量:缓存代理 & 透明代理
    • 访问控制:针对特定的URL进行控制,

    缓存

    服务器返回请求的同时,代理服务器也会保存一份副本
    但是缓存有可能和源资源不同步,所以需要设定有效期。
    客户端缓存:

    网关

    将HTTP转换为其他的协议。

    隧道

    使用SSL建立一条与其他服务器的通道。

    首部

    通用首部

    请求和响应都会用到的首部

    Cache-Control


    ### Connection

    作用:

    • 控制不再转发给代理的首部字段:Connection:Upgrade
    • 管理持久连接:Connection:close

    请求首部字段


    响应首部字段


    ## 实体首部字段

    请求和响应都含有与实体相关的首部字段

    Cookie相关的字段

    Set-Cookie

    服务器端在准备开始管理客户端的状态的时候,会事先告知各种信息

    也可以参见简书主页:https://www.jianshu.com/u/482f183ec380
  • 相关阅读:
    python3.6.4源码安装
    centos 6 中恢复删除的文件
    mysql5.6.8源码安装
    zookeeper集群搭建
    vmware 12中安装苹果系统
    docker被入侵后.............
    关于docker
    关于redis
    人生的价值 幸福感
    c# 泛型
  • 原文地址:https://www.cnblogs.com/dy2903/p/7229304.html
Copyright © 2011-2022 走看看