HTTP协议(一):概念篇

2019-09-28 15:54  |  分类:理论知识  |  标签: HTTP原理浏览器

摘要:HTTP协议是在万维网上进行通信时所使用的协议方案,对于前端来说是需要掌握,这里讲述一些重要的相关概念。

前言

我们从一道面试题说起:相信很多人在前端面试都遇到了这个问题:从输入URL到页面加载发生了什么。这道题的答案涉猎的范围很广,牵扯了许许多多的知识点。而对于这道题来说,答案可以简单,也可以复杂;但是不管你是简单的回答,还是复杂完整的回答,都绕不开一个点:HTTP协议。而对于一个前端工程师来说,HTTP协议,也是必须要掌握的。

因此,我打算开这么一个关于HTTP协议相关知识点的系列,希望大家有所收获。

基本组件

构成HTTP协议的基本组件是:HTTP服务器和HTTP客户端。客户端发起HTTP请求,向HTTP服务器请求相关的资源,而后HTTP服务器接收到请求后,作出HTTP响应发送给客户端,给予客户端相应的资源。

主要的概念

下面我们来知悉一些主要的概念:

资源

  • 媒体类型:又叫MIME type 用于标志当前资源所属的数据格式标签,即用于HTTP服务器该用什么方式去处理当前对象。MIME type是一种文本标记,表示一种主要的对象类型和一个特定的子类型。

    • text/html: HTML格式的文本文档
    • text/plain:普通的ASCII文本文档
    • image/jpeg:jpeg格式的图片
  • URI:统一资源标识符,用于服务器资源唯一标识并定位信息资源。其有2 种表现形式:URL和URN

  • URL:统一资源定位符,是资源标识符的常见形式。用于描述一台服务器上某资源的特定位置。可以明确说明如何从一个精确、固定的位置获取资源。

    • 组成:scheme(方案)://address(服务器地址)/path(资源路径)
  • URN:统一资源名,URI的第二种形式。URN作为特定内容的唯一名称使用,与目前资源所在地无关,这样来一来最大的好处就是资源可以随意移动,而不会影响访问。目前,URN仍处于试验阶段,还未大范围使用。

事务

一个HTTP事务由一个HTTP请求和一个HTTP响应组成,组成部分则是HTTP报文(格式化数据块)

  • 方法:每条HTTP请求都包含一个方法,这些方法会告诉HTTP服务器要执行什么操作

    • GET、POST、PUT、DELETE、HEAD
  • 状态码:一个三位数的代码,告知客户端的请求状态,是否成功或者采取其他动作。伴随每个状态码,HTTP还会发送对应的解释性短语

    • 200(OK)、302(Redirect)、404(Not Found)、500(Server Error)
  • 报文:用于让HTTP客户端,服务端通信的格式化数据库。由一行一行的简单字符串组成。HTTP报文都是纯文本,非二进制代码。

    • 请求报文 和 响应报文
GET /index.html HTTP/1.0 起始行
Accept: text/html 以下为首部
Accept-Language: zh-CN,zh
HTTP/1.0 200 OK 起始行
Content-Type: text/html 以下为首部
Content-length: 1024
一些主体内容 主体

链接

主要为TCP/IP链接,HTTP报文就是通过TCP协议进行传输的。因特网自身就是基于TCP/IP协议的,而TCP/IP协议也是全世界的计算机网络设备常用的层次化分组网络协议集,因此了各种网络和硬件的特点以及缺点,使得各设备能够进行可靠通信。

  • TCP/IP:提供了无差错、按顺序的数据传输,以及未分段的数据流(可以在任意时刻以任意尺寸将数据发送出去),建立连接后,客户端和服务端直接的报文便不会丢失,不会破坏,不会在接收时出现错误。

  • IP地址、端口号:ip:port,构成一个地址。同一个ip不同端口也是不同地址。如果端口号不写,则默认为80,ssl的情况下则为:443

    • 192.168.1.1
    • 192.168.1.1:8080

协议版本

协议发展至今有多个版本,HTTP程序应该尽可能的兼容不同的HTTP协议版本.

  • HTTP/0.9
  • HTTP/1.0
  • HTTP/1.0+
  • HTTP/1.1
  • HTTP-NG(HTTP/2.0)

Web的结构组件

  • 代理:位于客户端和服务器之间的HTTP中间实体。用于接收客户端请求后,转发给服务器(这个过程可能对请求进行修改)。
  • 缓存:是一种特殊的代理服务器,可以将经过代理传送的常用文档复制保存起来,提供给下一个请求同样文档的客户端使用。
  • 网关:一种特殊的服务器,作为其他服务器的中间实体使用。通常是将HTTP流量转换为其他协议。如:一个HTTP/FTP网关会通过HTTP请求接收FTP URI的请求。
  • 隧道:对HTTP通信报文进行盲转发的特殊代理。常见的就是HTTP/SSL(HTTPS),既:在HTTP链接承载加密的安全的套接字层SSL流量。
  • Agent 代理:发起自动HTTP请求的半智能化WEB客户端。

致谢

HTTP权威指南