计算机网络基础之OSI参考模型

                       作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.OSI参考模型

OSI是Open System Interconnection的缩写,意为开放式系统互联。

国际化标准组织(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架。

OSI模型把网络通信的工作分为7层,分别是物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。

1>.物理层

  OSI模型的最低层或第一层,该层包括物理连网媒介,如电缆连线连接器。物理层的协议产生并检测电压以便发送和接收携带数据的信号。在你的桌面PC上插入网络接口卡,你就建立了计算机连网的基础。换言之,你提供了一个物理层。尽管物理层不提供纠错服务,但它能够设定数据传输速率并监测数据出错率。网络物理问题,如电线断开,将影响物理层。

  用户要传递信息就要利用一些物理媒体,如双绞线、同轴电缆等,但具体的物理媒体并不在OSI的7层之内,有人把物理媒体当做第0层,物理层的任务就是为它的上一层提供一个物理连接,以及它们的机械、电气、功能和过程特性。如规定使用电缆和接头的类型、传送信号的电压等。在这一层,数据还没有被组织,仅作为原始的位流或电气电压处理,单位是比特(bit)。

  简而言之,物理层定义了电器规范,设备规范,物理接口等,电信号的变化,或数字信号变化,单位是比特。

  示例:中继器,集线器(HUB),RJ-45标准等。

2>. 数据链路层

    OSI模型的第二层,它控制网络层与物理层之间的通信。它的主要功能是如何在不可靠的物理线路上进行数据的可靠传递。为了保证传输,从网络层接收到的数据被分割成特定的可被物理层传输的帧。帧是用来移动数据的结构包,它不仅包括原始数据,还包括发送方和接收方的网络地址以及纠错和控制信息。其中的地址确定了帧将发送到何处,而纠错和控制信息则确保帧无差错到达。 如果在传送数据时,接收点检测到所传数据中有差错,就要通知发送方重发这一帧。

  数据链路层的功能独立于网络和它的节点和所采用的物理层类型,它也不关心是否正在运行 Word 、Excel 或使用Internet 。有一些连接设备,如交换机,由于它们要对帧解码并使用帧信息将数据发送到正确的接收方,所以它们是工作在数据链路层的。

  简而言之,链路层将比特组织成帧(Frame),即对字节进行定义,支持错误检查(CRC)。使用物理地址即MAC地址。MAC有48位,前24位由美国的电器和电子工程师协会IEEE分配,后24位是各厂商的设备序号。

  示例:网卡,网桥,二层交换机。

3>.网络层

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

  网络层通过综合考虑发送优先权、网络拥塞程度、服务质量以及可选路由的花费来决定从一个网络中节点A到另一个网络中节点B的最佳路径。由于网络层处理路由,而路由器因为即连接网络各段,并智能指导数据传送,属于网络层。在网络中,“路由”是基于编址方案、使用模式以及可达性来指引数据的发送。

  简而言之,网络层将帧(Frame)组织成包(Packet),包传递的路径选择(路由),将包传输到目标地址。使用逻辑地址即IP地址。
  
  示例:路由器,多层交换机,防火墙,IP,IPX,RIP,OSPF,ARP,ICMP,IPsec,netbeui,appletalk等。

4>.传输层

  OSI模型中最重要的一层。传输协议同时进行流量控制或是基于接收方可接收数据的快慢程度规定适当的发送速率。除此之外,传输层按照网络能处理的最大尺寸将较长的数据包进行强制分割。例如,以太网无法接收大于1500字节的数据包。发送方节点的传输层将数据分割成较小的数据片,同时对每一数据片安排一序列号,以便数据到达接收方节点的传输层时,能以正确的顺序重组。该过程即被称为排序。

  工作在传输层的一种服务是TCP/IP协议套中的TCP(传输控制协议),另一项传输层服务是IPX/SPX协议集的SPX(序列包交换)。

  简而言之,传输层解决传输问题,确保数据传输的可靠性;建立,维护,终止虚拟电路;错误检查和恢复。

  示例:TCP,UDP,SPX,TLS, DCCP,SCTP,RSVP,PPTP,进程,端口(socket)。

5>.会话层

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

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

  简而言之,会话层负责通信管理,负责建立和断开通信连接(数据流动的逻辑通路),即会话。

  示例:服务器验证用户登录,断点续传等。

6>.表示层

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

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

  简而言之,表示层对应用数据格式化,加密解密,压缩解压缩等。将上层数据转换为适合网络传输的格式,或将下层数据转换成上层能够处理的数据。

  示例:URL加密,口令加密,图片编码解码,RPC等。

7>. 应用层

  负责对软件提供接口以使程序能使用网络服务。术语“应用层”并不是指运行在网络上的某个特别应用程序 ,应用层提供的服务包括文件传输、文件管理以及电子邮件的信息处理。

  简而言之,应用层为应用程序提供网络服务接口,用户使用的时候并不关心会话如何建立保持,也不关心协议的协商是否加密等。

  示例:Telnet,FTP,HTTP,SNMP,DNS等

二.OSI七层工作原理 

一.OSI七层模型发音
  "all peopel seem to need process data"  这句话的首字母就是对应OSI七层模型的首字母。
    Application layer:应用层,音标为: [ˌæplɪˈkeɪʃn ˈleɪə(r)]
    Presentation layer:表示层,音标为: [ˌpreznˈteɪʃn ˈleɪə(r)]
    Session layer:会话层,音标为: [ˈseʃn ˈleɪə(r)]
    Transport layer:传输层,音标为:[ˈtrænspɔːt ˈleɪə(r)]
    network layer:网络层,音标为: [ˈnetwɜːk ˈleɪə(r)]
    data link layer:数据链路层,音标为:[ˈdeɪtə lɪŋk ˈleɪə(r)]
    physical layer:物理层,音标为: [ˈfɪzɪkl ˈleɪə(r)] 二.OSI工作原理
  如下图所示,数据在一端发送到另一端,需要层层封装对应的数据报文头部,需要注意的是,在数据链路层不仅仅添加了报文头部还在数据的尾部添加CRC校验位。
  
  在发送端发送数据之前,数据链路层会将原始数据及其上面各层添加的报文信息使用CRC校验算法并将计算的结果和原始数据一起保存发送,接收端同样使用CRC算法再次校验,将校验的结果和原始数据一起发送过来的CRC结果进行对比,如果一致说明数据接收正确无误,如果不一致说明接收的数据被损坏。   循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。 三.温馨提示
  OSI模型中下层协议要为上层协议提供服务。表现为下层协议是有上层协议的标识的。后面我们会详细介绍。

三.PDU(Protocol Data Unit)

PDU:
全称为:"Protocol Data Unit",协议数据单元是指对等层次之间传递的数据单位,各层的PDU如下所示:
  物理层的PDU是数据位 bit
  数据链路层的PDU是数据帧 frame
  网络层的PDU是数据包 packet
  传输层的PDU是数据段 segment
  其他更高层次的PDU是消息 message

四.Ethernet Frame结构

  虽说802.3ae是以太网的官方标准,但并不是事实标准,我们事实上使用的是以太网二代标准("Ethernet 2"),即在802.3ae基础之上往外的下一个版本。现在可以以太网传输速度可达到10Gb/s,也就是我们平时所说的万兆网卡。 

  如下图所示:
    以太网是工作在物理层和数据链路层,上层是网络层。它认为上层的网络没有别的协议,只有一种网络层协议,事实上网络层协议有很多种。
    早期为什么认为网络层协议只有一种协议呢?因为早期的局域网它的霸主地位是一家叫"novell"公司,它们用的是自研的操作系统叫做"netware",当时它们用的协议是IPX/SPX协议,而IPX是网络层协议,而SPX是传输层协议。也就意味着当时99%以上的网络全都是novell公司网络,因此它不需要支持上层有别的协议。因此这家公司认为以太网上层只有一种协议,即IPX协议。因此"IEEE 802.3"标准的帧结构如下图所示(黄色部分)
      Peramble:
        前导信息,表示帧的开始,占用7个字节。
      SOF:
        帧的分界符,即Start-of-Frame Delimiter,占用1个字节。
      Destination Address:
        目标MAC地址,占用6个字节。
      Source Address:
        源MAC地址,占用6个字节
      Length:
        规定数据报文的总长度,占用2个字节。
      802.2 Header and Data:
        头部信息以及数据,占用46-1500个字节。
      FCS:
        帧的检测序列,也就是我们所说的校验位。即Frame Check Sequence,占用4个字节。
    如上所述,在IEEE .3定制的标准并不符合实际生产环境,原因就是未指明以太网上层协议,可能当时IEEE组织使用的也是"novell"公司的操作系统"netware"吧,默认使用的就是"IPX"网络协议。因此它们在定制标准时压根就没有考虑到以太网上层是否会有多种网络协议,认为只有一组中IPX协议,而现在IPX协议已经没落了。
    当然,我们都知道IEEE在2002年采用了由DIX三家公司在1982年研发的以太网一代产品而定制的标准。不过不幸的是,这个标准出来后并没有得到广泛应用,因此实际生产环境中我们使用的是以太网二代模型,以太网二代帧结构如下图所示(蓝色部分)。
    以太网二代和以太网一代(IEEE 802.3)不同的是:
      Peramble:
        前导信息,表示帧的开始,占用8个字节。它把IEEE .3标准(以太网一代)里的Preamble和SOF合并啦~
      Destination Address:
        目标MAC地址,占用6个字节。
      Source Address:
        源MAC地址,占用6个字节
      Type:
        规定上层数据报文类型,占用2个字节,即可以表示65535种状态。
      802.2 Header and Data:
        头部信息(包括网络层/传输层/会话层/表示层头部信息)以及数据,占用46-1500个字节。
      FCS:
        帧的检测序列,也就是我们常说的校验位。即Frame Check Sequence,占用4个字节。
    好了,我们了解了Ethernet二代和IEEE 802.3之后,我们知道Ethernet二代一个帧的最大存储数据范围为"72-1526",抛去"Peramble"和"FCS"所占用的12个字节才是实际对我们可用的存储范围,即"60-1514"。这个范围就是我们平时用的各种抓包软件(如wireshark,tcpdump等)只保留了"60-1514"这段范围的数据。

六.MAC地址

MAC有48位,前24位由美国的电器和电子工程师协会IEEE分配,后24位是各厂商的设备序号。
OUI:
  组织唯一标识,即对厂家的唯一标识。 Vendor Assigned:
  生产常见给某个设备分配的唯一编号。

七.冲突检测的载波侦听多路访问(CSMA/CD) 

  以前10Mb/s的以太网实现帧数据传输方式就是基于"冲突检测的载波侦听多路访问CSMA/CD"的,和我们现在10000Mb/s的速度相比,这种算法已经淘汰掉了 ,但我们可用作为了解。

  如下图所示,分为4个阶段:
    Carrier Sense:
      载波侦听,可用查看此时是否有人发送数据,类似于总线型拓扑。
    Muitiple Access:
      多路访问,有可能2个节点同时使用总线。
    Collision:
      冲突,由于多个节点访问使用总线,因此会产生冲突。
    Collision Detection(Backoff Algorithm):
      冲突检测,由于上面的阶段产生冲突,因此这个步骤得将之前的操作撤销,并生成一个随机时间(可能是纳秒级别)重新发送数据。   我们现在用的1000Mb/s,10000Mb/s的以太网根本就不用这种算法,我们现在使用的通信机制已经完全不同了,只不过我们还是在继续使用"以太网"这个名称而已。

计算机网络基础之OSI参考模型的更多相关文章

  1. 第1章 1.7计算机网络概述--理解OSI参考模型分层思想

    OSI七层模型,知识参考理论. 分层标准的好处: 1.不同的硬件生产商生产的硬件产品,连通后就可以用了,有助于互联网发展. 2.分层,分成不同的模块,某一层的变化,不会影响其他层.如:IPv4改为IP ...

  2. 计算机网络基础知识-OSI七层协议模型

    一.物理层 物理层主要规定了物理设备的标准,如网线的类型.光纤的接口类型.各种传输介质的传输速率,物理层的数据以比特流(二进制)的形式存在,传输时将比特流转化为电流强弱,达到目的地之后再转化为比特流. ...

  3. 计算机网络基础——OSI七层网络模型

    计算机网络基础——OSI七层网络模型 OSI的是什么: 开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),简称 ...

  4. 网络基础——OSI参考模型

    一.OSI/ISO/IOS傻傻分不清楚 ISO 国际标准化组织(International Organization for Standardization)简称ISO,是一个全球性的非政府组织,是国 ...

  5. OSI参考模型---网络基础篇(1)

    什么是网络 网络就是将分布在不同地理位置,具有独立功能的终端(一切联网的设备都叫终端:例如电脑,手机,智能家电等等联网的设备),通过通信线路(双绞线.光纤.电话线等等)和通信设备(例如:交换机.路由器 ...

  6. 第1章 1.8计算机网络概述--OSI参考模型和网络排错

    OSI参考模型的网络排错: 每一层都为上一层提供服务. 如果网络出故障了,应该从底层向高层一层一层的查. OSI参考模型排错指导:(排错原则:自下而上.终极大招ping命令) 1.物理层故障: ①查看 ...

  7. 第1章 1.6计算机网络概述--OSI参考模型

    ISO七层模式:国际标准组织对互联网通信规则进行的定义. 7.应用层:所有能产生网络流量的程序,如:QQ. 6.表示层:传输前对数据进行进行处理,是一种数据处理的规则,如:加密.压缩.传输二进制(图片 ...

  8. 计算机网络OSI参考模型与tcp/ip四层模型

    OSI参考模型--7层 1层物理层:主要定义物理设备标准,如网线的接口类型.光线的接口类型.各种传输介质的传输速率等.它的主要作用是传输比特流(就是由1.0转化为电流强弱来进行传输,到达目的地后在转化 ...

  9. 计算机网络中OSI参考模型

    OSI参考模型 应用层 包括所有能产生网络流量的程序 DNS属于这一层 表示层 用来判断传输之前是否进行加密或压缩处理(二进制.ASCII) 比如出现乱码情况,可能就是表示层的问题 会话层 一个浏览器 ...

随机推荐

  1. Superset配置mysql数据源

    1.添加mysql数据源 测试连接的时候遇到 No module named 'MySQLdb'" 安装mysqlclient pip install mysqlclient 如果遇到 ER ...

  2. 第一本docker书 学习笔记(二)

    #安装docker的先决条件 运行64位CPU构架的计算机(docker目前不支持32位的cpu) 运行LUFSinux3.8或者更高版本内核 内核必须支持一种合适的存储驱动,例如: device M ...

  3. java自定义jar包让jemeter使用

    背景:可能在做定义化的要求上,jmeter原有的jar包,已经不能满足我们,就需要自己写一个方法,以下就是写入的一个模拟post的请求,在jmeter中使用的案例 一:写代码 1.代码中的有两个包,原 ...

  4. maven更改本地的maven私服

    1.今天想升级一个服务的jar包,更改后 使用命令 mvn deploy -e 一直报错, 看错误信息是  私服地址不是公司现在的地址. 想了半天,原来是电脑一直配置的上家公司的私服地址.. 但是在哪 ...

  5. 【linux基础】如何配置ubuntu系统为静态IP地址

    前言 连接远程server重启的时候发现IP发生变化,影响远程连接,此时,需要将server配置为静态IP. 系统环境 ubuntu16.04 操作过程 1. 设置IP和DNS command sud ...

  6. Fiddler抓包工具的简单使用

    Fiddler的官方网站:http://www.fiddler2.com Fiddler的官方帮助:http://docs.telerik.com/fiddler/knowledgebase/quic ...

  7. linux vi/vim 编辑器学习总结

    linux vi/vim 编辑器学习总结 很多时候我们开发人员不可避免的会涉及到项目部署,这个时候使用的就不是我们所熟知的 Windows 和 Mac OS 操作系统了,而是类 Unix 系统.项目部 ...

  8. RWMutex:共享/专有的递归互斥锁

    具有共享/独占访问权限,且具有升级/降级功能的互斥锁 介绍 我的目标是创建可以充当读/写锁定机制的对象.任何线程都可以锁定它以进行读取,但是只有一个线程可以锁定它以进行写入.在写入线程释放它之前,所有 ...

  9. python 开机 定时启动

    Windows开机自动运行.py文件1.找到写好的.py文件,例如我的.py文件路径:D:\编程测试文件\untitled\03131105.py 2.选中文件03131105.py,右键——属性—— ...

  10. LeetCode 5214. 最长定差子序列(Java)HashMap

    题目: 5214. 最长定差子序列 给你一个整数数组 arr 和一个整数 difference,请你找出 arr 中所有相邻元素之间的差等于给定 difference 的等差子序列,并返回其中最长的等 ...