zoukankan      html  css  js  c++  java
  • http简单总结

    参考学习:https://www.cnblogs.com/zhangyfr/p/8662673.html
    1.HTTP特点

    HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
    HTTP是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。
    HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快

    2.HTTP内容
    HTTP请求:
    HTTP请求是客户端往服务端发送请求动作,告知服务器自己的要求。

    HTTP请求由状态行、请求头、请求正文三部分组成:
    状态行:包括请求方式Method、资源路径URL、协议版本Version;
    请求头:包括一些访问的域名、用户代理、Cookie等信息;
    请求正文:就是HTTP请求的数据。
    在这里插入图片描述

    根据HTTP标准,HTTP请求可以使用多种请求方法。
    HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
    HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

    HTTP响应:
    服务器收到了客户端发来的HTTP请求后,根据HTTP请求中的动作要求,服务端做出具体的动作,将结果回应给客户端,称为HTTP响应。

    HTTP响应由三部分组成:状态行、响应头、响应正文;
    

    状态行:包括协议版本Version、状态码Status Code、回应短语;
    响应头:包括搭建服务器的软件,发送响应的时间,回应数据的格式等信息;
    响应正文:就是响应的具体数据。

    在这里插入图片描述
    3.HTTP 1.0 1.1 2.0

    长连接
    缓存处理
    错误状态码管理
    host头处理
    带宽优化及网络连接的使用
    

    2.0

    新的二进制格式
    多路复用
    header压缩
    服务端推送(SPDY)
    

    4.HTTP状态码
    参考学习:https://www.cnblogs.com/EFPlatform/p/9591775.html

    1开头(临时响应)表示临时响应并需要请求者继续执行操作的状态码
    2开头 (请求成功)表示成功处理了请求的状态代码。
    3开头 (请求被重定向)表示要完成请求,需要进一步操作。 通常,这些状态代码用来重定向。
    4开头 (请求错误)这些状态代码表示请求可能出错,妨碍了服务器的处理。
    5开头(服务器错误)这些状态代码表示服务器在尝试处理请求时发生内部错误。 这些错误可能是服务器本身的错误,而不是请求出错。
    

    200/304/400/401/403/404/500/503/504/505

    5.HTTP与HTTPS区别

    HTTPS协议需要到CA申请证书,一般免费证书很少,需要交费。
    HTTP协议运行在TCP之上,所有传输的内容都是明文,HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密的。
    HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
    HTTPS可以有效的防止运营商劫持,解决了防劫持的一个大问题。
    

    缓存策略: 可分为 强缓存 和 协商缓存

    Cache-Control/Expires: 浏览器判断缓存是否过期,未过期时,直接使用强缓存,Cache-Control的 max-age 优先级高于 Expires
    当缓存已经过期时,使用协商缓存
        唯一标识方案: Etag(response 携带) & If-None-Match(request携带,上一次返回的 Etag): 服务器判断资源是否被修改
        最后一次修改时间: Last-Modified(response) & If-Modified-Since(request,上一次返回的Last-Modified)
            如果一致,则直接返回 304 通知浏览器使用缓存
            如不一致,则服务端返回新的资源
    Last-Modified 缺点:
        周期性修改,但内容未变时,会导致缓存失效
        最小粒度只到 s, s 以内的改动无法检测到
    Etag 的优先级高于Last-Modified
    

    HTTP的几种请求方法用途

    GET方法
        发送一个请求来取得服务器上的某一资源
    POST方法
        向URL指定的资源提交数据或附加新的数据
    PUT方法
        跟POST方法很像,也是想服务器提交数据。但是,它们之间有不同。PUT指定了资源在服务器上的位置,而POST没有
    HEAD方法
        只请求页面的首部
    DELETE方法
        删除服务器上的某资源
    OPTIONS方法
        它用于获取当前URL所支持的方法。如果请求成功,会有一个Allow的头包含类似“GET,POST”这样的信息
    TRACE方法
        TRACE方法被用于激发一个远程的,应用层的请求消息回路
    CONNECT方法
        把请求连接转换到透明的TCP/IP通道
    

    有关·定义
    请求头:访问的域名 用户代理 cookie等信息。
    响应头:发送响应的时间 搭建服务器的软件 回应数据格式等
    用户代理(用户代理 User Agent,是指浏览器,它的信息包括硬件平台、系统软件、应用软件和用户个人偏好。)

    http1.0与http1.1区别中:(可扩展性)
    扩展性的一个重要原则:如果HTTP的某个实现接收到了自身未定义的头域,将自动忽略它。
    via头域:记录整个路径发送方使用的版本。
    OPTION:允许客户端获取一个服务器支持的方法列表。
    Upgrade头域:客户端可以让服务器知道它能够支持的其它备用通信协议

  • 相关阅读:
    jenkins as code 与go语言学习
    VC++ 网络编程总结(一)
    Linux下的C高级编程---学习
    面试前必做4准备
    MFC视图切换大全总结
    多线程编程技术学---学习笔记--线程编程基础知识
    C语言高效编程的几招(绝对实用,绝对经典)
    汇编语言(学习笔记-----[bx]和loop)
    汇编语言(学习笔记----源程序)
    汇编语言(学习笔记----寄存器-内存访问)
  • 原文地址:https://www.cnblogs.com/princeness/p/11664929.html
Copyright © 2011-2022 走看看