在前端优化中有一个很重要的指标,就是网络速度,要对网络部分进行优化,就必须要了解网络的知识,这里就分为两个大块来讲,一个是TCP/IP,一个是HTTP。
网络协议模型
互联网是一整套的理念和协议组成的架构体系。我们学过的一般有:
- OSI七层模型
- TCP/IP四层模型
- 五层网络模型
这里的层可以理解为不同的步骤,一个数据包从主机A发送到主机B,要经历的不同的步骤。
那在这里以五层网络模型做一个说明。
五层网络模型
OSI有七层网络模型,当时看的计算机网络的课程其实就是大概分为七个章节,每一层都作为一个章节来看,但感觉有些不是很重要,所以这里就讲讲我觉得比较重要的五层结构。
| 第五层 | 应用层 |
|---|---|
| 第四层 | 传输层 |
| 第三层 | 网络层 |
| 第二层 | 链接层 |
| 第一层 | 实体层 |
协议
五层网络模型,每层都有一个属于自己的规则,只有大家都遵守同样的规则,才不会乱套。所以在计网中,我们把这个规则称呼为协议(protocol)
数据包的传递
数据发送是自上而下进行传递的,可以理解为一个打包的过程。
当我们发送一个数据包时,比如说我们在我们的电脑上给另外一台电脑发送了一条消息,这时的我们的数据还是在顶层。
应用层
我们首先经过的是应用层,我们在电脑上,有很多种发送信息的方式,比如说: QQ, 邮箱,Facetime视频电话等等。五花八门的应用,但是我们最终都是得通过主机的一个网络接口发送出去,所以我们就要规定好他的一个格式,大家才能有序的,不混乱的发送出去。
这时候我们的应用层协议就发挥用处了。打一个比方,我们要规定,发送出去的信息必须以666开头,应用层的协议就是在数据包前加上666这三个数字,然后交给下一层,也就是传输层。
常见的网络层协议有:www,FTP等等。
传输层
当数据从应用层传递过来时,我们的数据就是一个被加工过的一个数据包,这时候我们就需要将其发送出去了。但是这时候又出现了问题,我们要从哪里发送出去?
我们都知道,计算机的出口,就是一个叫端口的东西。我们的主机相当于一个房间,而端口相当于一个出口/入口,每一个端口都对应着一个应用程序。我们的计算机有很多的出入口,如果不指定,我们就不知道该从哪一个出入口进入,所以,在我们送走的时候,要指定对方的一个端口,也就是告诉我们的数据包,该走哪一个入口进去,也就是,应该发送给哪一个应用程序。如果不指定,乱走,可能qq发送的信息,被浏览器收到了,那肯定就读不出来直接错误了。
所以,传输层的作用就是告诉数据包该从哪一个口进入。传输层的作用,就是建立“端口到端口”的通信。
比如我们刚刚的数据包,从应用层下来后,我们通过传输层,告诉数据包要到对方主机的哪一个端口去,也就是告诉他要去到哪一个程序中。在传输层中,我们在数据包上面加上一些信息,比如说端口666,就是告诉他到了对方主机后,去666端口。
网络层
我们的数据包知道了端口号,但是不知道地址,而网络层的作用就是告诉数据包,要到哪一台主机去,就是要告诉这个数据包,对方的地址是多少。
当刚刚的数据包从传输层下来后,就到了现在的网络层。
我们会在网络层将数据包再一次进行封装,加上对方的一个地址,但是就像我们去朋友家做客,一开始可能不会直接找到对方的家中,而是先找到对方的小区,再找到对方的楼,再找到他家。在计算机网络中也是同样的。我们在网络层会通过IP协议给数据包加上对方的IP,而这个IP协议,一是每台计算机分配地址,二是确认一个地址在哪些区域的网络中。
也就是说:网络层的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。这套地址就叫做"网络地址",简称"网址"。
链接层
当我们的数据包知道了要到哪一个区域后,就像我们进入了一个小区中,下一步要做的的就是找到对方的门牌号,进他家了。
在链接层,我们提供了一个叫MAC地址的东西,这个可以就相当于家的详细地址,有了他,我们的数据包就能准确的找到对方的主机了。
所以在链接层,我们告诉了数据包对方的MAC地址,就可以确定对方的主机了,这时候,我们的数据包就像手里拿在导航,知道了要去哪里了。
实体层
这一层就好说了,当数据包全部准备就绪后,接下来的是什么?那不就剩下发送了。我们发送的媒介,就是实体层,比如:光缆,电缆,无线电等。
总结:
我们的网络架构,分为了很多种,但是很多都是理解的不同而已。
有的虽然层数不同, 但有的只是把一些层次合并起来理解了而已,就如下图所示,其实具体的实现都是一样的。