互联网的五层模型

MarkDown语法写的,不知道为啥上传到CSDN不生效,算了就这样将就着看吧......还有,转载请注明出处,谢谢!

一、从设计者的角度看互联网的五层模型


## 一.五层模型
***
互联网的实现,分成好几层。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。


用户接触到的,只是最上面的一层,根本没有感觉到下面的层。要理解互联网,必须从最下层开始,自下而上理解每一层的功能。


如何分层有不同的模型,有的模型分七层,有的分四层。我觉得,把互联网分成五层,比较容易解释。


五层从上到下依次为:应用层、传输层、网络层、链路层、物理层(实体层)
***
## 二.五层每一层的协议
***
### 1. 物理层
电脑要组网,第一件事要干什么?
当然是先把电脑连起来,可以用光缆、电缆、双绞线、无线电波等方式。
这就叫做"实体层",它就是把电脑连接起来的物理手段。
它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。
### 2. 链路层


单纯的0和1没有任何意义,必须规定解读方式:多少个电信号算一组?每个信号位有何意义?
这就是"链接层"的功能,它在"实体层"的上方,确定了0和1的分组方式。


电信号分组方式是怎么规定的呢?
以太网协议,依靠MAC地址发送数据。
一组电信号构成一个数据包,叫做"帧"(Frame)。
每一帧分成两个部分:标头(Head)和数据(Data)。
"标头"包含数据包的一些说明项,比如发送者、接受者、数据类型等等;
"数据"则是数据包的具体内容。
一个"帧"最短为64字节,最长为1518字节。如果数据很长,就必须分割成多个帧进行发送。


发送者和接受者是如何标识呢?
连入网络的设备,都具有"网卡"接口。
数据包必须是从一块网卡,传送到另一块网卡。
网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址。
每块网卡出厂的时候,都有一个全世界独一无二的MAC地址。
有了MAC地址,就可以定位网卡和数据包的路径了。


一块网卡怎么知道另一块网卡的MAC地址?
ARP协议


知道了MAC地址,怎么把数据包送给接收方?
向本网络内所有计算机都发送数据包,让每台计算机判断自己是不是这个MAC地址,即是不是接收方,是的话接受并作进一步的处理,不是的话丢弃这个数据包。(这种形式成为广播)
### 3.网络层
思考一个事情,只依靠以太网协议的MAC地址发送数据是不够的,因为不可能全世界的电脑都在一个子网络中。
那么就需要一种方法,来区分哪些MAC地址在同一个子网络中,哪些不在。如果在同一个子网络,就采用广播方式发送,否则就采用"路由"方式发送。("路由"的意思,就是指如何向不同的子网络分发数据包,这是一个很大的主题,本文不涉及。)
这就导致了"网络层"的诞生。
它的作用是引进一套新的地址,使得我们能够区分不同的计算机是否属于同一个子网络。
这套地址就叫做"网络地址",简称"网址"。
于是,每台计算机有了两种地址,一种是MAC地址,另一种是网络地址。
两种地址之间没有任何联系,MAC地址是绑定在网卡上的,网络地址则是管理员分配的,它们只是随机组合在一起。
网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包送到该子网络中的目标网卡。因此,从逻辑上可以推断,必定是先处理网络地址,然后再处理MAC地址。


网络地址是怎么规定的呢?
IP协议。IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。
IP地址分成两个部分,前一部分代表网络,后一部分代表主机。比如,IP地址172.16.254.1,这是一个32位的地址,假定它的网络部分是前24位(172.16.254),那么主机部分就是后8位(最后的那个1)。


怎么判断一个IP地址的网络部分和主机部分呢?
这就要用到另一个参数"子网掩码"(subnet mask)。子网掩码是表示子网络特征的一个参数。它在形式上等同于IP地址,也是一个32位二进制数字,它的网络部分全部为1,主机部分全部为0。
比如,IP地址172.16.254.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。


有了IP地址、子网掩码,就能判断两个设备是否在一个子网络,判断手段:
先比较子网掩码是否相同,相同时再比较IP地址的网络部分是否相同,相同说明两个设备在一个子网络中。


为什么有了IP地址,MAC地址不会被淘汰了呢?
因为IP地址是可变的,而MAC地址时唯一且不变的,而且两者在不同的层,先用ip地址判断是否在一个子网中,不在一个子网中时,不能得到接收方的MAC地址,只能把数据包传送到两个子网络连接处的"网关"(gateway),让网关去处理;在一个子网中时,可以用ARP协议(一个数据包),得到对方的MAC地址,然后再用广播形式发送数据包并用MAC地址判断是否为接收方。


