网络中,有一台计算机 A。A 存储着一个超文本文件 name.html 。
网络中,另一台计算机 B。B 想获取 A 的 name.html 有什么办法呢?
很明显,这些方法可行。但是异常繁琐。有的需要各种认证,有的反应迟缓。
因此为了方便的分享 html 文件,HTTP 协议诞生了。
与 FTP,SCP 不同的是,HTTP 不需要任何权限验证。可以仅仅通过一次 HTTP 请求即可获取目的文件。
最早 HTTP 的诞生就是欧洲核子研究组织为了分享知识所提出的设想。
最初设想的基本的理念是:
- 通过多个文档的相互关联形成超文本(HyperText)
- 作为超文本传输协议的 HTTP
- 指定文档所在地址的 URL
而 WWW 这一名称,是当年用来浏览超文本的客户端应用程序的名字。
URI 就是在「一定规则」下,把一个资源「独一无二的标识」出来。
寻找人类协议://地球/中国/四川/成都/某大学/某宿舍楼/2楼/203寝室/4号床/张三
也是一个 URI 。因为它独一无二的标识了「资源」。
而且它使用的规则是 人类住址协议
。
URL 与 URI 类似,只是 URL 将在「一定规则」下,把一个资源的「位置」独一无二的标识出来。
因为一个资源只有一个位置,所以 URL 同时也将一个资源「独一无二的标识了」出来。
寻找人类协议://地球/中国/四川/成都/某大学/某宿舍楼/2楼/203寝室/4号床/张三
同时是 URI 和 URL。网址就是一种 URL,因为它根据 「域名规则」将一个网络资源的「位置」独一无二的标识了出来。
一个示例网址:http://www.baidu.com/1.txt
它的含义为:文本传输协议://商业区域.百度商业公司.WWW服务器中的1.txt 这个文件
对应关系如下:
可以看出定位百度的地址 商业区域.百度商业公司.www服务器
在网址中是从小区域到大区域书写的。这只是西方文化的习惯,没有理由。
【注意】因为 「 URI,URL,网址 」它们的定义相近,因此大多情况可以混用。
对于 HTTP 而言,获取目标文件的唯一方法是发送一个请求,这个请求被称为请求报文,有如下格式:
在收到 HTTP 请求报文后,服务器会发送一个 HTTP 响应报文:
有些时候,我们不仅只是想要从服务器获取文件。我们还要发送给服务器一些信息。
假设需要给百度服务器传输:a=1 b=2 c=3
这样的信息。需要把请求报文便需要修改为以下格式:
baidu.com/?a=1&b=2&c=3
协议版本可以看出 GET 方法给服务器传输信息时,只需要在 url 后面添加一个 ?
就可以将信息填入了。
其中每个信息之间必须由 &
隔开。
当需要上传大量的信息,不是简单的 a=1 b=2 c=3
这样的信息时。便需要使用 POST 方法。它的格式为:
baidu.com
协议版本或者按 a=1&b=2&c=3
这样的格式在请求体中,来上传简单的信息。
PUT 如同 FTP 用来上传文件,要求请求体含有文件内容,然后保存到请求 URL 指定的位置。
/1.txt
协议版本PUT 请求报文示例:
PUT /new.html HTTP/1.1
Host: example.com
Content-type: text/html
Content-length: 16
<p>New File</p>
成功响应有两种方法:
原文:https://www.cnblogs.com/shiwai/p/14179287.html