• 以太网数据链路层协议分析


    一.局域网的几种协议,主要包括以太网第二版、IEEE802系列、令牌环网和SNAP等!

    1.以太网(V2)
    以太网第二版是早期的版本,是由DEC、Intel和Xerox联合首创,简称DIX。帧格式如下图:

    前导信息:采用1和0的交替模式,在每个数据包起始处提供5MHZ的时钟信号,以充许接收设备锁定进入的位流。
    目标地址:数据传输的目标MAC地址。
    源 地 址:数据传输的源MAC地址。
    以太网类型:标识了帧中所含信息的上层协议。数据加填充位:这一帧所带有的数据信息。

    (以太网帧的大小是可变的。每个帧包括一个1 4字节的报头和一个4字节的帧校验序列域。这两个域增加了1 8字节的帧长度。帧的数据部分可以包括从4 6字节到1 5 0 0字节长的信息(如果传输小于4 6字节的数据,则网络将对数据部分填充填充位直到长度为4 6字节)。因此,以太网帧的最小长度为1 8 + 4 6,或6 4个字节,最大长度为1 8 + 1 5 0 0,或1 5 1 8个字节。)
    F C S :   帧校验序列( F C S,Frame Check Sequence)域确保接收到的数据与发送时的数据一样。当源节点发送数据时,它执行一种称为循环冗余校验( C R C,Cyclical Redundancy Check)的算法。C R C利用帧中前面所有域的值生成一个惟一的4字节长的数,即F C S。当目标节点接收数据帧时,它通过C R C破解F C S并确定帧的域与它们原有的形式一致。如果这种比较失败,则接收节点认为帧已经在发送过程中被破坏并要求源节点重发该数据。
    2.IEEE802系列。
    IEEE802系列包含比较多的内容,但比较常见的是802.2 和 802.3 。下面我们就比这两种帧。
    为什么我要先把802.3列出来?因为我个人觉得802.3应该是在802。2之前出来,只它存在问题,所以才出现了802。2以解决它的问题,大家是不是觉得有点糊,没关系,请继续看下去。下面是这个帧的帧格式:

    大家有没有发现在这个帧格式跟以太网第二版本的格式非常像?没错,它们这间改动的比较少,因为802。3是在以太网V2的基础上开发的,为了适应100M的网络,所以才把8位的前导步信息分成了7字节,并加入了一个SFD的域(为什么说这样分开一下可以支持100M?我目前还没搞懂。^8^那位高手有这方面的资料贡献一下啊)。那前导和SFD到底起什么作用?我的理解是,前导与SOFD相当于跑步竞赛开始时的那句“预备!跑!”,前导就是“预备!”,SFD就是“跑!”,所以前导让接收设备进入状态,SOFD让接收设备开始接收。而这里所谓比特流硬件时钟同步,是指让设备按当前比特流信号频率同步,以得到精确的接收数据的位置,避免接收出错,与PC里所谓时钟概念是一样的。
    再有就是类型字段变成了长度字段,这是因为当初这个协议是由novell开发的,所以它默认就是在就是局域网就是novell网,服务器是netware服务器,跑的是IPX的协议,因此去掉了类型换成了长度。后来IEEE再据此制定802。3的协议,结果问题也就出来了。如果我上层用的是IP协议呢?那怎么办?别急,有问题就会有方法,IEEE802。2也就由此出现了。

    请看帧格式:

    可以看到,种帧的最大区别就在于多了一个LLC的域,即逻辑链路控制( L L C,Logical Link Control)。该信息用来区别一个网络中的多个客户机。如果L L C和数据信息的总长度不足4 6字节,数据域还将包括填充位。长度域并不关心填充位,它仅仅报告逻辑链接控制层信息( L L C)加上数据信息的长度。逻辑链接控制层( L L C)信息由三个域组成:目标服务访问点( D S A P,D e s t i n a t i o n Service Access Point),源服务访问点( S S A P,Source Service Access Point)和一个控制域。每个域都是1个字节长,L L C域总长度为3字节。一个服务访问点( S A P,Service Access Point)标识了使用L L C协议的一个节点或内部进程,网络中源节点和目标节点之间的每个进程都有一个惟一S A P。控制域标识了必须被建立L L C连接的类型:无应答方式(无连接)和完全应答方式(面向连接)。

    我们在工作中最常见的也就是这三种帧了,下面加入一张网上找到的图片,以加深大家的理解,并做一个小小的总结:


    二.各种不同的帧格式 
    下面介绍一下各个帧格式
    Ethernet II
    就是DIX以太网联盟推出的,它由6个字节的目的MAC地址,6个字节的源MAC地址,2个字节的类型域(用于标示封装在这个Frame、里面数据的类型)以上为Frame Header,接下来是46–1500 字节的数据,和4字节的帧校验)
    Novell Ethernet 
    它的帧头与Ethernet有所不同其中EthernetII帧头中的类型域变成了长度域,后面接着的两个字节为0xFFFF ,用于标示这个帧是Novell Ether类型的Frame 由于前面的0xFFFF站掉了两个字节所以数据域缩小为44-1498个字节,帧校验不变。
    IEEE 802.3/802.2
    802.3的Frame Header和Ethernet II的帧头有所不同EthernetII类型域变成了长度域。其中又引入802.2协议(LLC)在802.3帧头后面添加了一个LLC首部,由DSAP(Destination Service Access Point) 1 byte,SSAP(Source SAP),一个控制域–1 byte! SAP用于标示帧的上层协议
    Ethernet SNAP
    SNAP Frame与802.3/802.2 Frame的最大区别是增加了一个5 Bytes的SNAP ID其中前面3个byte通常与源mac地址的前三个bytes相同为厂商代码!有时也可设为0,后2 bytes 与Ethernet II的类型域相同。。。

    三.如何区分不同的帧格式

    Ethernet中存在这四种Frame那些网络设备又是如何识别的呢? 如何区分EthernetII与其他三种格式的Frame 如果帧头跟随source mac地址的2 bytes的值大于1500 则此Frame为EthernetII格式的。 接着比较紧接着的两bytes如果为0xFFFF则为Novell Ether 类型的Frame ,如果为0xAAAA则为Ethernet SNAP格式的Frame ,如果都不是则为Ethernet 802.3/802.2格式的帧.

  • 相关阅读:
    SQL 开窗函数
    使用 git 管理源代码
    mybatis常见问题
    es-删除记录
    Jmeter使用
    websocket在服务端获取客户端IP
    单点登录
    java中的HTTP客户端
    SpringBoot利用Redis管理分布式Session
    springboot中的统一异常处理
  • 原文地址:https://www.cnblogs.com/church/p/2616721.html
Copyright © 2020-2023  润新知