当前位置: 首页 > news >正文

HTTP 一、基础知识

一、基本介绍     

        1、概述  
  • HTTP(Hyper Text Transfer Protocol): 全称超文本传输协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
  • HTTP 是一种应用层协议,是基于 TCP/IP 通信协议来传递数据的,其中 HTTP1.0、HTTP1.1、HTTP2.0 均为 TCP 实现,HTTP3.0 基于 UDP 实现。现主流使用 HTTP1.0 和 HTTP3.0
  • 协议: 为了使数据在网络上从源头到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议,它最终体现为在网络上传输的数据包的格式。

通俗点讲,协议就是要保证网络通信的双方,能够互相对接上号。就像是两个人传递纸条通过互相指定的暗号,如果发送天亮了,表示可以打游戏了等等

        2、历史

     (1)HTTP诞生:
​         1989 年,任职于欧洲核子研究中心(CERN)的蒂姆·伯纳斯 - 李(Tim Berners-Lee)发表了一篇论文,提出了在互联网上构建超链接文档系统的构想。这篇论文中他确立了三项关键技术。

  • URI:即统一资源标识符,作为互联网上资源的唯一身份;
  • HTML:即超文本标记语言,描述超文本文档;
  • HTTP:即超文本传输协议,用来传输超文本。

 

       (2)HTTP/0.9
        ​ 最早版本是1991年发布的0.9版。该版本极其简单,只有一个命令GET。        
         TCP 连接(connection)建立后,客户端向服务器请求(request)网页,协议规定,服务器只能回应HTML格式的字符串,不能回应别的格式。服务器发送完毕,就关闭TCP连接。

        

      (3)HTTP/1.0
        ​ 1996年5月,HTTP/1.0 版本发布,内容大大增加。但 HTTP/1.0 并不是一个“标准”,只是记录已有实践和模式的一份参考文档,不具有实际的约束力,相当于一个“备忘录”。
        增加了 HEAD、POST 等新方法;
        增加了响应状态码,标记可能的错误原因;
        引入了协议版本号概念;
        引入了 HTTP Header(头部)的概念,让 HTTP 处理请求和响应更加灵活;
        传输的数据不再仅限于文本。

        

      (4)HTTP/1.1
​         1997年1月,HTTP/1.1 版本发布,只比 1.0 版本晚了半年。它进一步完善了 HTTP 协议,一直用到了20年后的今天,直到现在还是最流行的版本。HTTP/1.1 是对 HTTP/1.0 的小幅度修正,但它是一个“正式的标准”,而不是一份可有可无的“参考文档”。
        增加了 PUT、DELETE 等新的方法;
        增加了缓存管理和控制;
        明确了连接管理,允许持久连接;
        允许响应数据分块(chunked),利于传输大文件;
        强制要求 Host 头,让互联网主机托管成为可能。

 

     (5)SPDY 协议
        ​2009年,谷歌公开了自行研发的 SPDY 协议,主要解决 HTTP/1.1 效率不高的问题。
        这个协议在Chrome浏览器上证明可行以后,就被当作 HTTP/2 的基础,主要特性都在 HTTP/2 之中得到继承。

        

     (6)HTTP/2
​         2015年,HTTP/2 发布。它不叫 HTTP/2.0,是因为标准委员会不打算再发布子版本了,下一个新版本将是 HTTP/3。HTTP/2 的制定充分考虑了现今互联网的现状:宽带、移动、不安全,在高度兼容HTTP/1.1 的同时在性能改善方面做了很大努力,主要的特点有:
        二进制协议,不再是纯文本;
        可发起多个请求,废弃了 1.1 里的管道;
        使用专用算法压缩头部,减少数据传输量;
        允许服务器主动向客户端推送数据;
        增强了安全性,“事实上”要求加密通信。
​         虽然 HTTP/2 已经发布好几年,也衍生出了 gRPC 等新协议,但由于 HTTP/1.1 实在是太过经典和强势,目前它的普及率还比较低,大多数网站使用的仍然还是 20 年前的HTTP/1.1。

        

        (7)HTTP/3
