OSI网络参考模型学习
文章目录
插图来源:《图解TCP/IP》
一.计算机与网络的发展
计算机从上世纪50年代开始普及,以下是我结合《图解TCP/IP》中的知识,按自己的理解整理而成计算机与网络的大致发展例程。
1.1 批处理系统
所谓批处理,就是将程序和数据放在存储介质中,比如卡带、磁盘,计算机按照一定的顺序读取执行程序的过程。
批处理系统的运行需要人为地把程序和数据的内容放入计算机,并且一次只能执行一个程序为一个用户服务,主要用于大规模计算或处理。
1.2 分时系统
上面的批处理系统是每时每刻只能由一个程序运行,即服务于一个用户。分时系统的出现改善了这种状况,分时系统的一个主机配有多个终端,可以在每一个终端上访问主机,主机上实现分时处理,从终端上看就相当于买个终端都是一个独立的计算机。
分时系统的最大特点就是独占性,即各个终端之间相互不影响,系统中每一个终端与主机都是独立的通信线路。
1.3 计算机之间的通信
分时系统只是终端与主机之间的通信,还不能够直接实现计算机之间的通信,以前计算机之间的通信是通过人工搬移存储介质实现的。
分布式处理则是将不同地点的,或具有不同功能的,或拥有不同数据的多台计算机通过通信网络连接起来,在控制系统的统一管理控制下,协调地完成大规模信息处理任务的计算机系统。
初代计算机之间的通信系统(可以理解为分布式处理系统)如图:
这时候各个计算机之间的通信是通过主机之间的连线实现的,用户可以在一个终端中执行程序,将得出的数据通过主机传给另一个主机,在另一个主机下的终端可以处理得到的数据或者直接打印数据,这就是初代计算机之间的通信方式,有一点现代分布式处理的雏形。
1.4 基于分组交换技术的计算机网络
上面介绍的计算机之间的通信有一定的限制,那就是不同架构(或者厂商)之间的计算机可能无法进行有效通信。
分组交换技术(Packet switching technology)也称包交换技术,是将用户传送的数据划分成一定的长度,每个部分叫做一个分组,通过传输分组的方式传输信息的一种技术。它是通过计算机和终端实现计算机与计算机之间的通信,在传输线路质量不高、网络技术手段还较单一的情况下,应运而生的一种交换技术。每个分组的前面有一个分组头,用以指明该分组发往何地址,然后由交换机根据每个分组的地址标志,将他们转发至目的地,这一过程称为分组交换。
所以,计算机网络就应运而生了,基于分组交换技术的计算机网络可以使各种各样的计算机之间进行相互通信连接,如图:
1.5 互联网时代的计算机网络
互联网时代的计算机网络,是可以将不同厂商、不同架构的计算机连接在一起,与此同时,建立在计算机网络连接基础上的各种信息传播方式迎来了爆发式的发展,电子邮件、万维网等信息传播方式进入千家万户。
现如今,人们只要接入互联网,理论上就可以通过互联网络与世界上任意一个有网络连接的设备进行通信。
1.6 计算机网络中协议的规定
随着互联网的发展,人们不再满足仅仅建立连接,人们开始追求更加安全稳定的连接,随之规定了计算机网络的传输协议,将庞大的计算机网络通信分层来进行分析,这样不仅仅有助于人们理解庞大的计算机网络,还助于协议的规定与修正。
互联网中常用到的协议有IP、TCP、HTTP等,而TCP/IP协议就是计算机网络协议的集大成者,现在基本所有可以联网的设备都支持TCP/IP协议,当然还有其他类型的网络体系结构,如图:
在计算机通信中,从物理连接层面到应用程序的软件层面,各个组件都必须严格遵循事先达成的约定(协议)才可以进行通信,只要某一部分稍有差错就可能导致整个通信系统无法正常运行。所以,规定统一的协议十分有必要,那么问题来了,这么重要的协议由谁来规定好呢?
1.7 协议的标准化
为了解决协议的标准化,ISO(国际标准化组织)制定了一个国际标准OSI(开放式通信系统参考模型)来对通信系统进行标准化。ISO在指定标准化OSI之前,对网络体系结构的相关问题进行了讨论,最终提出了作为通信协议设计指标的OSI参考模型。戏剧的是当时OSI所定义协议并没有得到普及,但是在设计OSI协议之初作为指导方针的OSI参考模型却经常被用于网络协议的制定当中。
OSI参考模型将复杂的协议整理分为了七层,如图:
下面就介绍一下OSI各层的详细情况!
二.OSI七层参考模型概述
开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型(OSI model),一种概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准框架,定义于ISO/IEC 7498-1。
OSI参考模型的七层结构放如图:
各层的主要功能以及概览如下:
总的来说,应用层决定数据发送的内容;表示层负责转化数据格式;会话层负责选择连接方式;传输层负责确定连接;网络层负责地址管理和路由选择;数据链路层负责互连设备之间的数据传输;物理层以电信号来传输数据。
2.1 应用层
应用层处于OSI七层模型的最顶层,也是面向用户(或者说程序)的,比如发送一封邮件。
A主机给B主机发送一封邮件,“输入邮件内容和收件者”就是应用层的操作,在用户点击发送邮件后,就进入了应用层的协议处理,应用层协议会在传输的数据前端加上一个首部信息,这个首部信息中表明了信息内容以及收件人。
应用层的主要任务就是规定传输的信息以及传输的目的地,A主机中经过应用层协议处理的信息会发往下一层(表示层)在经过每层的协议处理之后通过通信线路发送至B主机,B主机收到信息之后会逐层解析,最后到达B的应用层,经过应用层解析后就收到了A发送的信息。
2.2 表示层
主机A向主机B发送邮件,邮件内容的数据格式是由A中邮件软件决定的,如果B使用的邮件软件和A一样,那数据直接传过去就可以正常解析了,但是如果A、B使用的软件不一样时,A发送的格式B是直接解析不出来的。
表示层就是解决这种问题的,表示层将A的数据格式转换成网络中通用的标准数据格式,B接收后,在B的表示层将网络中通用的标准数据格式转换成B的数据格式。由于数据被转换为标准的格式后再进行处理使得异构的机型之间也能保持数据的一致性。
表示层是进行统一的网络数据格式与某一计算机特有的数据格式之间转化的分层,表示层之间为了标识编码格式也会添加首部信息,然后将数据交给下一层处理。
2.3 会话层
会话层已经将通信的数据格式转换为网络中通用的标准数据格式,如果A给B写了10封邮件,那这十封邮件是一件一件发送到B还是一次性发送到B?这就涉及到A、B之间建立的连接方式了,A、B可以建立一次长连接来发送这10封邮件,也可以给每一封邮件建立一次短连接。
会话层决定采用何种连接方法来连接A、B,会话层也会在从表示层收到的数据中添加首部信息,再转发给下一层,首部信息中记录着数据传输的信息。
2.4 传输层
上面提到的三个层都是在主机内处理信息,为信息的发送做准备,传输层以下就是真正负责在网络中传输数据的部分了。
A、B之间要交流肯定得建立连接吧,传输层就是决定连接的建立和断开的,比如TCP就是传输层协议,TCP保证了数据传输的可靠性,也就是TCP可以建立稳定的连接。
传输层为了确保所传输的数据到达目的地,会在通信俩端的主机之间进行确认,如果数据没有到达,会重新发送,传输层也会在数据附加首部来识别这一层的数据。
2.5 网络层
网络层的作用是在网络与网络相互连接的环境中,将数据从发送端主机发送到接收端主机,要知道在发送端与接收端之间有很多条传输链路可以走,如何选择最优路径进行传输而又能够准确将信息传到接收端,这就需要网络层的协助了。
在实际传输数据时,目的地址很重要,目的地址是每个设备在网络中的唯一地址,最终数据传输的终点就是这个目的地址。
网络层负责将数据发送至最终的目的地址,所以有了目的地址和网络层的发送处理,就可以将数据发送至实际上任意一台互联设备了,网络层也会数据附加首部来识别这一层的数据。
2.6 数据链路层与物理层
通信的实际传输是通过传输媒介实现的,数据链路层就是在通过传输介质互联的设备中进行数据处理。
物理层中,将数据的0、1转换为电压和脉冲传输给物理的传输介质,而相互直连的设备之间使用地址实现传输。这种地址被称为MAC地址,也可以称为物理地址或者硬件设备。采用MAC地址,目的是为了识别连接到同一个传输介质上的设备。因此,在这一层将包含MAC地址信息的首部附加到从网络层转发的数据上,将其发送到网络。
网络层与数据链路层都是基于目标地址将数据发送给接收端的,但事实网络层负责将整个数据发送给最终目标地址,而数据链路层只负责发送一个分段内的数据。
在数据发送过程中给,经由路由器转发的信息的传输也涉及到网络层和数据链路层。
2.7 接收端的处理
在接收端的处理与发送端的处理恰恰相反,从物理层开始逐层解析收到的数据,最终将发送的数据有效内容显示在应用层上。
OSI网络参考模型学习的更多相关文章
- TCP/IP协议原理与应用笔记01:OSI网络参考模型
1.OSI参考模型 第7层应用层:直接对应用程序提供服务,应用程序可以变化,但要包括电子消息传输 第6层表示层:格式化数据,以便为应用程序提供通用接口.这可以包括加密服务 第5层会话层:在两个 ...
- ISO/OSI七层网络参考模型、TCP/IP四层网络模型和教学五层网络模型
一.说明 直接的原因是昨晚<计算机网络(自顶向下方法)>到货了,以为能讲得有些不一样,但看完整本也就是老调地讲过来讲应用层.传输层.网络层.网络接口层.感觉比之谢希仁的<计算机网络& ...
- OSI 网络七层模型(笔记)
一直以来我们都在使用着互联网,每天聊着qq,上着淘宝,但是却不了解怎么运行的呢,充满了好奇.今天同过了解来总结一下OSI网络七层模型: 上一张图 OSI (open system interconne ...
- ISO/OSI网络体系结构和TCP/IP协议模型
1. ISO/OSI的参考模型共有7层,由低层至高层分别为:物理层.数据链路层.网络层.传输层.会话层.表示层. 应用层.各层功能分别为: (1)物理层 提供建立.维护和拆除 ...
- OSI网络体系结构
为把在一个网络结构下开发的系统与在另一个网络结构下开发的系统互连起来,以实现更高一级的应用,使异种机之间的通信成为可能,便于网络结构标准化,国际标准化组织(ISO)于1983年形成了开放系统互连基本参 ...
- 转 网络编程学习笔记一:Socket编程
题外话 前几天和朋友聊天,朋友问我怎么最近不写博客了,一个是因为最近在忙着公司使用的一些控件的开发,浏览器兼容性搞死人:但主要是因为这段时间一直在看html5的东西,看到web socket时觉得很有 ...
- 【计算机网络】ISO/OSI 网络体系结构
ISO/OSI 网络体系结构 计算机网络是相当复杂的系统,相互通信的两个计算机系统必须高度协调才能正常工作.为了设计这样复杂的计算机网络,人们提出了将网络分层的方法.分层可将庞大而复杂的问题转换为若干 ...
- 计算机的网络参考模型与5G协议
计算机的网络参考模型与5G协议 1 分层思想 2 OSI参考模型 3 TCP/IP 协议族的组成 4 数据的封装与解封 5 层间通讯过程 6 空口协议 1.喝可乐的人不一定知道其生产的过 ...
- 网络知识学习2---(IP地址、子网掩码)(学习还不深入,待完善)
紧接着:网络知识学习1 1.IP地址 IP包头的结构如图 A.B.C网络类别的IP地址范围(图表) A.B.C不同的分配网络数和主机的方式(A是前8个IP地址代表网络,后24个代表主机:B是16 ...
随机推荐
- WPF项目升级sqlite-net-pcl时遇到Library e_sqlite3 not found的问题解决办法记录
项目中为了方便的存储本地数据,使用了SQLite数据库作为数据存储,再设计时DB.models引用了sqlite-net-pcl,那么项目再升级sqlite-net-pc 1.7.335l版本后后,遇 ...
- 解决ionic5多个模态关闭一个其他不显示的问题
ionic5 modal使用过程中,在模态窗中打开另外一个模态窗,浏览器中显示正常,但是andorid8系统真机调试时,关闭最上层模态窗,上级模态窗DOM中存在,但是不显示. 原因是android版本 ...
- 「AGC034E」 Complete Compress
「AGC034E」 Complete Compress 显然可以枚举根. 然后把某两棵棋子同时往深度浅的方向提,即对不存在祖先关系的两个棋子进行操作. 如果能到达那么就更新答案. 问题转化为如何判定能 ...
- 详解Spring中Bean的作用域与生命周期
摘要:在利用Spring进行IOC配置时,关于bean的配置和使用一直都是比较重要的一部分,同时如何合理的使用和创建bean对象,也是小伙伴们在学习和使用Spring时需要注意的部分,所以这一篇文章我 ...
- css列表属性和样式控制
如下图是360浏览器主页的内容,上边有导航,下边是新闻列表,这种布局很常见,今天就来学习css列表属性之后并制作它. 列表属性 html有三种类型的列表:无序列表,有序列表和自定义列表.设置列表标记有 ...
- 【学习笔记】Github的使用
在github上上传项目代码 在github官网上新建自己的仓库,需要写好标题和说明文件,然后复制自己的仓库地址 在要上传到的本地project中右键, Git bash here,接着输入 git ...
- Java8 DateTime API
Java 8的日期/时间API,有篇不错的文章,直接转载 原文链接: journaldev 翻译: ImportNew.com- Justin Wu译文链接: http://www.importnew ...
- 【NOIP2007】Hanoi双塔问题
题目描述 给定A.B.C三根足够长的细柱,在A柱上放有2n个中间有孔的圆盘,共有n个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的(下图为n=3的情形). 现要将这些圆盘移到C柱上 ...
- fiddler抓取手机模拟器数据
引自:https://blog.csdn.net/lengdaochuqiao/article/details/88170522 1.下载最新版fiddler ,强烈建议在官网下载:https://w ...
- Flask 之db 配置坑
文件 .flaskenv中 DATABASE_URI = 'mysql://username:password@server/db' flask db init 报错 ImportError: No ...