1、简介

  什么是OSI模型呢?

  OSI模型全名Open System InterConnect 即开放式系统互联,是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络的标准框架,简称OSI。

  计算机通讯需要用到必要的软件支持,它就是计算机网络参考模型(即计算机网络软件),最经典的就是我们所要讲解的OSI模型。它是通过一个机器上的一个应用进程与另一个机器上的进程进行信息交互。

2、OSI七层模型解析

  OSI(Open System Interconnection,开放式系统互连)参考模型是一个逻辑上的定义,一个规范,它把网络从逻辑上分为了7层。每一层都有相关、相对应的物理设备,比如路由器,交换机。建立七层模型的主要目的是为解决异种网络互连时所遇到的兼容性问题。它的最大优点是将服务、接口和协议这三个概念明确地区分开来:服务说明某一层为上一层提供一些什么功能,接口说明上一层如何使用下层的服务,而协议涉及如何实现本层的服务;这样各层之间具有很强的独立性,互连网络中各实体采用什么样的协议是没有限制的,只要向上提供相同的服务并且不改变相邻层的接口就可以了。

【此图来自http://www.cnblogs.com/fuchongjundream/p/3914236.html】

  2.1、物理层

  在OSI参考模型中,物理层(Physical Layer)是参考模型的最低层,也是OSI模型的第一层。

  物理层的主要功能是:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异。使其上面的数据链路层不必考虑网络的具体传输介质是什么。“透明传送比特流”表示经实际电路传送后的比特流没有发生变化。

  物理层的任务就是为它的上一层提供一个物理连接,以及它们的机械、电气、功能和规程特性。如规定使用电缆和接头的类型、传送信号的电压等。在这一层,数据还没有被组织,仅作为原始的位流或电气电压处理,单位是bit。

  【我称物理层为苦逼的搬运工:它的主要作用是传输比特流,外面来比特流就将它传给数据链路层、数据链路层来比特流就将它传到外边去(比特流:就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的模数转换与数模转换)

  2.2、数据链路层

  数据链路层(Datalink Layer)是OSI参考模型的第二层。

  它控制网络层与物理层之间的通信,是一个桥梁。它的主要功能是如何在不可靠的物理线路上进行数据的可靠传递

  为了保证传输,从网络层接收到的数据被分割成特定的可被物理层传输的帧

  帧是用来移动数据的结构包,它包括:原始数据;发送方、接收方的物理地址(确定了帧将发送到何处);纠错和控制信息(确保帧无差错到达)

  如果在传送数据时,接收点检测到所传数据中有差错,就要通知发送方重发这一帧。

  数据链路层的功能独立于网络和它的节点和所采用的物理层类型,它也不关心是否正在运行 Wo r d 、E x c e l 或使用I n t e r n e t 。有一些连接设备,如交换机,由于它们要对帧解码并使用帧信息将数据发送到正确的接收方,所以它们是工作在数据链路层的。数据链路层(DataLinkLayer):在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的传输,并进行各电路上的动作系列。数据链路层在不可靠的物理介质上提供可靠的传输。

  该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。

  【我称数据链路层为中间沟通人:主要任务桥梁(分割、传递、监控。。。)

  2.3、网络层

  网络层(Network Layer)是OSI参考模型的第三层。(即NDIS)

  其主要功能是将网络地址翻译成对应的物理地址,并决定如何将数据从发送方路由到接收方。

  网络层通过综合考虑发送优先权、网络拥塞程度、服务质量以及可选路由的花费来决定从一个网络中节点A 到另一个网络中节点B 的最佳路径。
  由于网络层处理,并智能指导数据传送,路由器连接网络各段,所以路由器属于网络层。网络负责在源机器和目标机器之间建立它们所使用的路由。这一层本身没有任何错误检测和修正机制,因此,网络层必须依赖于端端之间的由DLL提供的可靠传输服务。
     简单的来说就是在网络中找到一条路径,一段一段地传送,由于数据链路层保证两点之间的数据是正确的,因此源到目的地的数据也是正确的,这样一台机器上的信息就能传到另外一台了。但计算机网络的最终用户不是主机,而是主机上的某个应用进程。这个过程由传输层实现。
  【想不到它的角色是啥了】

  2.4、传输层

  传输层(Transport Layer)是OSI参考模型的第四层。(即TCP)
  传输协议同时进行流量控制或是基于接收方可接收数据的快慢程度规定适当的发送速率。除此之外,传输层按照网络能处理的最大尺寸将较长的数据包进行强制分割(标记整理成有序的包)
  例如,以太网无法接收大于1500字节(Byte)的数据包。发送方节点的传输层将数据分割成较小的数据片,同时对每一数据片安排一序列号,以便数据到达接收方节点的传输层时,能以正确的顺序重组。该过程即被称为排序。工作在传输层的一种服务是TCP/IP协议套中的TCP(传输控制协议),另一项传输层服务是IPX/SPX协议集的SPX(序列包交换)。
      网络层交给传输层后,传输层必需标识了服务是哪个进程请求的,要交给谁的问题。我把东西交你时,希望通知你一下,就是会话层的工作。
  【我称运输层为项目总指挥:主要任务为将大项目分割并标识为有序的小项目、规定项目完成速率。。。

  2.5、会话层

  会话层(Session Layer)是OSI参考模型的第五层。(即SPI)

  负责在网络中的两节点之间建立、维持和终止通信。

   会话层的功能包括:建立通信链接,保持会话过程通信链接的畅通,同步两个节点之间的对话,决定通信是否被中断以及通信中断时决定从何处重新发送。

  你可能常常听到有人把会话层称作网络通信的“交通警察”。当通过拨号向你的 I S P (因特网服务提供商)请求连接到因特网时,I S P 服务器上的会话层向你与你的P C 客户机上的会话层进行协商连接。若你的电话线偶然从墙上插孔脱落时,你终端机上的会话层将检测到连接中断并重新发起连接。会话层通过决定节点通信的优先级和通信时间的长短来设置通信期限。

  SPI是服务提供者接口,管理用户间的会话和对话;控制用户间的连接和挂断连接;报告上层错误

  两个人对话,我和你说话,你耳朵听到了也能理解,但如果对方是外国人,他听到了我的声音,他理解了吗?他不能理解。那对于计算机网络来言,客户机发了一个请求给服务器,服务器应该能理解这个请求到底是什么,所以接下去的问题是你怎么样理解?这个理解有两个层次,我讲中国话,他只能懂英文,那么这当中应该有一个翻译。把汉语翻译成英语,这样的工作就交给下一层表示层来做了。

  2.6、表示层

  表示层(Presentation Layer)是OSI参考模型中的第六层。(API)

  是应用程序和网络之间的翻译官,在表示层,数据将按照网络能理解的方案进行格式化;这种格式化也因所使用网络的类型不同而不同。表示层管理数据的解密与加密。

  如系统口令的处理。例如:在Internet上查询你银行账户,使用的即是一种安全连接。你的账户数据在发送前被加密,在网络的另一端,表示将对接收到的数据解密。除此之外,表示层协议还对图片和文件格式信息进行解码和编码。

  它为应用程序提供接口。API负责SPI与应用程序之间的通信;定义不同体系间不同数据格式;具体说明独立结构的数据传输格式;编码和解码数据;加密和解密数据;压缩和解压缩数据。

  2.7、应用层

  应用层(Application Layer)是OSI参考模型中的最高层,即第七层。

  它为应用程序提供服务以保证通信,但不是进行通信的应用程序本身。应用层直接和应用程序接口并提供常见的网络应用服务。应用层也向表示层发出请求。是开放系统的最高层,是直接为应用进程提供服务的。其作用是在实现多个系统应用进程相互通信的同时,完成一系列业务处理所需的服务。其服务元素分为两类:公共应用服务元素CASE和特定应用服务元素SASE。CASE提供最基本的服务,它成为应用层中任何用户和任何服务元素的用户,主要为应用进程通信,分布系统实现提供基本的控制机制;特定服务SASE则要满足一些特定服务,如文卷传送,访问管理,作业传送,银行事务,订单输入等。这些将涉及到虚拟终端,作业传送与操作,文卷传送及访问管理,远程数据库访问,图形核心系统,开放系统互连管理等等。

  小结:

  • 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的模数转换与数模转换)。这一层的数据叫做比特。   
  • 数据链路层:主要将从物理层接收的数据进行MAC地址(网卡的地址)的封装与解封装。常把这一层的数据叫做帧。在这一层工作的设备是交换机,数据通过交换机来传输。
  • 网络层:主要将从下层接收到的数据进行IP地址(例192.168.0.1)的封装与解封装。在这一层工作的设备是路由器,常把这一层的数据叫做数据包。
  • 传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。 主要是将从下层接收的数据进行分段进行传输,到达目的地址后在进行重组。常常把这一层数据叫做段。   
  • 会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)
  • 表示层:主要是进行对接收的数据进行解释、加密与解密、压缩与解压缩等(也就是把计算机能够识别的东西转换成人能够能识别的东西(如图片、声音等))   
  • 应用层 主要是一些终端的应用,比如说FTP(各种文件下载),WEB(IE浏览),QQ之类的(你就把它理解成我们在电脑屏幕上可以看到的东西.就 是终端应用)。

