前言

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网服务器传输超文本到本地浏览器的传送协议。HTTP 是基于 TCP/IP 协议通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。

本文主要介绍http有关的一些基础概念

网络基础简述

  • 网络分层:网络分层就是将网络节点所要完成的数据的发送或转发、打包或拆包,控制信息的加载或拆出等工作,分别由不同的硬件和软件模块去完成。这样可以将往来通信和网络互连这一复杂的问题变得较为简单。

    • 链路/物理层:物理传输
    • 网络层:处理网络上流动的数据包,解决路由选择、拥塞控制和网络互连等
    • 传输层:提供处于网络连接中的两台计算机之间的数据传输(TCP/UDP)
    • 应用层:向用户提供应用服务时通信的活动(HTTP,DNS)

image.png

一、HTTP协议主要特点

  1. 简单快速:客户端向服务器请求时,只需要传送请求的方法和路径。由于HTTP协议简单,所以服务器程序规模小,通信速度很快。
  2. 灵活:可以传输任意类型的数据对象。
  3. 无连接:每次连接只处理一次请求,请求应答后断开;采用这种传输可以节约时间。
  4. 无状态:协议本身并不会保留之前一切的请求或响应的报文信息。这是为了处理大量的事物,确保协议的可伸缩性,而特意设计得简单。

二、HTTP报文的组成部分

报文由报文首部、空行、报文主体组成,根据角色不同分请求报文和响应报文。

请求报文

  • 请求行:方法 资源路径 协议版本
  • 请求头:关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。
  • 空行:这个行非常重要,它表示请求头已经结束,接下来的是请求正文。
  • 请求体:内容实体

image.png

响应报文

  • 响应行:版本协议 HTTP状态码 状态码短语
  • 响应头:关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。
  • 空行:这个行非常重要,它表示请求头已经结束,接下来的是请求正文。
  • 响应体:内容实体

image.png

三、HTTP方法

  • GET:请求指定的页面信息,并返回实体主体。
  • POST:向指定资源提交数据进行请求(例如提交表单或商上传文件)。数据包含在请求体中。
  • PUT:从客户端向服务器传送的数据取代指定的文档内容。
  • DELETE:请求服务端删除指定资源。
  • HEAD:只获取报文的头部信息。
  • OPTIONS:客户端查询服务端指定资源支持的方法。

四、POST与GET的区别

  • 参数相关:

    • GET请求参数会被完整的保留在浏览器历史记录中,而POST不会。
    • GET请求参数通过URL传递,POST放在Request body中
    • GET请求在URL中传送的参数有长度限制2kb,而POST没有
  • 浏览器相关:

    • GET在浏览器回退时时无害的,而POST会再次提交请求
    • GET请求浏览器会主动缓存,而POST不会,除非手动设置

五、HTTP状态码*

  • 1xx:指示信息;表示请求已经接收,继续处理
  • 2xx:成功;表示请求已经成功接收、理解、接受

    • 200:请求成功
    • 204:请求成功,但不需要返回任何实体内容
    • 206:分段传输
  • 3xx:重定向;表示请求需要更进一步的操作

    • 301:永久重定向
    • 302:临时重定向
    • 304:使用本地缓存
  • 4xx:客户端错误;请求语法错误或请求无法实现

    • 400:客户端代码错误
    • 403:对请求页面的访问被禁止
    • 404:请求资源不存在
  • 5xx:服务端错误;服务器未能实现合法响应

    • 500:服务端错误
    • 503:服务端宕机

六、持久化连接

HTTP初始版本中,每次HTTP通信都会建立断开一次连接;持久化连接就是为了减少TCP通信的开销
HTTP/1.1 和一部分的 HTTP/1.0 想出了持久连接(HTTP Persistent Connections,也称为 HTTP keep-alive 或 HTTP connection reuse)的方法。持久连接的特点是,只要任意一端没有明确提出断开连接,则保持TCP连接状态。

七、管线化

管线化是在持久化连接基础上,衍生出来的。客户端可以连续请求无需等待上一条请求响应。

image.png

参考资料


JTR354
21 声望1 粉丝

读书点亮生活