• 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
    

    参考

    • 如有雷同,是我抄袭
  • 相关阅读:
    止步于磁盘空间不足
    添加随机扰动 爬山算法
    递归 启发式
    删除文件
    linux 下载 图片
    CURD特性
    php 写session
    php 写session
    14.5.4 InnoDB File-Per-Table Tablespaces 每个表一个文件
    14.5.4 InnoDB File-Per-Table Tablespaces 每个表一个文件
  • 原文地址:https://www.cnblogs.com/shiwai/p/14179287.html
Copyright © 2020-2023  润新知