你真的了解http吗(一)?

文章目录

  • 引言:
  • 一、http的发展历程
  • 二、什么是http
    • 1.协议
    • 2. 传输
    • 3.超文本
  • 三、和http相关的各种概念
    • 1. 浏览器
    • 2. WEB服务器
    • 3. CDN
      • CDN简介
      • CDN的作用
      • CDN的优势
      • CDN在浏览器和服务器之间通信的作用
    • 4. 爬虫
    • 5. TCP/IP
    • 6. DNS
    • 7. URI/URL
    • 8. HTTPS
      • HTTP通信(比喻为两个人用不正常语言对话)
      • HTTPS通信(比喻为两个人用火星文对话)
  • 结束语:

引言:

当我们轻点鼠标,在网页间畅游,或者在移动设备上轻轻滑动屏幕,浏览着各种信息时,背后默默支撑这一切的,正是HTTP——这个无处不在的超文本传输协议。HTTP作为互联网通信的基石,经历了从诞生到发展的历程,不仅推动了网络技术的飞速进步,也深刻地影响了我们与世界的连接方式。

在本文中,我们将一起回顾HTTP的发展历程,从最初的简单协议到如今的成熟标准,感受其不断演进的魅力。同时,我们将深入探讨HTTP的基本概念,包括其作为协议的本质、传输数据的机制以及超文本的特性。这些概念将为我们理解HTTP的工作原理和其在互联网中的作用奠定坚实的基础。

除了HTTP本身,还有许多与之相关的技术组件和概念值得我们关注。浏览器作为我们访问网络的窗口,WEB服务器作为存储和提供网页资源的中心,CDN(内容分发网络)作为提升网络访问速度的关键技术,它们都在HTTP通信中扮演着重要的角色。此外,爬虫技术用于自动抓取网络数据,TCP/IP协议为网络通信提供基础,DNS系统负责域名解析,URI/URL定义了网络资源的地址,而HTTPS则是HTTP的安全版本,为我们提供了更加安全的通信方式。

通过本文的介绍,我们将全面了解HTTP及其相关技术组件的概念、作用和应用场景。让我们一同揭开HTTP的神秘面纱,探索这个支撑着我们数字生活的强大协议背后的奥秘。

一、http的发展历程

版本发布年份关键特性主要改进
HTTP/0.91991- 只支持GET请求
- 无请求头或响应头,仅能请求简单的HTML文档
- Web的基础协议
- 仅支持纯文本内容传输
HTTP/1.01996- 引入方法(GET、POST、HEAD)
- 支持状态码、HTTP头
- 支持多种内容类型
- 支持多种Web资源的传输
- 引入了HTTP头,允许传输元数据
- 增加了对字符集、多媒体文件的支持
HTTP/1.11997- 持久连接(默认复用TCP连接)
- 分块传输编码
- 缓存控制
- 内容协商
- 更丰富的方法和状态码支持
- 显著提升性能,减少了TCP连接的开销
- 引入了更细致的缓存控制机制,提高了Web资源的重用率
- 支持虚拟主机
HTTP/22015- 二进制帧
- 多路复用
- 头部压缩
- 服务器推送
- 更强的安全性要求(通常与TLS一起使用)
- 性能大幅提升,减少了延迟
- 改进了头部压缩,减少了开销
- 服务器推送优化了资源的加载
- 强化了安全性,推广了HTTPS的使用
HTTP/3开发中- 基于QUIC协议(使用UDP)
- 更快的连接建立
- 改进的拥塞控制
- 更好的多路复用
- 队头阻塞问题的解决方案
- 解决了TCP协议的一些固有问题,如队头阻塞
- 进一步减少了连接建立时间
- 提供了更为可靠的传输,即使在网络条件变化时

二、什么是http

HTTP(超文本传输协议)是一种用于分布式、协作式、超媒体信息系统的应用层协议。它是Web技术的基础,允许用户获取如文本、图像、音频和视频等资源。HTTP遵循客户端-服务器模型,客户端打开一个连接以发出请求,然后等待直到收到服务器的响应。

主要特点包括:

  • 无状态性:每次请求之间是独立的,服务器不会保存之前的交互信息。这意味着每个请求都必须包含所有必要的信息,服务器才能理解和响应。
  • 可扩展性:HTTP允许传输任何类型的数据,只要双方都知道如何处理这些数据。
  • 请求/响应模型:客户端发送一个请求到服务器,请求包含方法(如GET、POST等)、URI、协议版本、请求头和可能的消息体。服务器以状态码(如200 OK、404 Not Found)、响应头和自己的消息体响应。

这上面太官方了,可能说了也就是一个概念。下面我们拆解一下
超文本传输协议,可以拆解为超文本,传输,协议

1.协议

协议”并不仅限于计算机世界,现实生活中也随处可见,例如刚毕业时会签“三方协议”,入职公司会签“保密协议”,这些协议本质上其实和http是相同的,那么“协议”有什么特点?

