OSI 四层/七层 网络模型通俗解析 数据链路层/网络层 解析

前言

看了好多网络上的OSI网络模型,看了就忘,总是理解不到点子上。自己跟公司网络人员请教了一下网络架构。从底层理解为什么OSI网络模型是这样做,写个文章记录一下。
文章尾部有一个小问题各位讨论一下

理论

理论知识不想看的可以直接跳到图文解析

1. OSI的基本概念及原则

OSI是Open System Interconnect的缩写,意为开放式系统互联。其各个层次的划分遵循下列原则:

(1)同一层中的各网络节点都有相同的层次结构,具有同样的功能。

(2)同一节点内相邻层之间通过接口进行通信。

(3)七层结构中的每一层使用下一层提供的服务,并且向其上层提供服务。

(4)不同节点的同等层按照协议实现对等层之间的通信。

2. OSI七层模型各层功能概述

在这里插入图片描述
在这里插入图片描述
图片借鉴自:https://blog.csdn.net/yaopeng_2005/article/details/7064869

第一层:物理层

在OSI参考模型中,物理层是参考模型的最低层,也是OSI模型的第一层。物理层的主要功能是:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。物理层的作用是实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异,使其上面的数据链路层不必考虑网络的具体传输介质是什么。
通俗讲就是网线,wifi。然后连接两台电脑设备

第二层:数据链路层

数据链路层(Data Link Layer)是OSI模型的第二层,负责建立和管理节点间的链路。在计算机网络中由于各种干扰的存在,导致物理链路是不可靠的。因此这一层的主要功能是:在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,即提供可靠的通过物理介质传输数据的方法。
基于物理层向接受者传输0/1信号,一段数据传输会分割成若干个“帧”,在一段0/1数据的前后分别添加首部和尾部,这样就构成了一个帧。若干个帧包含开始帧和结束帧,当接收方收到起始帧才认为是一条完整的数据,若不完整,丢弃。更详细的数据链路层可以参考https://blog.csdn.net/weixin_49343190/article/details/108714214
数据链路层是在一个子网(局域网)内通信,比如192.168.1.2和192.168.1.3之间的通信。交换机收到携带MAC地址的消息后将消息广播到交换机下所有的机器,当机器收到后判定MAC地址是否与本机一直,不一致丢弃,一致则接受。换而言之,数据链路层借助交换机实现MAC寻址传输

第三层:网络层

网络层(Network Layer)是OSI模型的第三层,它是OSI参考模型中最复杂的一层,也是通信子网的最高一层,它在下两层的基础上向资源子网提供服务。其主要功能是:在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,控制数据链路层与传输层之间的信息转发,建立、维持和终止网络的连接,将数据设法从源端经过若干个中间节点传送到目的端(点到点),从而向传输层提供最基本的端到端的数据传输服务。具体地说,数据链路层的数据在这一层被转换为数据包,然后通过路径选择、分段组合、顺序、进/出路由等控制,将信息从一个网络设备传送到另一个网络设备。数据链路层和网络层的区别为:数据链路层的目的是解决同一网络内节点之间的通信,而网络层主要解决不同子网间的通信。
不同的子网之间通信,数据链路层就不能够满足了,这个时候就需要网络层去路由。网络层是公网之间的数据通信。
比如192.168.1.2(局域A机器)所在的机器对应的公网IP为1.1.2.1(公网A),想要发送到公网IP为1.1.2.2(公网B)的局域网机器192.168.1.2(局域B机器)。这个时候发送者携带了局域A机器的IP及MAC地址和接受者局域B机器的IP及MAC地址。在同一子网内没有找到对应的MAC地址,这个时候就会交给路由器去路由到对应的公网B,公网B的交换机再广播到下面的所有机器,找到局域B机器完成通信

第四层:传输层

OSI下3层的任务是数据通信,上3层的任务是数据处理。而传输层(Transport Layer)是OSI模型的第4层。该层提供建立、维护和拆除传输连接的功能,起到承上启下的作用。该层的主要功能是:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输,同时向高层屏蔽下层数据通信的细节,即向用户透明地传送报文。

第五层:会话层

会话层是OSI模型的第5层,是用户应用程序和网络之间的接口,该层的主要功能是:组织和协调两个会话进程之间的通信 ,并对数据交换进行管理。当建立会话时,用户必须提供他们想要连接的远程地址。而这些地址与MAC地址或网络层的逻辑地址不同,它们是为用户专门设计的,更便于用户记忆。域名就是一种网络上使用的远程地址。会话层的具体功能如下:

会话管理:允许用户在两个实体设备之间建立、维持和终止会话,并支持它们之间的数据交换。
会话流量控制:提供会话流量控制和交叉会话功能。
寻址:使用远程地址建立会话连接。
出错控制:从逻辑上讲会话层主要负责数据交换的建立、保持和终止,但实际的工作却是接收来自传输层的数据,并负责纠正错误。

第六层:表示层

表示层是OSI模型的第六层,它对来自应用层的命令和数据进行解释,对各种语法赋予相应的含义,并按照一定的格式传送给会话层。该层的主要功能是:处理用户信息的表示问题,如编码、数据格式转换和加密解密等。表示层的具体功能如下:

数据格式处理:协商和建立数据交换的格式,解决各应用程序之间在数据格式表示上的差异。
数据的编码:处理字符集和数字的转换。
压缩和解压缩:为了减少数据的传输量,这一层还负责数据的压缩与恢复。
数据的加密和解密:可以提高网络的安全性。

第七层:应用层

