OSI七层模型和TCP/IP的五层(四层模型)
分层
1.什么是分层
我理解是对同一相同或者相似的事务或者操作功能进行分类,比如我们去餐厅吃饭,就可以分为好多层,客户层,服务员层,前台层,后厨层,每一层都专注自己的事情,客户层只关心自己想要点的菜,以至于菜如何做出来他不管,服务员只是记录客户点的菜品然后传给前台,至于前台已经有多少客户点餐,以及点餐的顺序出餐的顺序,服务员是不管的,前台负责把客户点的菜单告知给后厨,关于这道菜如何实现,前台是不关心的。这样就能保证我们有序进行。不会造成一个人一会传参菜一会又要炒菜这中混乱的局面,这就是分层
2.分层的作用
用我们熟知的java来说吧,java其实也可以抽象出这几层,java代码层,编译层,jvm层,操作系统层。程序员只需要关心自己的代码是否实现了功能,满足客户的要求就行了,不用去关心如何编译,用那种算法编译,这件事交给编译层,而编译层工作只需要把编译的工作干好就行,不会在乎编译后的代码怎莫运行,只需要调用jvm的接口在上面运行,jvm也不用关心操作系统如果调度线程运行程序,只需要调用操作系统的接口就行了。
所有分层的作用其实就是让我们专注于如何用调用不同的接口实现一个功能,不用再去纠结底层的那些细节,大大提高我们工作的效率,对于调用者不用去关心接口里面的内容是如何实现的。对于提供方,只需要提供一个接口,不会向外透漏细节,也避免恶意破坏。
画图:
OSI七层模型
OSI七层模型,其实就是根据通信网络的逻辑进行划分,使得相同逻辑和功能的东西归为一层,总共划分了七层,就是一种架构模型,但是他并没有去落实,我们实际中其实划分了TCP/IP的五层模型或者四层模型。
这七层主要包括:应用层,表现层,会话层,传输层,网络层,数据链路层,物理层
TCP/IP五层(四层模型)
TCP/IP五层(四层)模型是根据OSI七层模型设计出来的,其中只是把应用层,会话层,表现层都划分为应用层
每层的作用是什么:
应用层:根据程序员设定好的协议打包数据,形成一个载荷,比如:相当于打包快递的过程
传输层:根据TCP/UDP协议,在载荷前面加上TCP头,或者UDP头,主要是获取源端口号和目的端口,确定我们发送端的进程和接收端的进程,比如:确定好发件人和收件人
网络层:根据IP协议,在载荷前面加上一个IP头,主要是获取源IP和目标IP,比喻:确定收件人地址和发件人地址
数据链路层:根据以太协议,在载荷前面和后面加上帧头帧尾巴,目的是获取和MAC地址,物理地址,和校验数据是否被篡改,比喻:类似于发送快递时候保证我们的快递内容没有被掉包
物理层:把真实的BIT数据转化为光信号或者是电信号,在介质中传输。:比如,选择那家快递站送快递
四层:不包括物理层
#封装和分用
封装是在发送方进行的时候对数据的处理
分用是在接收方进行的时候对数据的处理
在发送方进行时候:
在应用层会对数据进行组织和解析,会有一个程序员设计的协议的协议,对数据进行包装。然后形成一个载荷
在传输层:会在这个载荷头部加上一个TCP或者UDP协议,主要是为了确定源端口号和目标端口号,组成一个新的载荷
在网络层,会在载荷前面加一个IP协议,来确定源IP和目标IP。形成一个新的载荷
在数据链路层,根据以太协议会在载荷头尾分别加上帧头和针尾,帧头主要是获取源MAC地址和目标MAC地址,帧尾主要是为了校验载荷是否被恶意篡改
物理层就是把二进制数据转化为电信号或者光信号进行传输
接收方:
物理层把光信号和电信号转化为二进制信号
数据链路层,根据以太协议,确定数据正确后,去掉帧头帧尾,把数据传输给网络层
网络层:根据IP协议解析数据,去掉IP头,然后把数据交给传输层
传输层:根据TCP/UDP协议解析数据,去掉TCP/UDP头把,载荷交给应用层
应用层:根据程序员设计的协议解析数据,然后呈现给接收端。