在我们了解 HTTP 相关内容之前我们先来了解一下 “网络协议分层” 相关内容, 因为这个是我们了解 HTTP 相关内容的前提条件; 大家有一定深入了解就会明白为什么这样说。 有什么疑问的地方欢迎评论区留言 。
废话不多说, 直接上代码以及图例(为了让大家方便阅读, 都有自己验证过程的一些图例作为分享) 。
1. 理解网络信息传输过程的时候, 都会使用一个 '经典五层模型'
1. 在每一台电脑上, 每一台服务器上, 它都是有这样一个相应的层级关系的; 来维护我们网络传输的过程的 。
2. 网络协议的 经典五层模型:
1. 应用层
2. 传输层
3. 网络层
4. 数据链路层
5. 物理层
1. '物理层':
1. 物理层的主要作用是: 定义物理设备如何传输数据 。
2. 物理层: 简单来说就是 电脑的硬件, 网卡端口, 网线, 网线连接的光缆, 来为我们把数据传输到互联网 。
3. 没有物理层我们的软件是无法去使用的 。
2. '数据链路层' (也可简单的成为 '链路层', 或者 '网络接口层'):
1. 数据链路层 在通信的实体之间建立 数据链路连接: 即 用来处理链接网络的硬件部分 '物理层' 。
2. 需要一个软件服务 帮助我们通过物理的设备 创建一个电路的链接 。
3. "注意: 在 《图解HTTP》 一书中: 链路层的定义为: 用来处理链接网络的硬件部分; 硬件上的范畴均在链路层的作用范围之内。", 这里大家不用太在意, 因为这是因为抽象分层时依据不同造成的, 其实都是正确的 (可参考下图)。
3. '网络层':
1. 网络层为数据在节点之间传输, 创建 逻辑链路 。
2. 网络层用来处理网络上流动的 '数据包', 数据包是网络传输数据的最小数据单位 。
3. 当计算机之间进行通信时, 网络层所起到的作用就是在众多的网络通信路线中选择一条 '传输路线' 。
4. 例如: 我们从自己的电脑去访问百度的服务器, 我们如何去寻找百度这台服务器所在的地址, 它就存在一个逻辑关系; 这个关系是在 网络层 为我们创建的 。
1. '传输层' 的两个协议:
1. TCPIP 协议(传输控制协议) 。
2. UDP 协议(用户数据报协议) 。
3. 在更多的情况下我们使用的是 TCPIP 协议, 它是一个更可靠的协议帮我们传输数据 。
2. 传输层: 向我们提供可靠的端到端服务 (End-to-End)
1. '传输层' 提供处于网络链接中的两台计算机之间的 '数据传输' 。
2. 这个服务的概念: 就是我们建立起了从我们自己的电脑到服务器之间的 连接戳 。
3. 它们两端如何去传输数据, 传输数据的方式都是在这一层进行定义的 。
4. 传输的数据有可能很小有可能很大, 如果传输的数据比较大, 一次性不能将这个数据传输过去, 那么我们要 分包/分片, 这些分片的数据在传输完成之后, 要进行组装; 组装/传输 的过程, 这些协议的定义都是在 传输层 进行定义的 。
4. 传输层: 向高层屏蔽了, 下层数据通信的细节 。
1. http 协议是实现在 TCPIP 协议基础上的, 我们 http 协议要传输一个数据只需要非常简单的在浏览器中输入 URL, 它就会发送相关的数据到服务器端, 服务器端能够解析这些数据, 返回给我们的浏览器, 然后把页面显示出来 。
2. 我们输入 URL 的过程涉及到了一系列数据的拼装与传输 。
3. 这个过程我们作为客户端(浏览器端、APP端), 不需要知道它里面是怎么去分片, 怎么去跟服务器创建一个连接的关系, 这些内容传输层已经帮我们封装好了 。
5. 传输层会涉及到 http 性能, 过程消耗 。
1. '应用层' 最主要的就是 http 协议 。
2. 应用层 为应用软件提供了很多 '应用服务' 。
1. FTP 文件传输协议 服务。
2. DNS 域名系统 服务。
4. 构建于 传输层(一般是指TCP) 协议之上 。
5. 屏蔽网络传输相关细节 。
之前有整理过部分知识点, 现在将整理的相关内容, 验证之后慢慢分享给大家; 这个专题 就是 “HTTP协议原理与实践代码” 的相关专栏; 不积跬步,无以至千里, 戒焦戒躁 。