以太网数据包只包含MAC地址,并没有IP地址的栏位。那么是否需要修改数据定义,再添加一个栏位呢?
不需要,IP地址会从Data部分再分出一个Head出来,用于存放IP数据包。


### 4. 传输层
有了MAC地址和IP地址(以及子网掩码),我们就可以在互联网上任意两台主机建立通信。


一台主机上不会只有一个进程在运行,而是多个进程,那么那么判断一个数据包是要传给那个进程的呢?


通过参数"端口"(port),它是每一个使用网卡的程序的编号,范围是[0,65535],其中[0,1023]的端口被系统占用,应用程序会随机选用一个其它的端口,跟服务器的相应端口联系。


"传输层"的功能,就是建立"端口到端口"的通信。相比之下,"网络层"的功能是建立"主机到主机"的通信。只要确定主机和端口,我们就能实现程序之间的交流。


现在就得在数据包中加上端口信息,内嵌在IP数据包的"数据"部分,这就需要新的协议。
UDP协议:优点是比较简单,容易实现;缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。
TCP协议:优点是能够确保数据不会遗失;缺点是过程复杂、实现困难、消耗较多的资源。
### 5. 应用层
应用程序收到"传输层"的数据,接下来就要进行解读。由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则根本无法解读。


"应用层"的作用,就是规定应用程序的数据格式。
举例来说,TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了"应用层"。
这是最高的一层,直接面对用户。它的数据就放在TCP数据包的"数据"部分。因此,现在的以太网的数据包就变成下面这样。


最终,以太网数据包的结构就是这样:
Head(以太网表头)-  Head(IP表头) -  Head(TCP表头) -  Data(应用层数据包)




================================================








二、从用户的角度看互联网的五层模型
------------------------------------------------------------------------------------------------------
## 一、用户的上网设置
***
###  1. 计算机连上网需要设置四个参数
本机的IP地址;
子网掩码;
网关的IP地址;
DNS的IP地址。
### 2.  静态IP地址
人为设定计算机的IP地址,计算机每次开机,都会分到同样的IP地址。


缺点是设置麻烦,而且不够灵活,所以一般不用静态IP地址上网。
### 3. 动态IP地址
计算机开机后,会自动分配到一个IP地址,不用人为设定。它使用的协议叫做DHCP协议。


协议规定:一个子网络中,有一台计算机负责管理本网络的所有IP地址,它叫做"DHCP服务器"。新的计算机加入网络,必须向"DHCP服务器"发送一个"DHCP请求"数据包,申请IP地址和相关的网络参数。


问题来了,新的计算机加入子网络时,不知道这个子网的DHCP服务器的MAC地址、IP地址,怎么发送一个"DHCP请求"数据包呢?


新的计算机会以广播形式发送一个数据包,这个子网络中的计算机就会去辨别这个数据包是否是发给自己的。
辨别方法:数据包中接收方的MAC地址是FF-FF-FF-FF-FF-FF,辨别不出;数据包中发出方IP地址是0.0.0.0,接收方是255.255.255.255,于是DHCP服务器知道"这个包是发给我的",而其他计算机就可以丢弃这个包。
接着,DHCP服务器分配好IP地址,发送回去一个"DHCP响应"数据包,这样,新加入的计算机收到这个响应包,就知道了自己的IP地址、子网掩码、网关地址、DNS服务器等等参数。
***
## 二、用一个实例来看互联网协议的整个通信过程
***
1. 用户打开浏览器,在地址栏输入网址:www.google.com,回车。


2.  用户机向DNS服务器(地址为8.8.8.8端口为53)发送一个DNS数据包,DNS服务器做出响应,告诉用户机谷歌的IP地址是172.194.72.105。


3.  用户机分别对本机和谷歌的IP地址和子网掩码做AND运算,得出本机和谷歌的IP地址的网络部分,再判断本机和谷歌的IP地址的网络部分是否相同,结果是不相同,所以得出结论:本机和谷歌不在一个子网络中。
用户机向所在的子网络的网关发送数据包,也就是说,接收方的MAC地址将是网关的MAC地址,数据包将通过网关进行转发。


4. 数据包经过应用层协议(这里是网页是HTTP协议)、TCP协议、 IP协议、以太网协议设置了接收方端口、双方IP地址、双方MAC地址。


5.  经过多个网关的转发,Google的服务器172.194.72.105,收到了这四个以太网数据包。根据IP标头的序号,Google将四个包拼起来,取出完整的TCP数据包,然后读出里面的"HTTP请求",接着做出"HTTP响应",再用TCP协议发回来。
本机收到HTTP响应以后,就可以将网页显示出来,完成一次网络通信。










 

猜你喜欢

转载自blog.csdn.net/qq_42105144/article/details/81057744