3、发邮件例子

  机A向主机B发送数据,该数据的产生肯定是一个应用层的程序产生的,如IE浏览器或者Email的客户端等等。这些程序在应用层需要有不同的接口,IE是浏览网页的使用HTTP协议,那么HTTP应用层为浏览网页的软件留下的网络接口。Email客户端使用smtp和pop3 协议来收发电子邮件,所以smtp和pop3就是应用层为电子邮件的软件留下的接口。

  实例:

1、应用层

  我们假设A向B发送了一封电子邮件,因此主机A会使用smtp协议来处理该数据,即在数据前加上SMTP的标记,以便使对端在收到后知道使用什么软件来处理该数据。

2、表示层

  应用层将数据处理完成后会交给表示层,表示层会进行必要的格式转换,使用一种通信双方都能识别的编码来处理该数据。

  同时将处理数据的方法添加在数据中,以便对端知道怎样处理数据。

3、会话层

  表示层处理完成后,将数据交给会话层,会话层会在A主机和B主机之间建立一条只用于传输该数据的会话通道,并监视它的连接状态,直到数据同步完成,断开该会话。

  注意:A和B之间可以同时有多条会话通道出现,但每一条都和其他的不能混淆。会话层的作用就是有办法来区别不同的会话通道。

4、传输层

  会话通道建立后,为了保证数据传输中的可靠性,就需要在数据传输的构成当中对数据进行不要的处理,如分段,编号,差错校验,确认、重传等等。

  这些方法的实现必须依赖通信双方的控制,传输层的作用就是在通信双方之间利用上面的会话通道传输控制信息,完成数据的可靠传输。

