HTTP

作者: lconcise | 来源:发表于2021-09-29 19:37 被阅读0次

    HTTP的本质

    HTTP协议是浏览器与服务器之间的数据传送协议。作为应用层协议,HTTP是基于TCP/IP协议来传递数据的(HTML文件、图片、查询结果等),HTTP协议不涉及数据包(Packet)传输,主要规定了客户端和服务之间的通信格式。

    举个例子:
    假如浏览器需要从远程 HTTP 服务器获取一个 HTML 文本,在这个过程中,浏览器实际上要做两件事情。

    1. 与服务器建立 Socket 连接。
    2. 生成请求数据并通过 Socket 发送出去。

    第一步比较容易理解,浏览器从地址栏获取用户输入的网址和端口,去连接远端的服务器,这样就能通信了。
    我们重点来看第二步,这个请求数据到底长什么样呢?都请求些什么内容呢?或者换句话说,浏览器需要告诉服务端什么信息呢?

    首先最基本的是,你要让服务端知道你的意图,你是想获取内容还是提交内容;其次你需要告诉服务端你想要哪个内容。那么要把这些信息以一种什么样的格式放到请求里去呢?这就是 HTTP 协议要解决的问题。也就是说,HTTP 协议的本质就是一种浏览器与服务器之间约定好的通信格式。那浏览器与服务器之间具体是怎么工作的呢?

    HTTP工作原理

    image.png

    HTTP请求响应实例

    HTTP 请求数据由三部分组成,分别是请求行、请求报头、请求正文

    image.png
    HTTP 的响应也是由三部分组成,分别是状态行、响应报文、报文主体

    思考与总结

    HTTP 协议和其他应用层协议一样,本质上是一种通信格式。

    1. HTTP 和 HTML 有什么区别?
      HTTP 是通信的方式,HTML 才是通信的目的,就好比 HTTP 是信封,信封里面的信(HTML)才是内容;但是没有信封,信也没办法寄出去。HTTP 协议就是浏览器与服务器之间的沟通语言,具体交互过程是请求、处理和响应。

    2. Cookie和Session
      由于 HTTP 是无状态的协议,为了识别请求是哪个用户发过来的,出现了 Cookie 和 Session 技术。Cookie 本质上就是一份存储在用户本地的文件,里面包含了每次请求中都需要传递的信息;Session 可以理解为服务器端开辟的存储空间,里面保存的信息用于保持状态。作为 Web 容器,Tomcat 负责创建和管理 Session,并提供了多种持久化方案来存储 Session。

    3. HTTP 的特点是无状态的,多个请求之间是没有关系的,这是不是矛盾了?
      在 HTTP/1.0 时期,每次 HTTP 请求都会创建一个新的 TCP 连接,请求完成后之后这个 TCP 连接就会被关闭。这种通信模式的效率不高,所以在 HTTP/1.1 中,引入了 HTTP 长连接的概念,使用长连接的 HTTP 协议,会在响应头加入 Connection:keep-alive。这样当浏览器完成一次请求后,浏览器和服务器之间的 TCP 连接不会关闭,再次访问这个服务器上的网页时,浏览器会继续使用这一条已经建立的连接,也就是说两个请求可能共用一个 TCP 连接。

    http1.0: 买一个信封只能传送一个来回的信。
    http1.1: keep–alive:买一个信封可以重复使用,但前提是得等到服务端把这个信封送回来。


    内容来源:https://time.geekbang.org/column/article/94969

    相关文章

      网友评论

          本文标题:HTTP

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