web之HTTP协议

 

HTTP协议

HTTP协议简介

HTTP协议,中文名为超文本传输协议,是互联网最常用的网络协议,www服务是主要应用。

www,也叫web,中文名"万维网",默认的http协议的www服务端口为80,加密的www服务https的默认端口为443,主要用于网银,支付等机密业务。

HTTP协议版本

HTTP协议从诞生之初到现在已经经历多个版本,现在主要版本为htpp/1.1以上。

  1. HTPP/1.0简介

    HTTP/1.0是第一个得到广泛使用的HTTP版本。 HTTP/1.0在HTTP/0.9的基础上增加了HTTP请求头, 可支持更多的请求方法, 并且能对多媒体对象进行处理。 HTTP/1.0使得包含生动图片的Web页面和交互式表格成为可能, 而正是这些页面和表格促使互联网被人们广泛地接受。 HTTP/1.0规定浏览器与服务器只保持短暂的连接, 浏览器的每次请求都需要与服务器建立一个TCP连接, 服务器完成请求处理后即断开TCP连接, 服务器不跟踪每个客户, 也不记录过去的请求 。

  2. HTTP/1.1简介

    TTP/1.1的重点是修复HTTP设计中的缺陷, 从可扩展性、 缓存处理、 带宽优化、 持久连接、host头、 错误通知、 消息传递、 内容协商等多个方面都做了相关改进。 HTTP/1.1是当前互联网主流的HTTP版本。

    在连接方面,HTTP/1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应, 减少了建立和关闭连接的消耗和时间延迟。

    在请求头方面,HTTP/I.I增加了更多的请求头和响应头信息, 用以增强HTTP功能。 例如:host主机头功能, 可以让Web浏览器使用主机头名来明确表示要访问服务器上的哪个Web站点, 这样就可以使用Web服务器在同一个IP地址和 端口号上配置多个虚拟Web站点。

    HTTP/1.1的持久连接, 也需要增加新的请求头来帮助实现, 例如,Connection on请求头的值为Keep-Alive时,表示客户端通知服务器返回本次请求结果后保持连接;Connection on请求头的值为close时,表示客户端通知服务器返回本次请求结果后关闭连接。 HTTP/1.1还提供了与身份认证、 状态管理和 Cache缓存等机制相关的请求头和响应头等 。

    HTTP请求方法

在HTTP通信中, 每个HTTP请求报文都包含一个方法 。 用以告诉Web服务器端需要执行哪些具体的动作, 这些动作包括:获取指定Web页面、 提交内容到服务器 、删除服务器上资源文件等, 这些HTTP请求报文中包含的方法 被称为HTTP请求方法。 其中, 常用的HTTP请求方法见表4-1。

HTTP状态码

  1. HTTP状态码介绍

    HTTP状态码是用来表示web服务器响应HTTP请求状态的数字代码。每当web客户端向web服务器发送一个HTTP请求时,web服务器都会返回一个状态响应代码。这个代码是一个三位数代码,作用是告知web客户端此次请求是否成功,或者是否采取其它的动作方式。

  2. HTTP状态码的命令行查看

    可以通过curl命令在linux命令行查看HTTP响应的数字状态码,命令如下

    HTTP报文

HTTP报文中有很多内容,这些行的字段都是由一些ASCII码串组成,但各个字段的长度是不同。HTTP报文可分为两种,一种是从web客户端发往web服务器的HTTP报文,称为请求报文。另外一种是从web服务器发往web客户端的报文,成为响应报文,HTTP的请求和响应报文的格式相似。

  1. HTTP请求报文介绍

    HTTP请求报文由请求行,请求头部,空行和请求报文主体几个部分组成,如下表:

    1. 请求行

      请求行是请求报文的第一行,用来说明客户端想要做什么。内容由请求方法字段,URL字段和HTTP协议版本字段组成,它们之间用空格分隔。下面以GET/index.html,HTTP/1.1为例来说明请求报文的起始请求行信息详情。

    2. 请求头部

      请求头部由关键字/值组成,每行一对,关键字和值用英文冒号":"分隔。请求头部的作用是通过客户端把请求的相关信息告诉给服务器,如下表:

      与请求报文相关的最常用的请求头是content-type和content-length。

    3. 空行

      最后一个请求头部信息之后是一个空行, 通过发送回车符和换行符, 通知Web服 务器空行以下不会有请求头部的信息了。

    4. 请求报文主体

      请求报文主体中包括了要发送给 Web 服务器的数据信息。 请求报文主体不会应用于 HTTP 的 GET 命令方法, 而是应用于 POST 方法。 POST 方法适用于需要客户填写表单的场合。 请求报文的主体信息此处就不再举例了。

  2. HTTP响应报文介绍(Response Message)

    HTTP响应报文由起始行,响应头部header,空行,响应报文主体,这几个组成,和Http请求报文格式。如下表

    1. 起始行

      响应报文的起始行也叫状态行,用来说明服务器响应客户端请求的状况。一般为协议版本号,数字状态码,状态情况。例如:HTTP/1.1 200 OK

    2. 响应头部

      和请求报文类似, 起始行的后面一般有若干个头部字段。 每个头部字段都包含一个名字和一个值, 两者之间用冒号分隔。 头部结尾也是以一个空行结束的。常见的头部信息有:

    3. 空行

      最后一个响应头部信息之后是一个空行,通过发送回车符和换行符,通知客户端空行下文无头部信息了。

    4. 响应报文主体

      响应报文主体中装载了要返回给客户端的数据,这些数据可以是文本,也可以是二进制的图片视频,下面是响应报文主体的html格式文本数据示例。

  3. 一个简单的请求报文和应答报文示例

    如下图为HTTP报文请求应答流程图,从该图示例中可以看到,web客户端发送了一条HTTP请求报文,请求资源http://www.etiantian.org/index.html,请求报文的起始行中有一个get命令,资源名称为/index.html是,使用的是HTTP/1.1协议,由于请求的方法为get,因此请求报文不需要有主体,因为从服务器上获取get一个简单的页面不要在请求报文的主体中发送请求数据。

     

    Web 服务器接受到请求后, 返回 一条HTTP 响应报文。 这条响应报文中包含了HTTP 的版本号( HTTP/1. 1)、 成功的状态码( 200)、 状态描述( OK), 以及若干响应头部字段, 在所有这些内容之后跟着包含了所请求资源的响应主体。 Content-Length 首部说明了响应主体的长度, Content-Type 首部说明了文档的 MIME 类型。

    HTTP协议原理及重点分析

