OSI七层网络参考模型与数据流通过程
OSI七层网络参考模型
文章目录
- OSI七层网络参考模型
- 1. OSI参考模型初步了解
- 2. OSI参考模型理解
- 3. 数据流通的过程
1. OSI参考模型初步了解
OSI,英文为Open System Interconnect,意为开放式系统互连,国际化标准组织(ISO)指定了OSI模型,这个模型把网络通信的工作定义成7个框架,分别是物理层,数据链路层,网络层,传输层,会话层,表示层,应用层,即OSI开放式系统互连参考模型。
这个参考模型的目的就是解决网络通讯,比如说华为电脑要与苹果电脑进行通讯,但这两台电脑来自不同公司,就像只会中文的人不能与只会英文的人交流,但是如果大家都统一使用OSI网络模型来沟通情况就不一样了
OSI参考模型也采用了分层结构的思想,即把一个网络系统分成若干层,每一层都去实现不同的工作,每一层的功能都以协议描述,该协议定义了每一层与相对于需要通信的网络系统的等层的规则和约定,这实现了当网络出现问题的时候可以从一个宏观的整体去分析和解决问题。每一层向相邻上层提供一套确定的服务,并且使用与之相邻的下层所提供的服务。从概念上来讲,每一层都与一个远方对等层通信,但实际上该层所产生的协议信息单元是借助于相邻下层所提供的服务传送的。因此,对等层之间的通信称为虚拟通信。

2. OSI参考模型理解
我们先用上面所说的华为电脑和苹果电脑进行通信的例子,先用最通俗的语言来解释OSI七层参考模型每一层的各施其职。假设现在苹果电脑自己用应用软件搭建了一个网站,华为电脑想要访问这个网站就需要软件应用了,比方说用浏览器访问网站,两个应用具体需要如何进行交互就是应用层的事情了,应用层的功能不是为了应用什么应用程序,而是为了如何沟通,常见的应用层协议就是HTTP了。应用层就是最接近用户的那一层,沟通的时候不是直接与另一应用层进行沟通,实际物理上的连通是需要物理层的。
- 物理层:我们要发送出去的数据就是无数的0和1,这就是我们所说的“比特”,物理层就是将这些比特传输出去,传输媒介有电、光或者其他形式的电磁波来表示和传输信号。数据从网络接口出去之后会经过很多的网络拓扑并不是一条线直接传输过去的,因此需要中继器和集线器这样的设备,但数据去到哪一台设备是需要定向的,这时候就需要高级一点的层——数据链路层。
- 数据链路层:在数据链路层这里,基本传输单位是“帧”,在传输过程中可能出现0变成1,1变成0,所以会进行差错检测,当发现数据错误时候可以重传数据帧。另外设备的传输能力和接收能力也是一个问题,所以会进行一定的流量控制。在这一层中,上层数据加上源和目的方的物理地址(MAC)地址封装为数据帧,MAC地址就是用来标识网卡的物理地址(全球唯一),为了可以通过MAC地址对不同设备进行数据的传输,就出现了交换机,发送端发送数据的时候,交换机就知道了发送端的MAC地址,如果交换机知道了接收端的MAC地址就可以传输过去了。
- 网络层:但是仅仅靠网卡来进行通讯效率是不高的,比如说两个设备用的同一个厂商的网卡且MAC地址只相差一个字母,而它们相隔十万八千里,物理地址此时就很难做出快速定位。因此需要IP地址来进行寻址和路由选择。IP这样的逻辑地址就是实现点到点的过程了。网络层就是以路由器为最高节点俯瞰网络的关键层,它负责将上层数据加上源和目的方的逻辑(IP)地址封装成数据包,实现数据从源端到目的端的传输。网络层进行逻辑地址寻址,实现不同网络之间的路径选择。
- 传输层:虽然有MAC和IP地址可以抵达对方的主机,但是对方的主机可能运行着无数个软件进程,这时就需要传输层了。传输层是计算机通信体系结构中关键一层,传输层定义了传输数据的协议端口号,以及流控和差错检测。将上层应用数据分片并加上端口号封装成数据段,或通过对报文头中的端口识别。传输层实现了网络中不同主机上的用户进程之间的数据通信,为用户提供了进程到进程的服务。传输层起到了承上启下的作用,承接上层软件应用,下启网络数据传输。
- 会话层:会话层就比较容易理解,它就是用来维持你的登录状态让你不需要每一次都输入密码,当然网站也会管理和控制你的登录状态,会话层在这里的作用就是负责维护两个节点之间的传输联接,确保点到点传输不中断,以及管理数据交换等功能。
- 表示层:表示层也很容易理解,就是将接收到的数据转化为二进制的计算机语言、数据加密和解密、数据压缩和解压等,它提供了数据的安全传输。
- 应用层:应用层就是最接近用户的一层了,是人机交互的窗口。
通过以上这些应该就对ISO模型有所了解了吧,下面来总结一下:
| 层 | 作用 | 关键词 |
|---|---|---|
| 应用层 | 最接近用户一层,为应用程序提供网络服务 | 人机交互 |
| 表示层 | 数据转换、加密解密、压缩解压 | 数据处理 |
| 会话层 | 管理传输连接 | 管理连接 |
| 传输层 | 定义传输数据的协议端口号,以及流控和差错校检 | 段、端口号 |
| 网络层 | 进行逻辑地址寻址,实现不同网络之间的路径选择 | 包、IP地址 |
| 数据链路层 | 建立逻辑连接,进行硬件地址寻址,差错检测、流控等 | 帧、MAC地址 |
| 物理层 | 数据传输,决定传输媒介 | 比特流、媒介 |