第一、协议必须要有两个或者多个参与者,也就是“协”
第二、协议是对参与者的一种行为约定和规范,也就是“议”

这也是http的第一层含义“协议

http是一个用在计算机世界里的协议。它使用计算机能够理解的语言确立了一种计算机之间交流通信的规范,以及相关的各种控制和错误处理方式

2. 传输

传输”其实很好理解,就是把一堆东西从A点搬到B点,或者从B点搬到A点,即“A<====>B
为什么说是"A<====>B",其实Http是一个“双向协议”,HTTP遵循客户端-服务器模型我们就用上网来举例子,浏览器就是客户端A 请求方,网站就是B 应答方,双方约定用http协议来通信,于是浏览器把一些数据发送给网站,网站再把这些数据返回给浏览器,最后展现在屏幕上,你就可以看到新闻,视频了。

这就是http的第二层含义“传输

http是一个在计算机世界里专门用来在两点之间传输数据的约定和规范

3.超文本

在计算机的世界里所谓的"文本“,就表示http传输的不是TCP/UDP这些底层协议里被切分的杂乱无章的二进制包,而是完整的有意义的数据,可以被浏览器、服务器这样的上层应用程序处理。
那么“超文本”,就是“超越了普通文本的文本”,它是文字、图片、音频和视频等的混合体,最关键是有“超链接”,能从一个超文本跳跃到另一个超文本,形成复杂的非线性、网状的结构关系

那么到此我们用人话说说什么是http协议

http是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等的超文本数据的约定和规范

三、和http相关的各种概念

http不是一个孤立的协议,在互联网的世界,http通常跑在TCP/IP协议之上,依靠IP协议实现寻址和路由,TCP协议实现可靠数据传输、DNS协议实现域名查找、SSL/TLS协议实现安全通信。此外,还有一些协议依赖于HTTP,例如WebSocket,HTTPDNS等。这些协议相互交织,构成了一个协议网,而HTTP则处于中心地位
下面我们一起来看看和http相关的各种概念

第一部分、http和浏览器、web服务器、爬虫、代理、CDN之间的联系

右侧模块
左侧模块

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/29483.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringMVC系列八: 手动实现SpringMVC底层机制-下

手动实现SpringMVC底层机制-下 实现任务阶段五&#x1f34d;完成Spring容器对象的自动装配-Autowired 实现任务阶段六&#x1f34d;完成控制器方法获取参数-RequestParam1.&#x1f966;将 方法的 HttpServletRequest 和 HttpServletResponse 参数封装到数组, 进行反射调用2.&a…

计算机跨考现状,两极分化现象很严重

其实我觉得跨考计算机对于一些本科学过高数的同学来说有天然的优势 只要高数能学会&#xff0c;那计算机那几本专业课&#xff0c;也能很轻松的拿下&#xff0c;而对于本科是文科类的专业&#xff0c;如果想跨考计算机&#xff0c;难度就不是一般的大了。 现在跨考计算机呈现…

2024北京智源大会开幕,智源推出大模型全家桶及全栈开源技术基座新版图,大模型先锋集结共探AGI之路

2024年6月14日&#xff0c;第六届“北京智源大会”在中关村展示中心开幕。 北京智源大会是智源研究院主办的“AI内行顶级盛会”&#xff0c;以“全球视野、思想碰撞、前沿引领”为特色&#xff0c;汇聚海内外研究者分享研究成果、探寻前沿知识、交流实践经验。2024北京智源大会…

Qt第一次作业

#include "mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { //设置窗口的标题 this->setWindowTitle("无畏契约"); //设置窗口的图标 this->setWindowIcon(QIcon("C:\\Users\\29699\\Desktop\\素材合集\\R-C.…

【学习Docker】

学习Docker可以分为几个步骤和阶段&#xff0c;以下是一个建议的学习路径&#xff0c;适合初学者到进阶用户&#xff1a; ### 1. 理解基本概念 - **容器化与虚拟化**&#xff1a;了解容器化与传统虚拟化之间的区别&#xff0c;容器的轻量级和效率。 - **Docker组件**&#xff…

springboot优雅shutdown时如何保障异步线程的安全

我前面写了一篇springboot优雅shutdown的文章&#xff0c;看起来一切很美好。 https://blog.csdn.net/chenshm/article/details/139640775 那是因为没有进行多线程测试。如果一个请求中包括阻塞线程&#xff08;主线程&#xff09;和非阻塞线程&#xff08;异步线程&#xff09…

Linux安装MySQL以及远程连接

1、Linux安装MySQL 1.1、准备解压包 MySQL5.x解压包 提取码&#xff1a;9y7n 1.2、通过rpm脚本安装 切记安装顺序&#xff1a;common --> libs --> client --> server 因为它们之间存在依赖关系&#xff0c;所以务必按照顺序安装 安装前请确保当前目录/文…

