HTTP 简易理解

HTTP 简易理解


网络中,有一台计算机 A。A 存储着一个超文本文件 name.html 。

网络中,另一台计算机 B。B 想获取 A 的 name.html 有什么办法呢?

  • FTP 文件传输协议
  • SCP 基于 SSH 的远程文件传输协议
  • SMTP 电子邮件

很明显,这些方法可行。但是异常繁琐。有的需要各种认证,有的反应迟缓。

因此为了方便的分享 html 文件,HTTP 协议诞生了。

与 FTP,SCP 不同的是,HTTP 不需要任何权限验证。可以仅仅通过一次 HTTP 请求即可获取目的文件。

最早 HTTP 的诞生就是欧洲核子研究组织为了分享知识所提出的设想。

最初设想的基本的理念是:

  • 通过多个文档的相互关联形成超文本(HyperText)
  • 作为超文本传输协议的 HTTP
  • 指定文档所在地址的 URL

而 WWW 这一名称,是当年用来浏览超文本的客户端应用程序的名字。


URI(统一资源标识符)


URI 就是在「一定规则」下,把一个资源「独一无二的标识」出来。

  • 若是把人比作资源,身份证号就是人的 URI 。
  • 但名字不是,因为它会重复。

寻找人类协议://地球/中国/四川/成都/某大学/某宿舍楼/2楼/203寝室/4号床/张三 也是一个 URI 。因为它独一无二的标识了「资源」。

而且它使用的规则是 人类住址协议


URL(统一资源定位符)

URL 与 URI 类似,只是 URL 将在「一定规则」下,把一个资源的「位置」独一无二的标识出来。

因为一个资源只有一个位置,所以 URL 同时也将一个资源「独一无二的标识了」出来。

  • 寻找人类协议://地球/中国/四川/成都/某大学/某宿舍楼/2楼/203寝室/4号床/张三 同时是 URI 和 URL。
  • 因为它同时符合了 URI 与 URL 的要求。

网址与 URL

网址就是一种 URL,因为它根据 「域名规则」将一个网络资源的「位置」独一无二的标识了出来。

一个示例网址:http://www.baidu.com/1.txt

它的含义为:文本传输协议://商业区域.百度商业公司.WWW服务器中的1.txt 这个文件 对应关系如下:

  • http :文本传输协议
  • com :商业区域
  • baidu :百度商业公司
  • www :www服务器
  • 1.txt :文件名

可以看出定位百度的地址 商业区域.百度商业公司.www服务器 在网址中是从小区域到大区域书写的。这只是西方文化的习惯,没有理由。

【注意】因为 「 URI,URL,网址 」它们的定义相近,因此大多情况可以混用。


HTTP 请求与响应


对于 HTTP 而言,获取目标文件的唯一方法是发送一个请求,这个请求被称为请求报文,有如下格式:

  • 请求行:请求方法,URL,HTTP 协议版本
  • 请求头:一些信息,如当前时间
  • 请求体:使用 GET 方法时,没有请求体

在收到 HTTP 请求报文后,服务器会发送一个 HTTP 响应报文:

  • 响应行:HTTP 协议版本,状态码,原因短语
  • 响应头:一些信息,如当前时间
  • 响应体:请求报文中所指定的 html 文档文件

客户端给服务器传输信息

有些时候,我们不仅只是想要从服务器获取文件。我们还要发送给服务器一些信息。


GET 方法

假设需要给百度服务器传输:a=1 b=2 c=3 这样的信息。需要把请求报文便需要修改为以下格式:

  • 请求行:GET baidu.com/?a=1&b=2&c=3 协议版本
  • 请求头:无影响,和不上传信息时一样
  • 请求体:GET 方法,无请求体

可以看出 GET 方法给服务器传输信息时,只需要在 url 后面添加一个 ? 就可以将信息填入了。

其中每个信息之间必须由 & 隔开。


POST 方法

当需要上传大量的信息,不是简单的 a=1 b=2 c=3 这样的信息时。便需要使用 POST 方法。它的格式为:

  • 请求行:POST baidu.com 协议版本
  • 请求头:含有所上传文件的描述信息
  • 请求体:包含所上传的文件。

或者按 a=1&b=2&c=3 这样的格式在请求体中,来上传简单的信息。


PUT 方法

PUT 如同 FTP 用来上传文件,要求请求体含有文件内容,然后保存到请求 URL 指定的位置。

  • 请求行:PUT /1.txt 协议版本
  • 请求头:上传文件的描述信息
  • 请求体:所上传的文件

PUT 请求报文示例:

PUT /new.html HTTP/1.1
Host: example.com
Content-type: text/html
Content-length: 16

<p>New File</p>

成功响应有两种方法:

  • 201:服务器没有此文件,成功新建并保存
  • 200 或 204:服务器已有此文件,成功更新

OPTIONS 方法

查询服务器支持的请求方法,报文格式:

OPTIONS * HTTP/1.1
Host: example.com

响应报文格式:

HTTP/1.1 200 OK
Allow:GET,POST,HEAD,OPTIONS

参考

  • 如有雷同,是我抄袭
原文地址:https://www.cnblogs.com/shiwai/p/14179287.html