相信说起HTTP大家一定都不会感到陌生,这是因为HTTP的历史久远,HTTP作为老一辈的存在,并没有被新一代拍在海岸上,他随着时代的发展不断迭代更新,从HTTP/0.9,HTTP/1.0,HTTP/1.1,HTTP/2,HTTP/3...一直没有与时代脱轨,所以这是它能够跨越三四十年的历史长河,依旧屹立不倒的原因之一!接下来就让我们一起回顾学习一下HTTP这个“英雄”。
1. 什么是HTTP?
首先第一个问题就是HTTP是什么,相反,HTTP又不是什么? 从官方的角度来回答这个问题,HTTP是什么,我从百度百科上复制了答案贴在这里:
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。
从解释我们看出一个重点:HTTP是超文本传输协议。我们差分为三部分:传输、超文本和协议。
- 传输:HTTP是双向协议,包含了请求方和应答方,重点记住他一发一收的特性
- 超文本:是文字、图片、音频和视频等的混合体,最关键的是含有“超链接”,能够从一个“超文本”跳跃到另一个“超文本”,形成复杂的非线性、网状的结构关系
- 协议:可以类比实际生活中的协议的概念,例如房屋租赁协议、入职协议等等, 协议是双方约定的一种交流沟通的规范
所以——HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范
同时我们也需要区分HTTP不是什么?HTTP不是HTML;不是孤立的协议;不是编程语言等等。
2. HTTP相关的基本概念
前面介绍了HTTP是什么,不是什么。接下来我们进一步了解HTTP世界中可能涉及到的一些概念,这里只是简单举例,遇到没有提及的概念大家自行查阅资料即可。
2.1 Content Delivery Network (CDN)
CDN,全称是“Content Delivery Network”,翻译过来就是“内容分发网络”。它应用了 HTTP 协议里的缓存和代理技术,代替源站响应客户端的请求。介绍一个使用的场景,在秒杀项目中,大致分为3个阶段:秒杀前,秒杀过程中查询商品数量并减少商品数量和秒杀后订单的生成,其中在秒杀前,大量用户会频繁访问秒杀的界面,由于此时秒杀没有开始,逻辑上不应该让客户端请求频繁访问数据库,所以我们可以使用CDN缓存秒杀的静态界面,可供客户端请求的时候直接返回数据,从而减轻数据库的压力。
2.2 Domain Name System (DNS)
域名解析出现的原因是什么?设想一下如果我们冲浪的过程中都需要记住一串串IP地址,而不是 www.baidu.com 是多么痛苦的事情啊!所以域名解析就是将域名转换,映射到它真实的IP,整个域名解析过程还是比较复杂的,涉及到顶级域名,二级域名等等,大致过程可以参考我画的图复习一下。
2.3 HTML
HTML是 HTTP 协议传输的主要内容之一,它描述了超文本页面,用各种“标签”定义文字、图片等资源和排版布局,最终由浏览器“渲染”出可视化页面。
2.4 Proxy
代理是请求方和应答方的中间环节,可以形象的理解,我们客户是请求方,罗僧便利店是代理,中百仓储超市是应答方。客户本来每次购物都需要去超市购物,这样距离远非常不方便,所以罗森作为中转站可以存储部分超市的东西,这样客户可以就近购买商品。
代理的种类很多,常见的有:匿名代理、透明代理、正向代理、反向代理。代理这个中间商可以实现很多实用的功能,例如负载均衡、缓存、安全防护、数据处理等等。
3. 网络分层模型
网络的基础知识介绍少不了网络分层模型,我们在之前学习的时候一定听到过四层,七层等说法,那这些到底是什么含义呢?让我们一起复习一下。
下图是我们从极客时间——透视HTTP课程中引用的图方便大家理解。分层是非常好的设计方式,这样每一层都可以各司其职,集中关注当前层的问题。
首先是TCP/IP网络分层模型,一共分为四层:链接层、网际层、传输层、应用层。OSI网络模型分为七层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。其中有些层是可以一一对应起来,只是名称差异。从图中我们可以明白,HTTP为什么不是独立的协议,因为HTTP处于的应用层是建立在TCP传输层基础之上的,所以网络传输的过程中我们可以形象的类比生活中发快递的方式,我们会对快递加上包装,快递员会再增加一些包装加固,发送之前也会贴上收件地址收件人等信息,这就是发送的过程;接收过程也非常类似,收件人拿到快递以后查看收件人是不是自己,再拆开一层一层外包装最后拿到快递,如果你熟悉这个过程的话一定可以理解这个比喻!
参考资料: