zoukankan      html  css  js  c++  java
  • 以太网帧结构

    OSI模型及TCP/IP:

          

    数据封装:

        

      应用数据需要经过TCP/IP每一层处理之后才能通过网络传输到目的端,每一层上都使用该层的协议数据单元PDU(Protocol Data Unit)彼此交换信息。不同层的PDU中包含不同的信息,因此PDU在不同层被赋予不同的名称。

      传输层在上层数据中加入TCP报头后得到的PDU为:数据段Segment

      数据段被传递到网络层,网络层添加IP报头得到的PDU被成为:数据包Packet

      数据包被传递到数据链路层,封装数据链路层报头得到PDU被称为:数据帧Frame

      最后,帧被转换为比特,通过网络介质传输

      协议栈向下传递数据,并添加报头和报尾的过程成为封装。数据被封装并通过网络传输后,接收设备将删除添加的信息,并根据报头中得信息决定如何将数据沿协议栈上传给合适的应用程序,这个过程成为解封装

      终端之间的通信

      

       数据包在以太网物理介质上传播之前必须封装头部和尾部信息,封装后的数据包称为数据帧,数据帧中封装的信息决定了数据如何传输。以太网上传输的数据帧有两种格式,选择哪种格式由TCP/IP协议簇中的网络层决定。

    帧格式

      

       以太网上使用两种标准帧格式。第一种是上世纪80年代提出的DIX v2格式,即Ethernet II格式。第二种是1983年提出的IEEE 802.3格式。

      两种格式得区别在于Ethernet 格式种包含一个Type字段,标识以太网帧处理完之后将被发送到哪个上层协议进行处理,IEEE 802.3格式种,同样位置是长度字段。

      Ethernet II 格式相对使用广泛。

      从Type/Length字段值可以区分两种帧类型:当Type字段值小于等于1500(0x05DC)时,帧使用的是IEEE 802.3格式。当Type字段值大于等于1536(0x0600)时,帧使用的是Ethernet II格式

    Ethernet II格式

      

       Ethernet II格式种Data字段长度在46-1500B,故以太网数据帧的长度在64(6+6+2+46+4)-----1518(6+6+2+1500+4)字节之间

        DMAC:目的MAC地址。字段长度6个字节,标识帧的接收者

        SMAC:源MAC地址。字段长度6个字节,标识帧的发送者

        Type:类型字段,字段长度2个字节,用于标识数据字段种包含的高层协议。

          0x0800 代表 IP协议帧

          0x0806 代表ARP协议帧

        Data:数据字段是网络层数据,最小长度必须为46字节

        FCS:循环冗余校验字段,提供了一种错误检测机制,字段长度为4个字节

    IEEE802.3 

      

       Length字段定于了Data字段包含的字节数

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

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

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

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

        2:当DSAP和SSAP都取特定值0xaa时,802.3帧就变成了ETHERNET_SNAP帧。此帧可以用于传输多种协议。

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

        故可以说4种以太网帧

    以太网MAC地址

      MAC地址由两部分组成,分别时供应商代码和序列号。其中前24位代表供应商代码,由IEEE管理和分配。剩下的24位序列号由厂商自己分配。

      每一台网络设备都用物理地址来标识自己,MAC地址是全球唯一的。

  • 相关阅读:
    【MySQL疑难杂症】如何将树形结构存储在数据库中(方案二 Path Enumeration)
    【MySQL疑难杂症】如何将树形结构存储在数据库中(方案一 Adjacency List)
    【Java疑难杂症】利用Java核心库实现简单的AOP
    【Java入门提高篇】Day5 Java中的回调(二)
    【Java入门提高篇】Day4 Java中的回调
    【SpringMVC】使用Myeclipse创建SpringMVC项目【超详细教程】
    使用GDAL/OGR读写矢量文件
    WebGL简易教程(四):颜色
    WebGL简易教程(三):绘制一个三角形(缓冲区对象)
    OSG与Shader的结合使用
  • 原文地址:https://www.cnblogs.com/juankai/p/11466603.html
Copyright © 2011-2022 走看看