应用层是OSI参考模型的最高层,它是计算机用户,以及各种应用程序和网络之间的接口,该层的主要功能是:直接向用户提供服务,完成用户希望在网络上完成的各种工作。它在其他6层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及应用所需的监督、管理和服务等各种协议。此外该层还负责协调各个应用程序间的工作。应用层的具体功能如下:

用户接口:应用层是用户与网络,以及应用程序与网络间的直接接口,使得用户能够与网络进行交互式联系。
实现各种服务:该层具有的各种应用程序可以完成和实现用户请求的各种服务。

白色文本解析借鉴,黄色文本为我自己理解的内容
原文链接:https://blog.csdn.net/qq_36756682/article/details/104112765

3. OSI四层网络模型

本片文章最重要想讲的其实就是数据链路层和网络层,传输层就是一些文本协议,应用层就是应用与操作系统的一些交互。
四层网络模型不是OSI的标准,是我们实践后经过经验定义的四层网络模型。抛弃了七层中的物理层、会话层、表示层。仅保留了数据链路层、网络层、传输层、应用层

七层模型四层模型
物理层数据链路层
数据链路层
应用层应用层
表示层
会话层

解析

前面讲了七层网络模型和四层网络模型的区别,并且解释了每一层的意义,但是真的理解起来还是云里雾里的。接下来我就把个人对链路层和网络层的理解写出来

数据链路层

数据链路其实就是一个子网内的数据传输,传输数据按帧的粒度将数据量分成若干份发送到目标机器节点
什么是子网
子网一般是指应用在局域网(例如网吧、学校、公司)的内部网,互联网也是一个遍布全世界的子网。
什么是MAC地址
我们家用网络部署,每一户基本就是一个路由器(家用路由器内置了交换机功能),那么家里每一台网络设备都可以看做是一台电脑,对应的都有一张网卡,网卡有唯一的MAC地址。

数据链路层的交换机是MAC寻址
请求端发送请求会携带发起方信息(IP/MAC地址)和接收方信息(IP/MAC地址),请求端将消息发送到交换机,交换机广播当前子网内所有的机器比对MAC地址,一致则发起连接

第一步,向交换机发送请求
在这里插入图片描述

第二步,交换机收到请求并且广播到子网所有机器
在这里插入图片描述

网络层

如上面数据链路层图示,同一个子网下找到目标机器,开始建立连接。但很多情况下是目标不在一个局域网,需要走公网路由。这里就要走网络层,通过路由器转发至目标IP,并且通过数据链路层广播到对应的机器

看了其他文章中有一段讲的比较生动,抄来用一下

网络层就相当于快递公司庞大的快递网络,全国不同的集散中心,比如说从深圳发往北京的顺丰快递,首先要到顺丰的深圳集散中心,从深圳集散中心再送到武汉集散中心,从武汉集散中心再寄到北京顺义集散中心。这个每个集散中心,就相当于网络中的一个IP节点。

网络层,路由器是IP寻址
对于网络层来讲,当数据链路层没有在子网中找到对应的机器,这时就会将对应的请求转发到路由器,由路由器进行IP寻址找到对应的公网IP

路由器是如何找到对应的公网IP呢,每个IP都有一个对应的子网掩码,比如255.255.255.0。比如我们现在是在家里开着QQ跟女朋友聊天,请求先从我们的电脑在局域网找目标地址,没找到之后会往路由器继转发。这个时候会将路由器的子网掩码换算成4位二进制后与我们发起端IP换算成二进制后进行“与”运算。然后将子网掩码换算成4位二进制后与我们接收端端IP换算成二进制后进行“与”运算。最后得出的两个结果不一致则说明不是一个子网,继续往上一级的路由器转发。如果结果一致则说明两个IP属于同一个子网。那么就向下一级广播继续进行“与”运算,直到找到最后一级后通过交换机MAC广播寻址找到对应的机器建立连接。

听起来有点绕,我们把计算的过程来写一下
我们本地公网IP假设为10.2.2.10;目标公网IP为10.2.10.185;我们家庭路由器的子网掩码为255.255.255.0;
分别转换为二进制

255.255.255.0 -> 11111111.11111111.11111111.00000000
10.2.2.10 -> 00001010.00000010.00000010.00001010
10.2.10.185 -> 00001010.00000010.00001010.10111001

将ip 10.2.2.10与子网掩码进行与运算(与运算是指上下两个都为1的时候,结果才为1)

11111111.11111111.11111111.00000000
00001010.00000010.00000010.00001010

得出结果

00001010.00000010.00000010.00000000

将ip 10.2.10.185与子网掩码进行与运算

11111111.11111111.11111111.00000000
00001010.00000010.00001010.10111001

得出结果

00001010.00000010.00001010.00000000

结果不一致,说明两个不是一个子网,那么继续向上找,找到整层的路由器->小区的路由器->街道的路由器->…->区县的路由器。这个时候发现“与”运算结果一致。那么说明与目标IP是同一个区县的,这个时候就由区县的路由器广播子网下面所有的路由器,同样的“与”运算。直到找到目标IP的家庭户。这个时候交给交换机通过携带的MAC地址找到对应的机器,完成连接。(这个小区街道区县什么的瞎写的,我只是懒得一点一点去算)

附个图看一下

第一步:一直往上找,直到找到同属一个子网的路由器
在这里插入图片描述

第二步: 找到同属一个子网的路由器后,开始广播寻址

在这里插入图片描述

到这里文章就结束了,那么抛出来一个问题,如果我有你的公网IP和MAC地址,抛开防火墙不谈,可以直接访问到你的机器吗?

  • 24
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值