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 的上层
HTTP 结构概述的更多相关文章
- NET5实践:项目创建-结构概述-程序运行-发布部署
ASP.NET5实践01:项目创建-结构概述-程序运行-发布部署 1.项目创建 ASP.NET5项目模板有三种: 新建项目: 选择模板: 2.结构概述 References对应配置是project ...
- openssl之EVP系列之7---信息摘要算法结构概述
openssl之EVP系列之7---信息摘要算法结构概述 ---依据openssl doc/crypto/EVP_DigestInit.pod翻译和自己的理解写成 (作者:Dragon ...
- 4th 循环结构概述和for语句的格式及其使用
04.01_Java语言基础(循环结构概述和for语句的格式及其使用) A:循环结构的分类 for,while,do...while B:循环结构for语句的格式: for(初始化表达式;条件表达式; ...
- 04 循环结构概述和for语句的格式及其使用
04.01_Java语言基础(循环结构概述和for语句的格式及其使用) A:循环结构的分类 for,while,do…while B:循环结构for语句的格式: for(初始化表达式;条件表达式;循环 ...
- 039 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 01 循环结构概述
039 01 Android 零基础入门 01 Java基础语法 05 Java流程控制之循环结构 01 循环结构概述 本文知识点:循环结构概述 循环结构主要内容 while 循环 do-whiile ...
- 【算法】01-数据结构概述(注意区分jvm堆与堆/jvm栈与栈)
[算法]01-数据结构概述(注意区分jvm堆与堆/jvm栈与栈) 欢迎关注b站账号/公众号[六边形战士夏宁],一个要把各项指标拉满的男人.该文章已在github目录收录. 屏幕前的大帅比和大漂亮如果有 ...
- MP4文件格式具体解释——结构概述
MP4文件格式具体解释(ISO-14496-12/14) Author:Pirate Leo Email:codeevoship@gmail.com 一.基本概念 1. 文件,由很多Box和FullB ...
- Tcl与Design Compiler (二)——DC综合与Tcl语法结构概述
1.逻辑综合的概述 synthesis = translation + logic optimization + gate mapping . DC工作流程主要分为这三步 Translation : ...
- Docker - Docker Engine 结构结构概述
概述 Docker Engine 结构的简单描述 ref docker 实战 第一本 docker 书 1. docker 版本 1. 版本 Docker Engine - Community 概述 ...
- DC综合与Tcl语法结构概述
转载:https://www.cnblogs.com/IClearner/p/6617207.html 1.逻辑综合的概述 synthesis = translation + logic optimi ...
随机推荐
- #min-max容斥,FWT#洛谷 3175 [HAOI2015]按位或
题目 分析 按位去看,最终的答案要求 \(E(\max S)\) 就是 \(S\) 出现的期望时间. 根据min-max容斥,\(E(\max S)=\sum_{T\subset S}(-1)^{|T ...
- #dfs,trie#洛谷 4341 [BJWC2010]外星联络
题目 分析 首先时间复杂度\(O(n^2)\)可过,统计子串个数可以用trie或者更高级的方法 可以枚举所有的后缀,然后建一个trie,这样这个trie就可以记录全部的子串 关于字典序排序,深搜的时候 ...
- ES6中模块化详解
前言 因为ES6中的模块化是将来,所以就必须有必要好好的了解一下,学习一下,这篇文章就简单总结一下ES6中模块的概念,语法和用法.纯属个人总结,不喜勿喷. 下面我将通过a.js.b.js和c.js三个 ...
- FindBugs问题EQ_COMPARETO_USE_OBJECT_EQUALS的解决方法
本文记录的是2016年4月初发生的事情. 前几天,标准CI的静态检查页面发现一个项目组同事引入的FindBugs问题,EQ_COMPARETO_USE_OBJECT_EQUALS,CI对这个问题给出的 ...
- Java 异常处理与正则表达式详解,实例演练及最佳实践
Java 异常 - Try...Catch 在 Java 代码执行期间,可能会发生各种错误,包括程序员编码错误.用户输入错误以及其他不可预料的状况. 当错误发生时,Java 通常会停止并生成错误消息, ...
- Python - 字典2
Python - 访问字典项 您可以通过在方括号内引用其键名来访问字典的项: 示例,获取 "model" 键的值: thisdict = { "brand": ...
- C语言 03 原码 反码 补码
原码 计算机中所有的数字都是使用 0 和 1 这样的二进制数来进行表示的. 这时如果要存储一个数据,比如十进制的 3,那么就需要使用 2 个二进制位来保存,二进制格式为 11,占用两个位置,称为 2 ...
- recover database until cancel
数据库演示版本为 12.1.0.2 该系列涉及恢复过程中使用的 5 个语句: 1. recover database 2. recover database until cancel 3. recov ...
- HarmonyOS非线性容器特性及使用场景
非线性容器实现能快速查找的数据结构,其底层通过hash或者红黑树实现,包括HashMap.HashSet.TreeMap.TreeSet.LightWeightMap.LightWeightSet ...
- MVC 测试action的运行速度
前言 网络很多文章有关于action的测试机制,本文主要是整理一下思路. 正文 假如有一个acion: public ActionResult Index() { return View(); } 当 ...