美文网首页
HTTP协议

HTTP协议

作者: leap_ | 来源:发表于2019-12-05 15:26 被阅读0次

    HTTP协议是基于TCP协议的应用层协议,Hypertext Transfer Protocol,规定应用进程之间的通信准则;

    工作方式:请求&响应
    交互数据方式:报文(请求报文/响应报文)

    请求报文:请求行+请求头+请求体

    请求行:

    作用:声明请求方法,主机域名,资源路径,协议版本
    结构:请求方法+请求路径+协议版本

    GET /chn/ysz/index.html/ HTTP/1.0
    

    请求方法:

    • GET:请求读取资源信息
    • POST:为服务器添加信息
    • HEAD:请求读取资源的首部信息
    • DELETE:删除资源信息
    • PUT:添加文档信息
    请求头:

    作用:声明报文的部分信息
    结构:Header:Header的值

    请求头的Header:

    请求体:

    作用:存放需要发送给服务器的信息
    形式:键值对,key1=value1&key2=value2

    响应报文:状态行+响应头+响应体

    状态行:

    作用:声明协议版本,状态码,状态码信息描述
    组成: 协议版本+状态码+状态信息

    HTTP/1.0 202 Accepted
    
    状态码:
    响应头:

    作用:声明报文的部分信息(同请求头)
    组成:Header:Header的值


    响应体:

    同请求体

    补充:

    请求头和响应头公共的Header

    HTTP断点续传实现

    HTTP1.1默认支持断点续传

    关联的Header如下:
    • Range:用于客户端到服务端的请求,指定传输的某一段的文件字节序号;
      Ranges:bytes=0~300 表示下载序号为0~300的字节

    • If-Range:客户端到服务端,必须与Range配合使用,判断实体是否发生改变;

    • Accept-Ranges:服务端到客户端的应答,客户端通过此判断服务端是否支持断点续传,
      Accent-Ranges:bytes 表示支持以byte为单位的断点续传

    • Content-Ranges:服务端到客户端,指定返回文件资源的字节范围

    服务端如果返回部分资源就返回响应头的状态码206,如果返回整个文件就是200

    HTTP缓存

    第一次请求数据流程

    强制缓存:

    服务器返回的数据带一个Cache-Control字段,表明这个数据的有效缓存时间,如果在有效时间内直接从缓存中取;

    • Cache-Control:
      Cache-Control:max-age=3600 表示改资源缓存的有效时间为1小时
      Cache-Control:no-cache 表示不使用缓存,每次都需要发送请求,并且不会被缓存到零时文件

    对比缓存:

    服务器会给数据带上一个最后修改时间,每次请求数据都会带上这个时间和服务端进行比较,如果服务端的最后修改时间没有改变,就返回304,从缓存中取;

    两种实现方式:
    • Last-Modified/If-Modify-Since:
    • ETag/If-None-Match:
    1. Last-Modify:服务端到客户端,标识改资源的最后修改时间

    2. If-Modify-Since:客户端到服务端,当客户端再次请求一个资源时,会带上服务端给他的Last-Modify时间;

    3. ETag:服务器会返回一个ETag字段,表示文件唯一标识,客户端请求会带上这个字段标识(放在If-None-Match),服务端会通过此判断是否命中缓存;
      ETag由以下几个因素生成:

    • 文件的i-node编号(Linux下的识别文件编号)
    • 文件的最后修改时间
    • 文件大小
    1. If-None-Match:客户端到服务端,再次请求该数据带上的ETag标识;

    相对于Last-Modify,ETag的优势体现在哪里?

    1. Last-Modify只能精确到秒
    2. 服务器与代理服务器时间不一致

    304:未修改 自上次请求后,改资源未发生修改,可以使用缓存,不需要再次返回网页内容

    HTTPS加密

    HTTPS的特点:
    • 加密传输,无法被窃听
    • 校验机制,无法被修改
    • 身份证书,无法被冒充

    对称加密:加密和解密的密钥相同
    缺点:

    1. 密钥需要提前商定,不可以通信传输密钥
    2. 服务端需要维护多个密钥对

    非对称加密:加密和解密的密钥不同(RSA)
    优点:

    1. 不存在密钥传输问题
    2. 解决了密钥管理问题

    公钥加密,私钥解密;私钥签名,公钥验证

    HTTPS的建立过程

    HTTP处理长连接

    相关文章

      网友评论

          本文标题:HTTP协议

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