• 以太网基础知识


    以太网的网络层次

    以太网采用无源的介质,按广播方式传播信息。它规定了物理层和数据链路层协议,规定了物理层和数据链路层的接口以及数据链路层与更高层的接口。

    物理层

    物理层规定了以太网的基本物理属性,如数据编码、时标、电频等。

    物理层位于OSI参考模型的最底层,它直接面向实际承担数据传输的物理媒体(即通信通道),物理层的传输单位为比特(bit),即一个二进制位(“0”或“1”)。实际的比特传输必须依赖于传输设备和物理媒体,但是,物理层不是指具体的物理设备,也不是指信号传输的物理媒体,而是指在物理媒体之上为上一层(数据链路层)提供一个传输原始比特流的物理连接。

    数据链路层

    数据链路层是OSI参考模型中的第二层,介于物理层和网络层之间。数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源设备网络层转发过来的数据可靠地传输到相邻节点的目的设备网络层。

    由于以太网的物理层和数据链路层是相关的,针对物理层的不同工作模式,需要提供特定的数据链路层来访问。这给设计和应用带来了一些不便。

    为此,一些组织和厂家提出把数据链路层再进行分层,分为媒体接入控制子层(MAC)和逻辑链路控制子层(LLC)。这样不同的物理层对应不同的MAC子层,LLC子层则可以完全独立。如图1所示。

    图1 以太网链路层的分层结构 
     
     
    ————————————————————————

    以太网的线缆标准

    以太网的线缆标准简介

    从以太网诞生到目前为止,成熟应用的以太网物理层标准主要有以下几种:

    • 10BASE-2

    • 10BASE-5

    • 10BASE-T

    • 10BASE-F

    • 100BASE-T4

    • 100BASE-TX

    • 100BASE-FX

    • 1000BASE-SX

    • 1000BASE-LX

    • 1000BASE-TX

    • 10GBASE-T

    • 10GBASE-LR

    • 10GBASE-SR

    在这些标准中,前面的10、100、1000、10G分别代表运行速率,中间的BASE指传输的信号是基带方式。

    • 10兆以太网线缆标准

      10兆以太网线缆标准在IEEE802.3中定义,线缆类型如表1所示。

      表1 10兆以太网线缆标准

      名称

      电缆

      最长有效距离

      10BASE-5

      粗同轴电缆

      500m

      10BASE-2

      细同轴电缆

      200m

      10BASE-T

      双绞线

      100m

      10BASE-F

      光纤

      2000m

       说明:

      同轴电缆的致命缺陷是:电缆上的设备是串连的,单点故障就能导致整个网络崩溃。10BASE-2,10BASE-5是同轴电缆的物理标准,现在已经基本被淘汰。

    • 100兆以太网线缆标准

      100兆以太网又叫快速以太网FE(Fast Ethernet),在数据链路层上跟10M以太网没有区别,仅在物理层上提高了传输的速率。

      快速以太网线缆类型如表2所示。

      表2 快速以太网线缆标准

      名称

      线缆

      最长有效距离

      100Base-T4

      四对三类双绞线

      100m

      100Base-TX

      两对五类双绞线

      100m

      100Base-FX

      单模光纤或多模光纤

      2000m

      10BASE-T和100BASE-TX都是运行在五类双绞线上的以太网标准,所不同的是线路上信号的传输速率不同,10BASE-T只能以10M的速度工作,而100BASE-TX则以100M的速度工作。

      100BASE-T4现在很少使用。

    • 千兆以太网线缆标准

      千兆以太网是对IEEE802.3以太网标准的扩展。在基于以太网协议的基础之上,将快速以太网的传输速率从100Mbit/s提高了10倍,达到了1Gbit/s。千兆以太网线缆标准如表3所示。

      表3 千兆以太网线缆标准

      名称

      线缆

      最长有效距离

      1000Base-LX

      多模光纤和单模光纤

      316m

      1000Base-SX

      多模光纤

      316m

      1000Base-TX

      超5类双绞线或6类双绞线

      100m

      用户可以采用这种技术在原有的快速以太网系统中实现从100Mbit/s到1000Mbit/s的升级。

      千兆以太网物理层使用8B10B编码。在传统的以太网传输技术中,数据链路层把8位数据组提交到物理层,物理层经过适当的变换后发送到物理链路上传输。但变换的结果还是8比特。

      在光纤千兆以太网上,则不是这样。数据链路层把8比特的数据提交给物理层的时候,物理层把这8比特的数据进行映射,变换成10比特发送出去。

    • 万兆以太网线缆标准

      万兆以太网当前使用附加标准IEEE 802.3ae用以说明,将来会合并进IEEE 802.3标准。万兆以太网线缆标准如表4所示。

      表4 万兆以太网线缆标准

      名称

      线缆

      有效传输距离

      10GBASE-T

      CAT-6A或CAT-7

      100m

      10GBase-LR

      单模光纤

      10km

      10GBase-SR

      多模光纤

      几百米

    • 100Gbps以太网线缆标准

      新的40G/100G以太网标准在2010年制定完成,当前使用附加标准IEEE 802.3ba用以说明。随着网络技术的发展,100Gbps以太网在未来会有大规模的应用。

    ----------------------------------------------------------------——————————————————————————————————————————————————

    CSMA/CD

    • CSMA/CD的概念

      根据以太网的最初设计目标,计算机和其他数字设备是通过一条共享的物理线路连接起来的。这样被连接的计算机和数字设备必须采用一种半双工的方式来访问该物理线路,而且还必须有一种冲突检测和避免的机制,以避免多个设备在同一时刻抢占线路的情况,这种机制就是所谓的CSMA/CD(Carrier Sense Multiple Access/Collision Detection)。

      可以从以下三点来理解CSMA/CD:

      • CS:载波侦听

        在发送数据之前进行侦听,以确保线路空闲,减少冲突的机会。

      • MA:多址访问

        每个站点发送的数据,可以同时被多个站点接收。

      • CD:冲突检测

        由于两个站点同时发送信号,信号叠加后,会使线路上电压的摆动值超过正常值一倍。据此可判断冲突的产生。

        边发送边检测,发现冲突就停止发送,然后延迟一个随机时间之后继续发送。

    • CSMA/CD的工作过程

      CSMA/CD的工作过程如下:

      1. 终端设备不停的检测共享线路的状态。

        • 如果线路空闲则发送数据。

        • 如果线路不空闲则一直等待。

      2. 如果有另外一个设备同时发送数据,两个设备发送的数据必然产生冲突,导致线路上的信号不稳定。

      3. 终端设备检测到这种不稳定之后,马上停止发送自己的数据。

      4. 终端设备发送一连串干扰脉冲,然后等待一段时间之后再进行发送数据。

        发送干扰脉冲的目的是为了通知其他设备,特别是跟自己在同一个时刻发送数据的设备,线路上已经产生了冲突。

        检测到冲突后等待的时间是随机的。

    ——————————————————————————————————————————————————————————————

    最小帧长

    由于CSMA/CD算法的限制,以太网帧必须不能小于某个最小长度。以太网中,最小帧长为64字节,这是由最大传输距离和冲突检测机制共同决定的。

    规定最小帧长是为了避免这种情况发生:A站点已经将一个数据包的最后一个Bit发送完毕,但这个报文的第一个Bit还没有传送到距离很远的B站点。B站点认为线路空闲继续发送数据,导致冲突。

    图1 Ethernet_II的帧结构 

    高层协议必须保证Data域至少包含46字节,这样加上以太网帧头的14字节和帧尾的4字节校验码正好满足64字节的最小帧长,如图1所示。如果实际数据不足46个字节,则高层协议必须填充一些数据单元。

     
    ——————————————————————————————————-

    以太网的双工模式

    以太网的物理层存在半双工和全双工两种模式。

    • 半双工

      半双工的工作模式:

      • 任意时刻只能接收数据或者发送数据。

      • 采用CSMA/CD机制。

      • 有最大传输距离的限制。

      HUB工作在半双工模式。

    • 全双工

      在有L2交换机取代了HUB组建以太网后,以太网由共享式转变为交换式。而且用全双工代替了半双工,传输数据帧的效率大大提高,最大吞吐量达到双倍速率。

      全双工从根本上解决了以太网的冲突问题,以太网从此告别CSMA/CD。

      全双工的工作模式:

      • 同一时刻可以接收和发送数据。

      • 最大吞吐量达双倍速率。

      • 消除了半双工的物理距离限制。

      当前制造的网卡、二层设备、三层设备都支持全双工模式,HUB除外。

      实现全双工的硬件保证:

      • 支持全双工的网卡芯片

      • 收发线路完全分离的物理介质

      • 点到点的连接

    ————————————————————————————————————————————————————————————————————

    以太网的自协商

    • 自动协商的目的

      最早的以太网都是10M半双工的,所以需要CSMA/CD等一系列机制保证系统的稳定性。随着技术的发展,出现了全双工,接着又出现了100M,以太网的性能大大改善。但是随之而来的问题是:如何保证原有以太网络和新以太网的兼容?

      于是,提出了自动协商技术来解决这种矛盾。自动协商的主要功能就是使物理链路两端的设备通过交互信息自动选择同样的工作参数。自动协商的内容主要包括双工模式、运行速率以及流控等参数。一旦协商通过,链路两端的设备就锁定在同样的双工模式和运行速率。

      以太网速率双工自协商在如下标准中定义:

      • 百兆以太网标准:IEEE 802.3u

        IEEE 802.3u规范将自协商作为可选功能。

      • 千兆以太网标准:IEEE 802.3z

        IEEE 802.3z规范将自协商作为强制功能,所有设备必须遵循并且必须默认启用自协商。

    • 自动协商原理

      自动协商是网络设备间建立连接的一种方式。它允许一个网络设备将自己所支持的工作模式信息传达给网络上的对端,并接受对端可能传递过来的信息。设备双方根据彼此工作模式信息的交集,按照双方都支持的最优工作模式建立连接。

      对于使用双绞线连接的以太网,如果没有数据传输时,链路并不是一直空闲,而是每隔16ms发送一个高脉冲,用来维护链路层的连接,这种脉冲成为NLP(Normal Link Pulse)码流。在NLP码流中再插入一些频率更高的脉冲,可用来传递更多的信息,这串脉冲成为FLP(Fast Link Pulse)码流,如图1所示。自协商功能的基本机制就是将协商信息封装进FLP码流中,以达到自协商的目的。

      图1 脉冲插入示意图

      对于使用光模块和光纤连接的以太网,与使用双绞线连接的以太网类似,也是靠发送码流来进行自协商的,这种码流称为C码流,也就是配置(Configuration)码流。与电口不同的是,光口一般不协商速率,并且一般工作在双工模式,所以自协商一般只用来协商流控。

      如果协商通过,网卡就把链路置为激活状态,可以开始传输数据了。如果不能通过,则该链路不能使用。

      如果有一端不支持自动协商,则支持自动协商的一端选择一种默认的方式工作,一般情况下是10M半双工模式。

      自协商完全由物理层芯片设计实现,IEEE 802.3规范要求在下列任一情况下启动自协商:
      • 链路中断后恢复
      • 设备重新上电
      • 任何一端设备复位
      • 有重新自协商(Renegotiation)请求

      除此之外,连接双方并不会一直发送自协商码流。自协商并不使用专用数据包或带来任何高层协议开销。

    • 接口的自动协商规则

      当接口对接时,双方能否正常通信和两端接口设置的工作模式是否匹配相关。
      • 当两端接口都工作在相同类型的非自协商模式时,双方可以正常通信。
      • 当两端接口都工作在自协商模式时,双方通过协商可以正常通信,最终的协商结果取决于能力低的一端,通过自协商功能还可以协商流量控制功能。
      • 当两端接口一端的工作模式为自协商,对端为非自协商时,接口最终协商的工作模式和对端设置的工作模式相关。

       说明:

      CloudEngine 16800系列交换机不支持流量控制功能。

    ————————————————————————————————————————————————————————————

    冲突域和广播域

    冲突域

    在传统的以粗同轴电缆为传输介质的以太网中,同一介质上的多个节点共享链路的带宽,争用链路的使用权,这样就会发生冲突,CSMA/CD机制中当冲突发生时,网络就要进行回退,这段回退的时间内链路上不传送任何数据。而且这种情况是不可避免的。同一介质上的节点越多,冲突发生的概率越大。这种连接在同一导线上的所有节点的集合就是一个冲突域。冲突域内所有节点竞争同一带宽,一个节点发出的报文(无论是单播、组播、广播)其余节点都可以收到。

    广播域

    因为网络中使用了广播,会占用带宽,降低设备的处理效率,必须对广播加以限制。比如ARP使用广播报文从IP地址来解析MAC地址。全1MAC地址FFFF-FFFF-FFFF为广播地址,所有节点都会处理目的地址为广播地址的数据帧。这种一个节点发送一个广播报文其余节点都能够收到的节点的集合,就是一个广播域。传统的网桥可以根据MAC表对单播报文进行转发,对于广播报文向所有的接口都转发,所以网桥的所有接口连接的节点属于一个广播域,但是每个接口属于一个单独冲突域。

    ——————————————————————————————————————————

    MAC子层

    MAC子层的功能简介

    MAC(Media Access Control)子层负责完成下列任务:

    • 提供物理链路的访问。

      MAC子层是物理层相关的,也就是说,不同的物理层有不同的MAC子层来进行访问。

      在以太网中,主要存在两种MAC子层:

      • 半双工MAC:物理层运行模式是半双工时提供访问。

      • 全双工MAC:物理层运行模式是全双工时提供访问。

      这两种MAC都集成在网卡中,网卡初始化的时候一般进行自动协商,根据自动协商的结果决定运行模式,然后根据运行模式选择相应的访问MAC。

    • 链路级的站点标识:在数据链路层识别网络上的各个站点。

      也就是说,在该层次保留了一个站点地址,即MAC地址,来标识网络上的唯一一个站点。

      为了进行站点标识,在MAC子层用MAC地址来唯一标识一个站点。

      MAC地址由IEEE管理,以块为单位进行分配。一个组织(一般是制造商)从IEEE获得唯一的地址块,称为一个组织的OUI(Organizationally Unique Identifier)。获得OUI的组织可用该地址块为16777216个设备分配地址。

      MAC地址有48Bit,但通常被表示为12位的点分十六进制数。例如,48Bit的MAC地址000000001110000011111100001110011000000000110100,表示为12位点分十六进制就是00e0.fc39.8034。

      每个MAC地址的前6位(点分十六进制)代表OUI,后6位由厂商自己分配。例如,地址00e0.fc39.8034,前面的00e0.fc是IEEE分配给华为公司的OUI,后面的39.8034是由华为公司自己分配的地址编号。

      MAC地址中的第2bit指示该地址是全局唯一还是局部唯一。以太网一直使用全局唯一地址。

      MAC地址可分为下面几种类别:

      • 物理MAC地址

        这种类型的MAC地址唯一的标识了以太网上的一个终端,这样的地址是固化在硬件(如网卡)里面的。

      • 广播MAC地址

        这是一个通用的MAC地址,用来表示网络上的所有终端设备。

        广播MAC地址48Bit全是1,即ffff.ffff.ffff。

      • 组播MAC地址

        这是一个逻辑的MAC地址,用于代表网络上的一组终端。

        组播MAC地址第8Bit是1,例如000000011011101100111010101110101011111010101000。

    • 链路级的数据传输:从LLC子层接收数据,附加上MAC地址和控制信息后把数据发送到物理链路上;在这个过程中提供校验等功能。

      数据的收发过程如下:

      1. 当上层要发送数据的时候,把数据提交给MAC子层。

      2. MAC子层把上层提交来的数据放入缓存区。

      3. 然后加上目的MAC地址和自己的MAC地址(源MAC地址),计算出数据帧的长度,形成以太网帧。

      4. 以太网帧根据目的MAC地址被发送到对端设备。

      5. 对端设备用帧的目的MAC地址,跟MAC地址表中的条目进行比较。

        • 只要有一项匹配,则接收该以太网帧。

        • 若无任何匹配的项目,则丢弃该以太网帧。

      以上描述的是单播的情况。如果上层应用程序加入一个组播组,数据链路层根据应用程序加入的组播组形成一个组播MAC地址,并把该组播MAC地址加入MAC地址表。这样当有针对该组的数据帧的时候,MAC子层就接收该数据帧并向上层发送。

    以太网帧结构

    • Ethernet_II的帧结构

      图1 Ethernet_II的帧结构 

      Ethernet_II的帧中各字段说明如表1所示。

      表1 Ethernet_II的帧结构说明

      字段

      说明

      DMAC

      DMAC(Destination MAC)是目的地址。DMAC确定帧的接收者。

      SMAC

      SMAC(Source MAC)是源地址。SMAC字段标识发送帧的工作站。

      Type

      两字节的类型字段用于标识数据字段中包含的高层协议,也就是说,该字段告诉接收设备如何解析数据字段。

      在以太网中,多种协议可以在局域网中同时共存。因此,在Ethernet_II的类型字段中设置相应的十六进制值提供了在局域网中支持多协议传输的机制。

      • 类型字段取值为0800的帧代表IP协议帧。

      • 类型字段取值为0806的帧代表ARP协议帧。

      • 类型字段取值为8035的帧代表RARP协议帧。

      • 类型字段取值为8137的帧代表IPX和SPX传输协议帧。

      Data

      数据字段的最小长度必须为46字节以保证帧长至少为64字节,这意味着传输一字节信息也必须使用46字节的数据字段。

      如果填入该字段的信息少于46字节,该字段的其余部分也必须进行填充。

      数据字段的最大长度为1500字节。

      CRC

      CRC(Cyclic Redundancy Check)循环冗余校验字段提供了一种错误检测机制。

      每一个发送器都计算一个包括了地址字段、类型字段和数据字段的CRC码,然后将计算出的CRC码填入4字节的CRC字段。

    • IEEE802.3的帧结构

      图2 IEEE802.3的帧结构 

      图2所示,IEEE802.3帧格式类似于Ethernet_II帧,只是Ethernet_II帧的Type域被802.3帧的Length域取代,并且占用了Data字段的8个字节作为LLC和SNAP字段。

      表2 IEEE802.3的帧结构说明

      字段

      说明

      Length

      Length字段定义了Data字段包含的字节数。

      LLC

      LLC(Logical Link Control)由目的服务访问点DSAP(Destination Service Access Point)、源服务访问点SSAP(Source Service Access Point)和Control字段组成。

      SNAP

      SNAP(Sub-network Access Protocol)由机构代码(org code)和类型(Type)字段组成。org code三个字节都为0。Type字段的含义与Ethernet_II帧中的Type字段相同。

       说明:

      其他字段请参见Ethernet_II的帧的字段说明。

      IEEE802.3帧根据DSAP和SSAP字段的取值又可分为以下几类:

      • 当DSAP和SSAP都取特定值0xff时,802.3帧就变成了Netware-ETHERNET帧,用来承载NetWare类型的数据。

      • 当DSAP和SSAP都取特定值0xaa时,802.3帧就变成了ETHERNET_SNAP帧。

        ETHERNET_SNAP帧可以用于传输多种协议。因此,SNAP可以被看作一种扩展,它允许厂商创建自己的以太网传输协议。

        ETHERNET_SNAP标准由IEEE802.1委员会制定,以保证IEEE802.3局域网和以太网之间的互操作性。

      • DSAP和SSAP其他的取值均为纯IEEE802.3帧。

    ——————————————————————————————————————————————————————————————————

    LLC子层

    在前文的介绍中提到了MAC子层形成的帧结构,包括IEEE802.3的帧和ETHERNET_II帧。在ETHERNET_II帧中,由Type字段区分上层协议,这时候就没有必要实现LLC子层,仅包含一个MAC子层。

    IEEE802.3帧中的LLC子层除了定义传统的链路层服务之外,还增加了一些其他有用的特性。这些特性都由DSAP、SSAP和Control字段提供。

    例如以下三种类型的点到点传输服务:

    • 无连接的数据包传输服务

      目前的以太网实现就是这种服务。

    • 面向连接的可靠的数据传输服务

      预先建立连接再传输数据,数据在传输过程中可靠性得到保证。

    • 无连接的带确认的数据传输服务。

      该类型的数据传输服务不需要建立连接,但它在数据的传输中增加了确认机制,使可靠性大大增加。

    下面通过一个例子来说明SSAP和DSAP的应用。假设终端系统A和终端系统B要使用面向连接的可靠的数据传输服务,这时候会发生如下过程:

    1. A给B发送一个数据帧,请求建立一个面向连接的可靠连接。

    2. B接收到以后,判断自己的资源是否够用(即是否建立了太多的连接),如果够用,则返回一个确认信息,该确认信息中包含了识别该连接的SAP值。

    3. A接收到回应后,知道B已经在本地建立了跟自己的连接。A也创建一个SAP值,来表示该连接,并发一个确认给B,连接建立。

    4. A的LLC子层把自己要传送的数据进行封装,其中DSAP字节填写的是B返回的SAP,SSAP字节填写的是自己创建的SAP,然后发给MAC子层。

    5. A的MAC子层加上MAC地址和LENGTH字段之后,发送到数据链路上。

    6. B的MAC子层接收到该数据帧之后,提交给LLC子层,LLC子层根据DSAP字段判断出该数据帧属于的连接。

    7. B根据该连接的类型进行相应的校验和确认,通过这些校验和确认后,才向上层发送。

    8. 数据传输完毕之后,A给B发送一个数据帧来通知B拆除连接,通信结束。

  • 相关阅读:
    网卡
    java调用函数参数的传递机制及java内存管理
    zookeeper安装遇到的问题
    tcp/ip,http,socket mysql底层技术原理
    前台页面
    权限模块设计及使用
    spring security学习,使用过程
    mybatis处理集合、循环、数组和in等语句的使用
    sql语句的一些学习
    java 实现获取当天,当周,当月,当季,当年的时间段
  • 原文地址:https://www.cnblogs.com/DragonBo/p/12577315.html
Copyright © 2020-2023  润新知