​         2022年6月6日,IETF (互联网工程任务小组) 正式发布了 HTTP/3 的 RFC。
        ​ 在 HTTP/2 还处于草案之时,Google 又发明了一个新的协议,叫做 QUIC,而且还是相同的“套路”,继续在 Chrome 和自家服务器里试验着“玩”,依托它的庞大用户量和数据量,持续地推动 QUIC 协议成为互联网上的“既成事实”。
        也就是 2018 年,互联网标准化组织 IETF 提议将“HTTP over QUIC”更名 为“HTTP/3”并获得批准,HTTP/3 正式进入了标准化制订阶段。

        

        (8)总结
        HTTP 协议始于三十年前蒂姆·伯纳斯 - 李的一篇论文;
        HTTP/0.9 是个简单的文本协议,只能获取文本资源;
        HTTP/1.0 确立了大部分现在使用的技术,但它不是正式标准;
        HTTP/1.1 是目前互联网上使用最广泛的协议,功能也非常完善;
        HTTP/2 基于 Google 的 SPDY 协议,注重性能改善,但还未普及;
        HTTP/3 基于 Google 的 QUIC 协议,是将来的发展方向。

        3、关联概念

     (1)网络世界
​         互联网的正式名称是 Internet,里面存储着无穷无尽的信息资源,我们通常所说的“上 网”实际上访问的只是互联网的一个子集“万维网”(World Wide Web),它基于 HTTP 协议,传输 HTML 等超文本资源,能力也就被限制在 HTTP 协议之内。现在的互联网 90% 以上的部分都被万维网,也就是 HTTP 所覆盖。

        

        (2)浏览器
        ​ 浏览器的正式名字叫“Web Browser”,顾名思义,就是检索、查看互联网上网页资源的 应用程序,名字里的 Web,实际上指的就是“World Wide Web”,也就是万维网。
        浏览器本质上是一个 HTTP 协议中的请求方,使用 HTTP 协议获取网络上的各种资源。

        

        (3)Web 服务器
         Web 服务器是一个很大也很重要的概念,它是 HTTP 协议里响应请求的主体,通常有软件和硬件两层含义,硬件就是提供web服务的硬件机器,软件就是提供 Web 服务的应用程序,常用的有Apache和Nginx。

        

        (4)CDN
​         CDN,全称是“Content Delivery Network”,翻译过来就是“内容分发网络”。它应用 了 HTTP 协议里的缓存和代理技术,代替源站响应客户端的请求。它可以缓存源站的数据,大幅度缩短响应时间。
         除了基本的网络加速外,还提供负载均衡、 安全防护、边缘计算、跨运营商网络等功能,能够成倍地“放大”源站服务器的服务能力。

        

        (5)爬虫
​         爬虫实际上是一种可以自动访问Web资源的应用程序。绝大多数是由各大搜索引擎“放”出来的,抓取网页存入庞大的数据库,再建立关键字索 引,这样我们才能够在搜索引擎中快速地搜索到互联网角落里的页面。

         爬虫也有不好的一面,它会过度消耗网络资源,占用服务器和带宽,影响网站对真实数据的 分析,甚至导致敏感信息泄漏。所以,又出现了“反爬虫”技术,通过各种手段来限制爬 虫。其中一项就是“君子协定”robots.txt,约定哪些该爬,哪些不该爬。

        

        (6)DNS
        ​ 在 TCP/IP 协议中使用 IP 地址来标识计算机,数字形式的地址对于计算机来说是方便了, 但对于人类来说却既难以记忆又难以输入。 于是“域名系统”(Domain Name System)出现了,用有意义的名字来作为 IP 地址的 等价替代。
        ​ 域名用“.”分隔成多个单词,级别从左到右逐级升高,最右边的被称为“顶级域名”。
        但想要使用 TCP/IP 协议来通信仍然要使用 IP 地址,所以需要把域名做一个转换,“映 射”到它的真实 IP,这就是所谓的“域名解析”。
          

        

       (7)URI/URL
​         URI(Uniform Resource Identifier),中文名称是统一资源标识符,使用它就能够唯一地标记互联网上资源。
        URI 另一个更常用的表现形式是 URL(Uniform Resource Locator), 统一资源定位符,也就是我们俗称的“网址”,它实际上是 URI 的一个子集,不过因为这两者几乎是相同的,差异不大,所以通常不会做严格的区分。

​         URN:Uniform Resource Name,统一资源名称,也是URI的一个子集。