HTTP协议属于 OSI 模型中的第七层应用层协议, HTTP协议的重要应用就是WWW 服务应用, 下面就以 WWW 服务应用为例介绍 HTTP协议的通信原理。 以 HTTP协议进行通信时, 需要有客户端(即终端用户)和服务器端(即 Web 服务器), 在 Web客户端向 Web 服务器发送请求报文之前, 先要通过 TCP/IP协议在 Web 客户端和服务器之间建立一个 TCP/IP 连接。 整个HTTP协议请求的工作流程如下:

  • 终端客户在 Web 浏览器地址栏输入访问地址 http://www.etiantian.org/index.html
  • 2) Web 浏览器请求 DNS 服务器把域名 www.etiantian.org 转换成 Web 服务器的 IP
  • 3) Web 浏览器将端口号(默认是 80)从访问地址(URL) 中解析出来。
  • 4 )Web 浏览器通过解析后的 IP 地址及端口号与 Web 服务器之间建立一条TCP 连接。
  • 5 )建立 TCP 连接后 , Web 浏览器向 Web 服务器发送一条HTTP 请求报文,
  • 6) Web 服务器响应并读取浏览器的请求信息, 然后返回一条HTTP 响应报文
  • 7) Web 服务器关闭 HTTP 连接, 关闭 TCP 连接, Web 浏览器显示访问的网站内容显示到屏幕上。

上述就是HTTP协议通信过程, 整个通信原理的重要知识点有:

  1. 用户访问网站的流程。
  2. DNS 解析流程细节。
  3. 建立 TCP 连接发送HTTP 报文的过程。
  4. HTTP 请求报文的细节。
  5. HTTP 响应报文的细节。
  6. Web 服务器请求后端集群的细节

面试的时候需要将以上几点讲清楚。

 

 

这里对重要知识点进行汇总 , 如下:

  1. HTTP协议位于 OSI 模型中第 7层应用层。
  2. HTTP协议的重要应用是WWW 服务。
  3. 用户上网流程、 DNS 解析流程。
  4. DNS 解析获取到IP后, 建立 TCP 连接, 然后发送 HTTP 请求的细节和服务器响应细节。
  5. HTTP 请求报文与 HTTP响应报文知识。
  6. 到达 HTTP 服务后, 请求后端集群节点的流程为 Nginx → FastCGI →PHP→(数据库,存储等)

    HTTP资源

    媒体类型

互联网上的数据有很多不同的类型, Web 服务器会把通过 Web 传输的每个对象都打上 MIME类型(即MIME type)的数据格式标签。 最初设计 MIME ( Multipurpose Internet Mail Extension , 多用途因特网邮件扩展) 是为了解决在不同的电子邮件系统之间搬移报文时存在的问题。 MIME 在电子邮件系统中工作得非常好, 后来, HTTP 也支持了这个功能, 用它来描述数据并标记不同的数据内容类型。

当 Web 服务器响应 HTTP 请求时, 会为每一个 HTTP 对象数据加一个 MIME类型。 当 Web 浏览器获取到服务器返回的对象时, 会去查看相关的 MIME类型, 并进行相应处理。

MIME类型存在于 HTTP 响应报文的响应头部信息里, 它是一种文本标记 ,表示一 种主要的对象类型和一个特定的子类型, 中间由一条斜杠来分隔。 表 4-8 为生产场景最常见的 MIME 类型。

URL介绍

URL,全称为UniformResource Location ,中文翻译为统一资源定位符,也被称为 网页地址(网址)。如同门牌一样,它是因特网上标准的资源唯一地址。通俗地说,URL 是Internet上用来描述信息资源的字符串,主要用在各种WWW客户端和服务器程序上。URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录等。严格来讲,每个URL都是一个URI,它标识一个互联网资源,并指定对其进行操作或取得该资源的方法。

URL 的格式由下列三部分组成:

第一部分是协议, 例如:h即。

第二部分是主机资源服务器IP地址或域名(端口号), 例如: www.etiantian.org。 第三部分是主机资源的具体地址, 如目录和文件名等 , 例如:oldboy/index.html。 第一部分和第二部分之间用 " :// " 符号隔开, 第二部分和第三部分用 " / " 符号隔开。 第一部分和第二部分是不可缺少的, 第三部分可以省略。 表4-9列举了一个标准的 URL及说明。

URI介绍

URI,全称为UniformResource Identifier,中文翻译为统一资源标识符,是一个用于标识某一互联网资源名称的字符串。这个字符串在世界范围内唯一标识并定位某一个 信息资源。互联网上每个可用的数据资源(如HTML、图片、视频等)皆通过统一资源标识符进行定位。表4-10给出了网站URI(URL是URI的子集)说明;表4-门给出了指向一个用户邮箱的URI。

 

 

posted @ 2021-11-23 14:43  头发重要  阅读(918)  评论(0编辑  收藏  举报