5、网络层

  网络层是实际传输数据的层次,在网络层中必须要将传输层中处理完成的数据再次封装,添加上自己的地址信息和对端接受者的地址信息,并且要在网络中找到一条由自己到接收者最好的路径。然后按照最佳路径发送到网络中。

6、数据链路层

  数据链路层将网络层的数据再次进行封装,该层会添加能唯一标识每台设备的地址信息(MAC地址),是这个数据在相邻的两个设备之间一段一段的传输。最终到达目的地。

7、物理层

  物理层将数据链路层的数据转换成电流传输的物理线路。

  通过物理线路传递的B主机后,B主机会将电信号转换成数据链路层的数据,数据链路层再去掉本层的硬件地址信息和其他的对端添加的内容上交给网络层,网络层同样去掉对端网络层添加的内容后上交给自己的上层。最终数据到达B主机的应用层,应用层看到数据使用smtp协议封装,就知道应用电子邮件的软件来处理。

4、参考文献

1. 《通讯原理之OSI七层参考模型(一)

2. 《OSI七层模型简介

3. 《计算机网络--OSI模型中的通信过程

(以上是自己的一些见解,若有不足或者错误的地方请各位指出)

作者:那一叶随风   http://www.cnblogs.com/phpstudy2015-6/

原文地址:http://www.cnblogs.com/phpstudy2015-6/p/6801886.html

声明:只代表本人在工作学习中某一时间内总结的观点或结论。转载时请在文章页面明显位置给出原文链接