​         URI 主要有三个基本的部分构成:协议名,即访问该资源应当使用的协议;主机名,即互联网上主机的标记,可以是域名或 IP 地址;路径,即资源在主机上的位置,使用“/”分隔多级目录。

        

        (8)HTTPS
        ​ HTTPS全称是“HTTP over SSL/TLS”,也就是 运行在 SSL/TLS 协议上的 HTTP,它是一个负责加密通信的安全协议,建 立在 TCP/IP 之上,所以也是个可靠的传输协议,可以被用作 HTTP 的下层。
        ​ SSL 的全称是“Secure Socket Layer”,由网景公司发明,当发展到 3.0 时被标准化,改 名为 TLS,即“Transport Layer Security”,但由于历史的原因还是有很多人称之为 SSL/TLS,或者直接简称为 SSL。
        SSL 使用了许多密码学最先进的研究成果,综合了对称加密、非对称加密、摘要算法、数字 签名、数字证书等技术,能够在不安全的环境中为通信的双方创建出一个秘密的、安全的传输通道。

        (9)代理
​         代理(Proxy)是 HTTP 协议中请求方和应答方中间的一个环节,作为“中转站”,既可以 转发客户端的请求,也可以转发服务器的应答。

        ​ 代理有很多的种类,常见的有:
        匿名代理:完全“隐匿”了被代理的机器,外界看到的只是代理服务器;
        透明代理:顾名思义,它在传输过程中是“透明开放”的,外界既知道代理,也知道客 户端;
        正向代理:靠近客户端,代表客户端向服务器发送请求;
        反向代理:靠近服务器端,代表服务器响应客户端的请求;

        由于代理在传输过程中插入了一个“中间层”,所以可以在这个环节做很多有意思的事情, 比如:
        负载均衡:把访问请求均匀分散到多台机器,实现访问集群化;
        内容缓存:暂存上下行的数据,减轻后端的压力;
        安全防护:隐匿 IP, 使用 WAF 等工具抵御网络攻击,保护被代理的机器;
        数据处理:提供压缩、加密等额外的功能。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • linux-squid代理服务器
  • 智慧能源系统解决方案(Doc)
  • 版本控制系统Git/Gitlab/GitHub
  • 常用企业技术架构开发速查工具列表
  • 老板视角的可视化分析
  • 【JAVA基础】接口
  • ubuntu如何限制三指手势操作
  • HALCON与LabVIEW的联合编程 视觉与控制结合
  • LuaJit分析(九)LuaJit中的JIT原理分析
  • WebRTC协议下的视频汇聚融合技术:EasyCVR构建高效视频交互体验
  • Uniapp:WebSocket 重连之后累加触发 uni.onSocketOpen()
  • 2024/9/3黑马头条跟学笔记(一)
  • c/c++:CMakeLists.txt中添加编译/连接选项使用内存错误检测工具Address Sanitizer(ASan)
  • VM Workstation虚拟机AlmaLinux 9.4操作系统安装(桌面版安装详细教程)(宝塔面板的安装),填补CentOS终止支持维护的空白
  • 开源项目管理工具 Plane 安装和使用教程
  • 【面试系列】之二:关于js原型
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • HTML中设置input等文本框为不可操作
  • k8s 面向应用开发者的基础命令
  • Laravel Telescope:优雅的应用调试工具
  • Lucene解析 - 基本概念
  • miaov-React 最佳入门
  • PermissionScope Swift4 兼容问题
  • Python语法速览与机器学习开发环境搭建
  • SQLServer之索引简介
  • 安卓应用性能调试和优化经验分享
  • 多线程 start 和 run 方法到底有什么区别?
  • 基于HAProxy的高性能缓存服务器nuster
  • 跨域
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 三栏布局总结
  • 移动端 h5开发相关内容总结(三)
  • 译自由幺半群
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • # 利刃出鞘_Tomcat 核心原理解析(二)
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #QT(QCharts绘制曲线)
  • #考研#计算机文化知识1(局域网及网络互联)
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (1)常见O(n^2)排序算法解析
  • (10)STL算法之搜索(二) 二分查找
  • (42)STM32——LCD显示屏实验笔记
  • (层次遍历)104. 二叉树的最大深度
  • (第一天)包装对象、作用域、创建对象
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (原創) 未来三学期想要修的课 (日記)
  • (转)详解PHP处理密码的几种方式
  • .NET CORE 第一节 创建基本的 asp.net core
  • .NET 分布式技术比较
  • .Net 应用中使用dot trace进行性能诊断
  • .NET单元测试使用AutoFixture按需填充的方法总结
  • .NET构架之我见
  • .net和jar包windows服务部署
  • .NET基础篇——反射的奥妙