HTTP 结构概述

server/2024/9/23 14:35:35/
http://www.w3.org/2000/svg" style="display: none;">

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 的上层


http://www.ppmy.cn/server/40461.html

相关文章

Vue从入门到精通-13-Vue-router路由

什么是路由 后端路由 对于普通的网站,所有的超链接都是URL地址,所有的URL地址都对应服务器上对应的资源。 当前端输入url请求资源时,服务器会监听到是什么url地址,那后端会返回什么样的资源呢?后端这个处理的过程就…

机器学习理解梯度

一、在机器学习领域,模型的参数是指在训练过程中需要学习的变量,例如神经网络中的权重和偏置。这些参数的调整是通过优化算法来实现的,而梯度是这个优化过程中的关键概念之一。 二、模型参数之间的差异通常不直接称为梯度,而是用…

git 常用命令及注释

一、 常用的git命令 git clone 克隆代码 git log 查看日志 git tag 查看标签 git branch 查看分支 git branch -a 查看远程分支 git pull 拉取 2 初始化配置 git config --global user.name 查看用户名git config --global user.name "serena" …

【机器学习数据可视化-04】Pyecharts数据可视化宝典

一、引言 在大数据和信息爆炸的时代,数据可视化成为了信息传递和展示的关键手段。通过直观的图表和图形,我们能够更好地理解数据,挖掘其背后的信息。Pyecharts,作为一款基于Python的数据可视化库,凭借其丰富的图表类型…

java可变参数

前言 我们虽然能够用重载实现,但多个参数无法弹性匹配 代码 class mycalculator{//下面的四个calculate方法构成了重载//计算2个数的和,3个数的和,4,5,6个数的和// public void calculate(int n1){// System.out.…

day07-缓存套餐

业务逻辑 1. 导入Spring Cache和Redis相关坐标 2. 开启缓存注解功能 3. 用户端添加注解 4. 管理端添加注解 1. 导入Spring Cache和Redis相关坐标 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache<…

商务分析方法与工具(五):Python的趣味快捷-文件和文件夹操作自动化

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

Android 巧用putBinder方法传递大文件

使用Intent传递数据大家都知道&#xff0c;但是如果你使用Intent传递大于1Mb的数据时&#xff0c;就一定会报如下的错误&#xff1a; Caused by: android.os.TransactionTooLargeException: data parcel size 1049112 bytes 就是说你的传输数据太大了&#xff0c;当前的大小达…