• HTTP 结构概述


    Web 客户端和服务器

    Web 内容都是存储在 Web 服务器上的,Web 服务器所使用的是 HTTP 协议,因此经常被称为 HTTP 服务器,HTTP 服务器存储了因特网的数据。客户端向服务器发送 HTTP 请求,服务器会在 HTTP 响应中返回请求的数据。最常见的 HTTP 客户端就是浏览器


    资源

    最简单的 Web 资源就是 Web 服务器文件系统中的静态文件,包括:文本文件、HTML 文件、图片文件、视频文件等等。资源不一定非得是静态文件,还可以是根据需要生成内容的软件程序。这些动态内容资源可以根据你的身份、所请求的信息或每天的不同时段来产生内容


    媒体类型

    因特网上有数千种不同的数据类型,HTTP 会给每种要通过 Web 传输的对象都打上了名为 MIME 类的数据格式标签。当 Web 浏览器从服务器中取回一个对象时,会查看相关的 MIME 类型,看看它是否知道应该如何处理这个对象。大多数浏览器都可以处理数百种常见的对象类型:显示图片文件、解析并格式化 HTML 文件、通过计算机声卡播放音频文件、或者运行外部插件软件来处理特殊格式的数据

    MIME 类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔:

    • HTML 格式的文本文档由 text/html 类型来标记
    • 普通的 ASCII 文本文档由 text/plain 类型来标记
    • .JPEG 格式的图片为 image/jpeg 类型
    • .GIF 格式的图片为 image/gif 类型

    URI

    每个 Web 服务器资源都有一个名字,这样客户端就可以说明它们感兴趣的资源是什么了。服务器资源名被称为统一资源标识符(URI),就像邮政地址一样,唯一标识并定位资源信息

    常见的图片资源 URI 如:http://www.joes-hardware.com/specials/saw-blade.gif


    URL

    统一资源定位符(URL)是资源标识符最常见的形式,描述了一台特定服务器上某资源的特定位置

    大部分 URL 都遵循一种标准格式,这种格式包含三个部分:

    • 第一部分被称为方案(scheme),说明访问资源所使用的协议类型,通常是 HTTP 协议(http://)
    • 第二部分给出服务器的因特网地址,比如:www.joes-hardware.com
    • 其余部分指定 Web 服务器上的某个资源,比如:/specials/saw-blade.gif

    现在,几乎所有的 URI 都是URL


    URN

    URI 的第二种形式就是统一资源名(URN),URN 作为特定内容的唯一名称使用,与目前的资源所在地无关,因此可以将资源四处搬移


    方法

    HTTP 支持几种不同的请求命令,这些命令被称为 HTTP 方法,每条 HTTP 请求报文都包含一个方法,这个方法会告诉服务器要执行什么动作(获取一个 Web 页面、运行一个程序、删除一个文件等)

    • GET:用于请求服务器发送某个资源
    • PUT:用于向服务器上传资源
    • DELETE:用于请求服务器删除指定的资源
    • POST:用于向服务器提交数据,通常用于提交表单或上传文件
    • HEAD:类似于 GET 请求,但服务器不返回请求的资源主体,只返回响应头

    状态码

    每条 HTTP 响应报文返回时都会携带一个状态码,状态码是一个三位数字的代码,告知客户端请求是否成功,或者是否需要采取其他动作


    报文

    HTTP 报文是由一行行的简单字符串组成,HTTP 报文都是纯文本,所以人们可以很方便地对其进行读写。从 Web 客户端发往 Web 服务端的 HTTP 报文称为请求报文,从服务端发往客户端的报文称为响应报文

    HTTP 报文包括以下三个部分:

    • 起始行:报文的第一行就是起始行,在请求报文中说明要做些什么,在响应报文中说明出现了什么情况
    • 首部字段:起始行后面有零个或多个首部字段,每个首部字段是一个键值对,首部以一个空行结束
    • 主体:空行之后就是可选的报文主体了,其中包含了所有类型的数据。请求主体中包括了要发送给 Web 服务器的数据,响应主体中装载了要返回给客户端的数据。起始行和首部都是文本形式且都是结构化的,而主体则不同,主体中可以包含任意的二进制数据(比如图片、视频、音轨、软件程序)。当然,主体也可以包含文本

    连接

    HTTP 是个应用层协议,HTTP 无需操心网络通信的具体细节,它把网络通信的细节都交给了通用可靠的因特网传输协议 TCP/IP

    因特网自身就是基于 TCP/IP 的,TCP/IP 是全世界的计算机和网络设备常用的层次化分组交换网络协议集。TCP/IP 隐藏了各种网络和硬件的特点,使各种类型的计算机和网络都能够进行可靠的通信

    只要建立了 TCP 连接,客户端和服务器之间的报文交换就不会丢失,不会被破坏,也不会在接收时出现错序了

    用网络术语来说,HTTP 协议位于 TCP 的上层,HTTP 使用 TCP 来传输其报文数据。与之类似,TCP 则位于 IP 的上层


    __EOF__

  • 本文作者: 低吟不作语
  • 本文链接: https://www.cnblogs.com/yee-q/p/18181682
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    PAT 1017 A除以B
    一种用于联合实体和关系提取的划分过滤网络
    线性调频脉冲雷达信号
    Redis
    什么是位域和位段?如何定义和使用位域?
    振南技术干货集:振南当年入门C语言和单片机的那些事儿(5)
    [云原生] [kubernetes] 基于K8S安装kubesphere
    通宵三天 我做了一个超级好玩的中秋节小游戏
    快速排序的非递归形式和一个小应用
    微调语言大模型选LoRA还是全参数?基于LLaMA 2深度分析
  • 原文地址:https://www.cnblogs.com/Yee-Q/p/18181682