3. 数据流通的过程
了解了各层的作用现在就可以把全部关联起来:
-
传输层将报文连同端口号封装成段:

-
段来到网络层,加上IP地址,封装成包,这里的包是含有目标IP地址的:

-
但因为目标IP地址不是同一个网络下的,要发送到其他的网络就要经过默认网关;这里就有一个问题,客户机主机最初并不知道默认网关的MAC地址,没有办法封装成帧,这个时候就可以通过ARP协议进行广播找到网关IP对应的MAC地址,把包封装成帧,源MAC地址填写自己的,目标MAC地址填广播地址的:

-
默认网关解封帧之后发现了MAC地址,再解封包发现了IP地址,就会把客户端MAC和IP关联为一台主机,接着默认网关将自己的IP和MAC地址打包为帧,再返回客户机,这样客户机就知道网关的IP地址了:

-
接着客户机就可以发送数据,客户机通过比特流发送到默认网关,默认网关解封发现这些数据是发送给自己的,同时也发现目标IP地址是在另一个网络中的就会进行路由转发最终到达目的网络,如果目标网关知道目标IP地址和MAC地址是哪一台主机的,就可以封装成帧直接发送数据,如果不知道的话,也是可以通过ARP协议喊一下就可以了
以上就是数据流通的基本内容了,接下来看一下每一层对应的协议:
| 层数 | 名称 | 主要协议 |
|---|---|---|
| 1 | 物理层 | IEEE 802.3 (以太网)、IEEE 802.4 (标记总线)、IEEE 802.5 (令牌环)、FDDI (光纤分布式数据接口)、PPP (点对点协议)、SLIP (串行线路互联协议)等 |
| 2 | 数据链路层 | IEEE 802.2 (一般数据链路协议)、PPP (点对点协议)、PPPoE (以太网上的点对点协议)等 |
| 3 | 网络层 | IP (互联网协议)、ICMP (互联网控制报文协议)、IGMP (互联网组管理协议)、ARP (地址解析协议)、RARP (反向地址解析协议)等 |
| 4 | 传输层 | TCP (传输控制协议)、UDP (用户数据报协议)等 |
| 5 | 会话层 | RPC (远程过程调用协议)、SQL (结构化查询语言)、SMTP (简单邮件传输协议)、NFS (网络文件系统)等 |
| 6 | 表示层 | SSL (安全套接字层)、TLS (传输层安全协议)、MIME (多用途互联网邮件扩展)等 |
| 7 | 应用层 | HTTP (超文本传输协议)、FTP (文件传输协议)、SMTP (简单邮件传输协议)、DNS (域名系统)、TELNET (远程登录协议)、SNMP (简单网络管理协议)、NFS (网络文件系统)等 |
本篇文章参考了B站博主“技术蛋老师”的视频OSI七层网络参考模型,该视频中有更加丰富的动画解释。
相关文章:
OSI七层网络参考模型与数据流通过程
OSI七层网络参考模型 文章目录 OSI七层网络参考模型1. OSI参考模型初步了解2. OSI参考模型理解3. 数据流通的过程 1. OSI参考模型初步了解 OSI,英文为Open System Interconnect,意为开放式系统互连,国际化标准组织(ISO)指定了OSI模型&#x…...
数字孪生行业相关政策梳理--工业领域相关政策(可下载)
自2021年国家“十四五”规划纲要提出“探索建设数字孪生城市”以来,国家发展和改革委员会、工业和信息化部、住房和城乡建设部、水利部、农业农村部等部门纷纷出台政策,大力推动数字孪生在千行百业的落地发展。这些政策不仅为数字孪生的应用提供了广阔的…...
【工具】咸鱼之王辅助小助手来了!
自动答题的视频演示:【工具】咸鱼之王辅助小助手来了!_哔哩哔哩_bilibili 刚开始搞,还没来得及做界面,目前只做了自动答题。 欢迎感兴趣的大佬一起来开发~...
黑马JVM总结(十)
(1)直接内存_基本使用 下面我们看一下使用了ByteBuffer直接内存,大文件的读写效率是非常的高 Java本身并不具备磁盘读写的能力,它需要调用操作系统的函数,需要从java的方法内部调用本地方法操作系统的方法,…...
JPEG、GIF动图可以转换成SVG、Eps格式的矢量图吗?
在进行图片设计的过程中,我们可能需要很多不同格式的图片,例如 JPG、PNG、BMP 和 GIF 位图图像,怎么将这些图片转换成矢量图呢?一款功能强大的应用程序,能够轻松将位图图片转换成矢量图输出。Vector Magic会帮你进行自…...
数据结构与算法的力量:编写更高效的代码
文章目录 为什么数据结构和算法重要?1. 提高性能2. 节省资源3. 解决复杂问题4. 改进代码质量 常见数据结构和算法数据结构1. 数组(Array)2. 链表(Linked List)3. 栈(Stack)4. 队列(Q…...
Python批量统计pdf中“中文”字符的个数
之前的文章提供了批量识别pdf中英文的方法,详见【python爬虫】批量识别pdf中的英文,自动翻译成中文上。以及自动pdf英文转中文文档,详见【python爬虫】批量识别pdf中的英文,自动翻译成中文下。以及Python统计pdf中英文单词的个数。 本文实现Python统计pdf中中文字符的…...
LeetCode的第 363 场周赛——记录+补题
研究生生涯第一次打力扣周赛——3题 1. 计算 K 置位下标对应元素的和 class Solution { public:int cnt(int x){int sum 0;while (x) {sum ((x%2)?1:0);x/2;}return sum;}int sumIndicesWithKSetBits(vector<int>& nums, int k) {int n nums.size();int ans 0…...
【网络协议】Http-上
Http请求结构: 结构图1: 实验解析请求报文: 1.在Edge浏览器上输入ip地址端口号文件资源,也就是下图中的120.XX.139.29:8888/A/B/c.html 2.我的程序接收到了一个没有有效载荷的http请求(呼应上面的结构图1),如下 GET …...
Langchain-chatchat本地部署
Langchain-chatchat本地部署 参考官网 环境配置 conda安装 minicoda下载地址 安装时注意勾选上添加环境变量。安装完成之后使用conda --version测试一下版本。 环境创建 先配置一下conda的镜像地址(使用阿里的靠谱一些),这里要修改一下…...
SQL故障和排查解决浅析
MySQL长连接 MySQL长连接是指应用程序与MySQL数据库之间的连接在执行完一个操作后不会立即关闭,而是保持活动状态以供后续使用。这种连接模式在某些情况下可以提高性能,但也可能导致一些问题。以下是MySQL长连接的一些现象和排查方法: 现象…...
基础算法--双指针算法
双指针算法 1.基本介绍 严格的来说,双指针只能说是是算法中的一种技巧。 双指针指的是在遍历对象的过程中,不是普通的使用单个指针进行访问,而是使用两个相同方向(快慢指针)或者相反方向(对撞指针&#…...
企业工程项目管理系统源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理)
工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&am…...
生物的神经系统与机器的人工神经网络
生物的神经系统与机器的人工神经网络 文章目录 前言一、人工神经网络二、生物的神经系统三、关系四、相似与区别4.1. 相似:4.2. 区别: 总结 前言 因为本人是学生物的,并且深度学习的核心——人工神经网络与生物的神经系统息息相关,故想要在本…...
JNI 基础
一、JNI 涉及的名词概念 1.1、 JNI:Java Native Interface 它是Java平台的一个特性(并不是Android系统特有的)。实现Java代码调用C/C的代码,C/C的代码也可以调用Java的代码. 1.2、 二进制库分类 : 静态库,动态库. 静态库 系统…...
用户参数(zabbix-agent)
-s 指向被监控端地址 -p 指向被监控端端口 -k 指向key的名字 监控内存使用率 agent vi a.conf server web界面 对数据库的avg进行监控 systemctl 创建监控项 另一台 重启 agent 监控请求数 运行时间 对自定义key的理解 写下想要监控的任何参数命令,利用zabbix…...
期权策略篇: 实现买方狂欢,让卖方稳赚不赔的策略
欢迎来到期权策略篇: 实现买方狂欢,让卖方稳赚不赔的策略,今天给大家带来的期权策略比较简单,是我们比较常见的四种单腿期权策略,这四种策略分别是买入看涨期权、买入看跌期权、卖出看涨期权、卖出看跌期权策略。本文来自…...
关于包,类名,方法名的命名规范
保持与数据库同名的一个命名规范的规则 方法名采用驼峰命名法,保持与数据库同名的一个命名规范的规则 类名采用首字母大写,驼峰命名法,保持与数据库同名的一个命名规范的规则 包名全部使用小写,保持与数据库同名的一个命名规范的规…...
1.1 安装配置CentOS
文章目录 零、学习目标一、导入新课二、新课讲解(一)安装VMWare Workstation1、获取安装程序2、进入安装向导3、按提示完成安装 (二)虚拟网络编辑器1、启动虚拟网络编辑器2、选择VMnet8虚拟网3、更改网络配置4、查看DHCP设置5、查…...
go初识iris框架(七) - 实战资源导入和项目框架搭建
实战项目框架搭建 如下是项目框架搭建后的说明: config::项目配置文件及读取配置文件的相关功能controller:控制器目目录,项目各个模块的控制器及业务逻辑处理的所在目录datasource:实现mysql连接和操作、封装操作mysql数据库的目录。model:数据实体目…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