OSI七层模型学习笔记的更多相关文章

  1. OSI七层模型 学习摘要

    OSI参考模型是计算机网路体系结构发展的产物.它的基本内容是开放系统通信功能的分层结构.这个模型把开放系统的通信功能划分为七个层次,从邻接物理媒体的层次开始,分别赋于1,2,……7层的顺序编号,相应地 ...

  2. 【itercast OSI 七层网络模型 学习笔记】Layer 1 物理层

    NIC:网卡(基本上是一层功能) 传输介质:以太网,分有线和无线 开始以太网只有10Mbps的吞吐量,使用的是带有冲突检测的载波侦听多路访问(CSMA/CD,Carrier Sense Multipl ...

  3. OSI 网络七层模型(笔记)

    一直以来我们都在使用着互联网,每天聊着qq,上着淘宝,但是却不了解怎么运行的呢,充满了好奇.今天同过了解来总结一下OSI网络七层模型: 上一张图 OSI (open system interconne ...

  4. 网络基础笔记——OSI七层模型

    OSI七层模型 由于整个网络连接的过程相当复杂,包含硬件.软件数据封包与应用程序的互相链接等等.假设想要写一支将联网所有功能都串连在一块的程序.那么当某个小环节出现故障时,整仅仅程序都须要改写.所以我 ...

  5. OSI七层模型与TCP/IP五层模型

    博主是搞是个FPGA的,一直没有真正的研究过以太网相关的技术,现在终于能静下心学习一下,希望自己能更深入的掌握这项最基本的通信接口技术.下面就开始搞了. 一.OSI参考模型         今天我们先 ...

  6. OSI七层模型详解 TCP/IP协议

      总结 OSI中的层 功能 TCP/IP协议族 应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等 表示层 数据格式化,代码转 ...

  7. python网络编程-OSI七层模型详解

    OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 . 完成中继功能的节点通常称为中继系统.在OSI七层模型中,处于 ...

  8. OSI七层模型

    OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 . 完成中继功能的节点通常称为中继系统.在OSI七层模型中,处于 ...

  9. [转载]OSI七层模型详解

    OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主机实现数据传输 . 完成中继功能的节点通常称为中继系统.在OSI七层模型中,处于 ...

随机推荐

  1. java日期处理函数

    java中获取本年第一天的日期 public static Timestamp getYearFirstDay() { Calendar calendar = Calendar.getInstance ...

  2. java中的对象

    对象                     --计算机语言中的对象 通常,我们可以从一般事物的三个方面,去认识事物: 一.是什么? 二.为什么? 三.怎么样? 接下来,我们也利用这三个方面的思维,去 ...

  3. cuda线程/线程块索引小结

    内建变量: threadIdx(.x/.y/.z代表几维索引):线程所在block中各个维度上的线程号 blockIdx(.x/.y/.z代表几维索引):块所在grid中各个维度上的块号 blockD ...

  4. Linux-ubuntu安装过程讲解

    前言也不准备介绍Linux是什么,为什么要安装ubuntu?相信你能够看到这篇文章也知道自己想要做什么. 一,准备工具 1.VMwareWorkstation虚拟机 下载地址:https://my.v ...

  5. 我的日志文件java logger

    操作读取日志文件, 1.使用默认的日志文件,并验证默认级别 public void originalConfig() { Logger logger = Logger.getLogger(Logger ...

  6. 自适应的tab菜单栏

    代码部分: Css代码:*{ margin:0px; padding:0px; font-size:62.5%;}body{ background-color:#FFFFFF;}.zw-test-ti ...

  7. 如何将多条update语句合并为一条

    需求: 如何将多条update语句合并为一条update语句:如,update table1 set col='2012' where id='2014001'      update table1  ...

  8. 网站建设常用JQuery插件整理

    1.jQuery.lazyload 作用:延迟加载网站图片,常用于电商网站.图片展示网站,对于提高网站打开速度比较有效. 2.Owl Carousel 作用:图片滚动特效.响应式传送带插件,特点是支持 ...

  9. 老李推荐:第5章5节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 获取系统服务引用

    老李推荐:第5章5节<MonkeyRunner源码剖析>Monkey原理分析-启动运行: 获取系统服务引用   上一节我们描述了monkey的命令处理入口函数run是如何调用optionP ...

  10. JavaScript原生Array常用方法

    JavaScript原生Array常用方法 在入门Vue时, 列表渲染一节中提到数组的变异方法, 其中包括push(), pop(), shift(), unshift(), splice(), so ...