正确的http协议论述(HTTP协议内容讲解一)

超文本传输​​协议是应用程序用于相互通信的协议。从本质上讲,HTTP负责委托客户端和服务器之间的所有互联网媒体文件。这包括HTML,图像,文本文件,电影以及介于两者之间的所有内容。它可以快速可靠地完成这项工作。

正确的http协议论述(HTTP协议内容讲解一)(1)

HTTP是 应用程序协议而不是传输协议,因为它用于应用程序层中的通信。在这里慢慢记忆是网络堆栈的样子。从该图像中,您可以清楚地看到HTTP是应用程序协议,TCP可以在传输层上运行。

正确的http协议论述(HTTP协议内容讲解一)(2)

资源:互联网上的一切都是资源,HTTP与资源协同工作。这包括文件,流,服务和其他一切。HTML页面是一种资源,Youtube视频是一种资源,您在Web应用程序上的日常任务的电子表格是一种资源......您明白了。

你如何将一种资源与另一种资源区分开来?

通过提供URL(统一资源定位器)。

URL指向浏览器可以找到资源的唯一位置。

如何在Web客户端和Web服务器之间交换消息

每个内容,每个资源都存在于某个Web服务器(HTTP服务器)上。这些服务器期望HTTP请求提供这些资源。

但是,您如何从Web服务器请求资源?

当然,您需要一个HTTP客户端!

您现在正在使用HTTP客户端来阅读本文。Web浏览器是HTTP客户端。它们与HTTP服务器通信以检索计算机的资源。一些最受欢迎的客户是谷歌的Chrome,Mozilla的Firefox,Opera,Apple的Safari,以及不幸的是仍然臭名昭着的Internet Explorer。

消息和一些消息示例

那么HTTP消息是什么样的?

如果不太多谈论它,这里有一些HTTP消息的例子:

正确的http协议论述(HTTP协议内容讲解一)(3)

正确的http协议论述(HTTP协议内容讲解一)(4)

请求的第一行是为请求行保留的它由 请求方法名称,请求URIHTTP版本组成。

接下来的几行代表请求标头。请求标头为请求提供附加信息,例如请求期望的内容类型,授权信息等。

对于GET请求,故事就在那里结束。POST请求还可以具有正文并以正文消息的形式携带其他信息。在这种情况下,它是一条JSON消息,其中包含有关如何为URI中指定的给定repo创建GitHub webhook的附加信息。webhook创建需要该消息,因此我们使用POST请求将该信息提供给GitHub API。

请求行和请求标头必须后跟<CR> <LF>(回车和换行符\ r \ n),并且消息标题和仅包含<CR> <LF>的消息正文之间只有一个空行。

作为对这些请求的回应,我们得到了什么?

正确的http协议论述(HTTP协议内容讲解一)(5)

响应消息的结构与请求的结构非常相似,除了调用的第一行是 状态行,它本身令人惊讶地传递有关响应状态的信息。

状态行后跟响应标头响应正文

MIME类型

MIME类型用作描述Internet上文件类型的标准方法。您的浏览器有一个MIME类型列表,Web服务器也是如此。这样,无论操作系统如何,都可以以相同的方式传输文件。

一个有趣的事实是MIME代表多用途Internet邮件扩展,因为它们最初是为多媒体电子邮件开发的。它们已经适用于HTTP和其他几种协议。

每MIME类型由一个的类型子类型 和列表 可选参数 在以下格式: 类型/子类型; 可选参数。

正确的http协议论述(HTTP协议内容讲解一)(6)

HTTP请求方法(也称为“动词”)定义将对资源执行的操作。HTTP定义了几种请求方法,其中最常见/使用的是GETPOST方法。

请求方法可以是幂等的或不是幂等的。这只是一个奇特的术语,用于解释从同一资源多次调用该方法是安全/不安全的。换句话说,这意味着,唯一目的是检索信息的GET方法默认情况下应该是幂等的。一遍又一遍地在同一资源上调用GET不应该导致不同的响应。另一方面,POST方法不是幂等方法。

在HTTP / 1.1之前,只有三种方法:GET,POST和HEAD,并且HTTP / 1.1的规范在游戏中带来了更多:OPTIONS,PUT,DELETE,TRACE和CONNECT。

标题字段是冒号分隔的名称 - 值字段,您可以在请求或响应消息的第一行之后找到它们。它们为HTTP消息提供更多上下文,并确保客户端和服务器适当地了解请求或响应的性质。

总共有五种类型的标题:

  • 常规标题: 这些标题对服务器和客户端都很有用。一个很好的例子是Date头字段,它提供有关消息创建时间的信息。
  • 请求标头: 特定于请求消息。它们为服务器提供附加信息。例如,Accept:* / * header字段通知服务器客户端愿意接收任何媒体类型。
  • 响应标头: 特定于响应消息。它们为客户提供其他信息。例如,Allow:GET,HEAD,PUT标头字段通知客户端所请求资源允许哪些方法。
  • 实体标题: 这些标题处理实体主体。例如,Content-Type:text / html标题允许应用程序知道数据是HTML文档。
  • 扩展标头: 这些是由应用程序开发人员构建的非标准标头。它们不是HTTP的一部分,但需要被容忍。

状态代码

状态代码就是一个表示请求的结果的三位数。接下来是原因短语,它是人类可读的状态码解释。

一些例子包括:

  • 200:好的
  • 404:未找到
  • 500:内部服务器错误

状态代码分为五个不同的组。

正确的http协议论述(HTTP协议内容讲解一)(7)

通过学习HTTP获得的知识并不能帮助您直接解决某些问题。但它让您了解互联网通信的基本原则,您可以将其应用于比HTTP更高级别的几乎所有其他问题。无论是REST,API,Web应用程序开发还是网络,您现在都可以在解决这些问题时更加自信。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页