狗头声明,本文适用于:新手学习进步,老鸟回顾消遣
该系列以《图解HTTP》为基本路线,该书有11章节,所以本系列也决定编写11篇水文技术博客进行适当的拓展和补充,希望可以帮助大家。
1、怎么理解HTTP
HTTP被翻译为:“超文本传输协议”,可以拆成三个部分,分别是:“超文本”“传输”和“协议”。
理解这三个概念后就知道HTTP是什么了。
(1)、什么是超文本
互联网早期,“文本”只是简单的字符文字。现在,图片、音频、视频、甚至是压缩包,在 HTTP 这都可以算做是“文本”。文本是线性结构。
“超文本”,就是“超越了普通文本的文本”,它是文字、图片、音频和视频等的混合体,最关键的是含有“超链接”,能够从一个“超文本”跳跃到另一个“超文本”,形成复杂的非线性、网状的结构关系。
(2)、什么是传输
传输,例如从A到B,所以就说明了:HTTP 协议是一个“双向协议”。
所以发起传输动作的 Web浏览器(A) 叫做请求方,把后接到传输的 Web服务器(B) 叫做响应方
注意:数据虽然是在 A 和 B 之间传输,但并没有限制只有 A 和 B 这两个角色,允许中间有“中转”或者“接力”。
“A<===>B”,变成了“A<=>X<=>Y<=>Z<=>B”,A 到 B 的传输过程中可以存在任意多个“中间人”,而这些中间人也都遵从 HTTP 协议,只要不打扰基本的数据传输,就可以添加任意的额外功能,例如安全认证、数据压缩、编码转换等等,优化整个传输过程。
(3)、什么是协议
这个就是字面意思,例如“三方协议”就是关于就业的一个协议,公司、学生、学校三方的行动需要遵守这个规则。
即传输双方都要遵守的规则。
总结:HTTP 是一个在计算机中的传输协议,用来传输文字、图片、音频、视频等超文本,并且制定了传输数据的约定和规范,以及相关的各种控制和错误处理方式。
2、Web与HTTP的关系
早期的web,是在互联网上构建 超链接文档系统 的构想,用于研究者们远距离共享知识。
基本的构建技术有三个:
- 1、作为页面的文本标记语言
HTML:超文本标记语言 - 2、作为文档传输协议的
HTTP:超文本传输协议 - 3、指定文档所在地址的
URL:统一资源定位符
所以,Web与HTTP的关系就了然:Web使用了一种叫HTTP的协议,根据输入的URL,Web浏览器从Web服务器获取文件资源等信息。即:Web是建立在HTTP协议上通信的。
基于这三项技术,超文本系统完美地运行在互联网上,让各地的人们能够自由地共享信息,这个系统称为“万维网”(World Wide Web),也就是我们现在所熟知的 Web。
3、了解一些和HTTP相关的一些概念
- Web浏览器:Google 的 Chrome、Mozilla 的 Firefox、Apple 的 Safari、Microsoft 的 IE(已停止) 和 Edge等
- Web服务器:Apache、Nginx
- CDN(先简单了解):“内容分发网络”,CDN利用了 HTTP 协议里的缓存和代理技术,代替源站响应客户端的请求。好处:可以缓存源站的数据,让浏览器的请求不用“千里迢迢”地到达源站服务器,直接在“半路”就可以获取响应。如果 CDN 的调度算法很优秀,更可以找到离用户最近的节点,大幅度缩短响应时间。
4、网络基础:TCP/IP
(1)、TCP/IP协议族
TCP/IP是互联网各类协议族的总称,所以自然包括HTTP协议。所以学习HTTP前需要先对TCP/IP介绍概要(并不展开,咱目标是先学HTTP,不要贪全~)。
互联网中的计算机、网络设备,不同的硬件、操作系统,它们之间需要互联通信,双方就需要基于相同的方法
所以TCP/IP中包括了各种各样的规则,从硬件电缆的规格规定,又或者是Web页面的显示等等,都是不同工种的不同协议,但都所属于TCP/IP协议族。
(2)、TCP/IP分层管理
TCP/IP协议族分为4层:应用层、传输层、网络层、数据链路层
最上层是“应用层”,最下层是“链路层”
每层都有不同的协议,我们要学习的HTTP协议就在其中的应用层
首先解释一下TCP/IP分层管理的原因以及好处:
- 1、前面已经说过,TCP/IP是互联网各类协议族的总称。如果不分层,互联网只由一个协议来统筹的话,当某个地方需要改变设计的话,那着整个协议就都要更新了。分层的话,只需要更新相应的层级即可。
- 2、分层后,设计也更专精了,就像我们并不需要清楚全部的4个层级,也能很好的开发。
下面对这四层做简单理解
- 应用层:该层有
HTTP协议、DNS(域名系统)。 -
-
DNS的作用就是方便人们记住网址。例如大家都知道www.baidu.com是百度,但是我们通过cmd的
ping www.baidu.com可以看到真实的ip是36.152.44.96。这就没人认识了。但是问题在于TCP/IP协议只认识真实ip,所以需要DNS进行转换。
-
- 传输层:该层有
TCP 协议(不可靠的UDP也在这层),即“传输控制协议”,提供可靠的、字节流形式的通信。“可靠”是指保证数据不丢失,“字节流”是指保证数据完整。 办法是三次握手来保证可靠。 - 网络层:该层有
IP协议,顾名思义,解决寻址和路由问题,以及规定了通过怎么样的路径去传递数据包。 -
-
拓展:IP 协议使用“IP 地址”的概念来定位互联网上的每一台计算机。有v4 版和v6 版。v4 版,地址是四个用“.”分隔的数字,例如“192.168.0.1”。v6 版,使用 8 组“:”分隔的数字作为地址,容量扩大了很多
-
- 链路层:处理网络连接的硬件,例如:网卡,光纤等物理可见的,均在链路层范围内。
通过上述对协议四层的简单了解,可以知道下层是为上层服务的。
例如 HTTP 只是一个"传输协议"
它不关心寻址、路由、数据完整性等传输细节,而要求这些工作都由下层来处理。(数据完整性、可靠交给传输层的TCP协议。寻址、路由交给网络层的IP协议)
OSI七层网络模型
可以看出就是对四层再细化分层
5、URI和URL
URI是统一资源标识符,URL是统一资源定位符
但是《图解HTTP》中也就提了一下输入网址的时候这个东西正是URL,但并没有指出两者什么区别。
搜索得知:URL是 URI 的一个子集,但两者几乎是相同的,所以通常不会做严格的区分。(那咱就不钻牛角尖了)
前面可知,通过IP地址(DNS域名解释后)可以找到唯一主机,但每个主机上的资源有很多,所以还需要端口,文件路径,或者带什么参数等其他信息。这样才能精确获取想要的资源。而这些信息组成的就是URL
IP地址只是定位到电脑,而URL是统一资源定位符,定位到的是具体电脑上的资源。
OK,在 TCP/IP、DNS、URI 等基础之上,HTTP 协议才实现了访问任意网页。
来看看《图解HTTP》生动的图解:HTTP协议、TCP协议、IP协议、DNS各自的职责。