【差分数组】2772. 使数组中的所有元素都等于零

本文涉及知识点 差分数组 LeetCode2772. 使数组中的所有元素都等于零 给你一个下标从 0 开始的整数数组 nums 和一个正整数 k 。 你可以对数组执行下述操作 任意次 &#xff1a; 从数组中选出长度为 k 的 任一 子数组&#xff0c;并将子数组中每个元素都 减去 1 。 如果你可…

Memcached的特点、使用方法介绍

Memcached是一款高性能、分布式的内存对象缓存系统&#xff0c;旨在通过缓存数据和对象来减少访问数据库的次数&#xff0c;从而加速动态数据库驱动的网站。以下是对Memcached的详细介绍和解析&#xff1a; 一、Memcached的起源和背景 起源&#xff1a;Memcached最初由Danga …

【Windchill高级查询感悟笔记】

首先从这个例子来开始我们的“高级查询”之旅 {QuerySpec queryspec new QuerySpec();queryspec.appendClassList(WTPart.class, true);queryspec.appendClassList(WTDocument.class, true);PersistenceManagerSvr pms (PersistenceManagerSvr) InvocationHandlerFwd.getInt…

【Android】安Android Studio环境搭建注意点

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

PowerBi 获取指定时间间隔的日期的方法

获取指定时间间隔的日期&#xff0c;比如我们想得到2024年5月31日后的第三天。 网络上的教程一般是使用DATEADD()函数。 但是这个函数返回的是表。假如我们的需求是不做汇总等计算&#xff0c;只是把它作为一个计算列&#xff0c;或者度量值&#xff0c;那么我更推荐用DATE(&…

信息系统项目管理师 | 新一代信息技术

关注WX&#xff1a;CodingTechWork 物联网 定义 The Internet of Things是指通过信息传感设备&#xff0c;按约定的协议&#xff0c;将任何物品与互联网连接&#xff0c;进行信息交互和通信&#xff0c;以实现智能化识别。定位、跟踪、监控和管理的一种网络。物联网主要解决…

Part 4.4 树形动态规划

树形动态规划&#xff0c;即在树上进行的动态规划。 因为树的递归性质&#xff0c;树形动态规划一般都是递归求解的。 没有上司的舞会 题目描述 某大学有 n n n 个职员&#xff0c;编号为 1 … n 1\ldots n 1…n。 他们之间有从属关系&#xff0c;也就是说他们的关系就像…

基于Python的自然语言处理开源项目——ChatTTS推荐

基于你的要求&#xff0c;我推荐一个开源大模型项目——ChatTTS。 一、项目介绍 ChatTTS是一个基于Python的自然语言处理开源项目&#xff0c;它主要用于构建智能聊天机器人。该项目使用TensorFlow和NLTK等工具进行自然语言处理和机器学习&#xff0c;以实现高质量的对话系统。…

禅道系统忘记密码-直接更改数据库数据解决

禅道系统很久不用密码忘记了&#xff0c;这里采用直接进数据库修改密码方式解决。 登录到系统&#xff0c;进入禅道安装目录&#xff0c;这里安装在/opt/zbox 基本思路如下&#xff1a; 1.找到数据库账号和密码。 2.使用mysql命令登陆数据库。 3.在禅道数据库对应用户表内更…

鸿蒙原生应用元服务开发-位置服务申请权限

申请位置权限开发指导 场景概述 应用在使用位置服务系统能力前&#xff0c;需要检查是否已经获取用户授权访问设备位置信息。如未获得授权&#xff0c;可以向用户申请需要的位置权限。 系统提供的定位权限有&#xff1a; ohos.permission.LOCATION&#xff1a;用于获取精准位置…

金额转换但是接收对象类型未知时,金额转换公共方法囊括当对象为String\Integer\Number三种类型的转换方法

/** * deccription 金额转换方法 * param Object * value * return * return BigDecimal */ public BigDecimal getBigDecimal(Object value) { BigDecimal reValue new BigDecimal(0); if (value ! null) { …

keepalived服务详解与实验 基于centos8

目录 keepalivedHA简介常用的高可用软件keepalived简介 keepalived常用模块keepalived功能简介keepalived常用文件keepalived配置文件详解keepalived实验1-上手环境准备安装服务主配置文件修改启动服务效果查看 keepalived脑裂1. 脑裂现象简介2. 脑裂的原因3. 脑裂的预防和解决…

电商API接口是什么意思?有什么作用?

电商API接口是电子商务领域中一种技术解决方案&#xff0c;它允许不同的软件系统之间进行交互和数据交换。 在电商场景下&#xff0c;电商API接口可以实现的功能非常丰富&#xff0c;例如&#xff1a; 商品管理&#xff1a;获取商品列表、商品详情、搜索商品、上下架商品等&a…