精华内容
下载资源
问答
  • 以太网数据帧格式及ARP协议

    千次阅读 2020-08-29 15:59:52
    在物理层上看,一个完整的以太网帧有7个字段,事实上,前两个字段并不能算是真正意义上的以太网数据帧,它们是以太网在物理层上发送以太网数据时添加上去的。为了实现底层数据的正确阐述,物理层使用7个字节前同步码...

    一、以太网中数据帧结构

    以太网是目前最流行的一种局域网组网技术(其他常见局域网组网技术还有令牌环局域网、无线局域网、ATM局域网),以太网技术的正式标准是IEEE 802.3标准,它规定了在以太网中传输的数据帧结构,如下图所示。

                  

    在物理层上看,一个完整的以太网帧有7个字段,事实上,前两个字段并不能算是真正意义上的以太网数据帧,它们是以太网在物理层上发送以太网数据时添加上去的。为了实现底层数据的正确阐述,物理层使用7个字节前同步码(0和1交替的56位(55-55-55-55-55-55-55))实现物理层帧输入/输出同步;使用1个字节的SFD(帧首定界符,固定为10101011)标识帧的开始。上图中剩下的5个字段是真正的以太网数据,其中包含了目的地址和源地址,它们都是6字节长度(通常每个网卡都有1个6个字节MAC地址,以在以太网中唯一地标识自己)。网卡接收数据时,通过将目的地址字段和自身的MAC地址做比较,判断是否接收该数据包。通常,将这里的6字节目的地址按照下面的格式来书写,如:00-01-02-03-04-05。这6个字节在以太网中是按照从左到右的顺序发送的,同时对每个字节来说,最先发送的是最低位bit0,最后是最高位bit7。

          在以太网帧中,目的地址可以分为三类:单播地址、多播地址和广播地址。单播地址通常与一个具体网卡的MAC地址相对应,它要求第一个字节的bit0(即最先发出去的位)必须是0;多播地址则要求第一个字节的bit0为1,这样,在网络中多播地址不会与任何网卡的MAC相同,多播数据可以被很多个网卡同时接收;广播地址的所有48位全为1(即FF-FF-FF-FF-FF-FF),同一局域网中的所有网卡可以接收广播数据包。

    上图中的长度/类型具有两个意义,当这两个字节的值小雨1518时,那么它就代表其后数据字段的长度;如果这两个字节的值大于1518,则表示该以太网帧中的数据属于哪个上层协议(例如0x800,代表IP数据包;0x806,代表ARP数据包等。)

    在使用网卡进行数据包的发送与接收时,网卡已为我们完成了物理层的所有工作,驱动程序要做的是,在发送数据时,将目的地址、源地址、类型/长度、数据和填充这些值写入网卡,网卡自动计算其CRC并添加在数据帧尾部,同时对数据帧进行物理层的封装,最后将数据帧发送出去;在接收数据时,网卡会自动检测并接收数据包,验证校验和并把上述四个字段的值放在内部SRAM中供控制器读取。

    TCP/IP协议有自己的地址:32bit的IP地址(网络地址),网络层发送数据包时只知道目的地址的IP地址,而底层接口(如以太网驱动程序)必须知道对方的硬件地址才能将数据发送出去。

    二、ARP协议

    ARP的功能是在32bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射,为上层将底层的物理地址差异屏蔽起来,这样上层的因特网协议就可以灵活地使用IP地址进行通信了。ARP协议的基本功能是使用目标主机的IP地址,查询其对应的MAC地址,以保证底层链路上数据包通信的进行。为了实现在网络接口物理地址与IP地址间的转换,ARP协议中引入了ARP缓存表的概念。ARP缓存表中记录了一条一条的<IP地址,MAC地址>对,他们是主机最近运行获得的关于周围其他主机的IP地址到物理地址的绑定,当需要发送IP数据包时,ARP层根据目的IP地址来查找ARP缓存表,并将匹配的MAC地址装入以太网帧首部,最后发送以太网数据。

    ARP缓存表的建立与ARP数据包是密切相关的。在以太网中,ARP数据包和IP数据包是两个独立的部分,它们都封装在以太网帧中发送。ARP数据包的种类有两种:一是ARP请求包,它是通过以太网广播的方式发送的,用于向具有某个IP地址的主机发送请求,希望该主机返回其MAC地址;二是ARP应答包,收到ARP请求的主机会比对该数据包中的IP地址与自己的IP地址是否符合,若是,则该主机向源主机返回一个ARP应答包。向源主机报告自己的MAC地址。源主机通过提取ARP应答包中的相关字段来更新ARP缓存表。在Windows控制台上输入arp -a,可以查看操作系统中使用的ARP缓存表。

    举一个简单的例子来看看ARP的功能。假如我们的主机(192.168.1.11)需要向开发板(192.168.1.37)发送一个IP数据包,当发送数据时,主机会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址为(04-02-35-00-00-01),此时,主机直接把目标MAC地址写入以太网首部发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,此时比较不幸,我们的数据需要被延迟发送,随后主机会先在网络上发送一个广播(ARP请求,以太网目的地址为FF-FF-FF-FF-FF-FF),广播的ARP请求表示同一网段内所有主机将会收到这样一条信息:“192.168.1.37的MAC地址是什么?请回答”。网络IP地址为192.168.1.37(开发板)的主机接收到这个帧后,它有义务做出这样的回答(ARP应答):“192.168.1.37的MAC地址是(04-02-35-00-00-01)”。这样,主机就知道了开发板的MAC地址,先前被延时的数据包就可以被发送了,此外,主机将这个地址对保存在缓存表中,以便后续数据包发送时使用。

    ARP协议的核心就是对ARP缓存表的操作。发送数据包时,查找缓存表以得到目的MAC地址,此外,ARP还需要不断地处理ARP请求包和ARP应答包,以保证缓存表中各个表项的有效性。ARP的实质就是对缓存表的建立、更新、查询等操作。

    2.2 ARP报文

    要在源主机上建立关于目标主机的IP地址与MAC地址对应表项,则源主机和目的主机的基本信息交互式必须的,简单地说就是,源主机如何告诉目的主机:我需要你的MAC地址;而目的主机如何回复:这就是我的MAC地址。这时ARP报文(ARP数据包)就派上用场了。

    ARP请求和ARP应答都是被组装在一个ARP数据包中发送的,ARP包的组成结构如下图所示。需要注意的是:ARP包时被封装在以太网帧中发送的,所以在图中也列出了以太网帧头部。

          以太网帧头部中的前两个字段是以太网的MAC地址和源MAC地址,目的地址为全1的特殊地址是以太网广播地址。在ARP表项建立前,源主机只知道目的主机的IP地址,并不知道其MAC地址,所以在数据链路上,源主机只有通过广播的方式将ARP请求数据包发送出去,同一网段上的所有以太网接口都会接收到广播的数据包。

           两个字节长的以太网帧类型表示帧中数据的类型。对于ARP包来说,该字段值为0x0806;对IP包来说,该字段的值为0x0800。接下来就是ARP数据包部分了,第一个硬件类型字段表示发送方想要知道的硬件接口类型,对于以太网MAC地址,它的值为1.协议类型字段表示要映射的协议地址类型,它的值为0x0800时,即表示要映射为IP地址,该值与以太网数据帧头中的类型字段的值使用相同的一组值。

    接下来的两个单字节长度的字段,称为硬件地址长度和协议地址长度,它们分别指出硬件地址和协议地址的长度,长度单位为字节。对于以太网上ARP请求或应答来说,它们的值分别为6和4,代表MAC地址的长度和IP地址的长度。在ARP协议包中流出硬件地址长度和协议地址长度字段可以使得ARP协议在任何网络中被使用,而不仅仅只在以太网中。

          操作字段op指出ARP数据包的类型,它们可以使ARP请求(值为1)、ARP应答(值为2)。

          接下来的四个字段是发送端的以太网MAC地址、发送端的IP地址、目的端的以太网MAC地址和目的端的IP地址。

     

     

    展开全文
  • 关于pcap截取的网卡数据帧的分析;一个Demo说明网络协议封分层以及具体截获的包分析说明 一个实际的包数据分析 packet_header ------>包帧的头部---16字节 --------packet_content start--------- 52 54 00 12 35 ...
  • 以太网数据帧详细解析 逐字节分析

    千次阅读 2020-08-25 21:18:49
    以太网数据帧详细解析 详细解析以太网通信数据帧 测试环境 机器名 mac ip port tcp_server 00:0c:29:8b:37:da 10.1.2.7 9502 tcp_client 00:50:56:c0:00:08 10.1.2.1 12345 抓包 客户端向服务端发送 '...

    以太网数据帧详细解析

    详细解析以太网通信数据帧

    测试环境

    机器名macipport
    tcp_server00:0c:29:8b:37:da10.1.2.79502
    tcp_client00:50:56:c0:00:0810.1.2.112345

    抓包 客户端向服务端发送 'hello world’

    # 原始数据帧
    00 0c 29 8b 37 da 00 50 56 c0 00 08 08 00 # Ethernet_II格式数据帧首部
    45 00 00 33 28 5b 40 00 80 06 ba 80 0a 01 02 01 0a 01 02 07 # ip协议头
    30 39 25 1e 84 a4 e6 82 cf f2 ea 28 50 18 10 0a 7b 45 00 00 # tcp协议头
    68 65 6c 6c 6f 20 77 6f 72 6c 64 # data
    

    以太网数据帧构成

    https://xinu-note-images.oss-cn-beijing.aliyuncs.com/UTOOLS1575647451248.png

    Ethernet_II格式数据帧首部 链路层

    总长度 14B

    字段名称长度(byte)含义
    D.MAC6接收方MAC地址,网络包接收方的MAC地址,在局域网中使用这一地址来传输网络包
    S.MAC6网络包发送方的MAC地址,接收方通过它来判断是谁发送了这个包
    Type2使用的协议类型。
    TCP通信中 IP协议与ARP协议较常见
    0000-05DC:IEEE 802.3
    0800 :IP协议
    0806 :ARP协议
    86DD :IPv6

    实例

    # Ethernet_II格式数据帧首部 14 bytes
    00 0c 29 8b 37 da # 目标MAC地址 00:0c:29:8b:37:da
    00 50 56 c0 00 08 # 源MAC地址 00:50:56:c0:00:08
    08 00 # IP协议
    

    IP协议数据包首部 网络层

    总长度 20B+

    字段名称长度(bit)含义
    版本号(Version)4协议的版本一般的值为
    0100(IPv4),
    0110(IPv6)
    头部长度(IHL)4Header Length,描述IP包头的长度,
    因为在IP包头中有变长的可选部分。长度 = 值 * 4,
    4bit最大 ‘1111’ = 15, IP头长度为20 - 60(15 * 4) 字节
    服务类型(ToS)8Type of Service,服务类型8位 按位被如下定义 PPP DTRC0
    PPP:定义包的优先级,取值越大越重要
    000 普通 (Routine)
    001 优先的 (Priority)
    010 立即的发送 (Immediate)
    011 闪电式的 (Flash)
    100 比闪电还闪电式的 (Flash Override)
    101 CRI/TIC/ECP(找不到这个词的翻译)
    110 网间控制 (Internetwork Control)
    111 网络控制 (Network Control)

    D 时延: 0:普通 1:延迟尽量小
    T 吞吐量: 0:普通 1:流量尽量大
    R 可靠性: 0:普通 1:可靠性尽量大
    M 传输成本: 0:普通 1:成本尽量小
    0 最后一位被保留,恒定为0
    总长度16Total Length IP包总长度 以字节为单位计算的IP包的长度
    (包括头部和数据),所以IP包最大长度65535字节
    ID号16该字段和Flag和Fragment Offest字段联合使用,对较大的
    上层数据包进行分段(fragment)操作。路由器将一个包拆
    分后,所有拆分开的小包被标记相同的值,以便目的端设备<br/ >能够区分哪个包属于被拆分开的包的一部分。
    标志(Flags)3长度3比特。该字段第一位不使用。第二位是DF
    (Don’t Fragment)位,DF位设为1时表明路由器不能对该
    上层数据包分段。如果一个上层数据包无法在不分段的情况
    下进行转发,则路由器会丢弃该上层数据包并返回一个错误
    信息。第三位是MF(More Fragments)位,当路由器对一
    个上层数据包分段,则路由器会在除了最后一个分段的IP包
    的包头中将MF位设为1。
    分片偏移量13Fragment Offest 表示该IP包在该组分片包中位置,接收端
    靠此来组装还原IP包。
    生存时间(TTL)8当IP包进行传送时,先会对该字段赋予某个特定的值。当IP
    包经过每一个沿途的路由器的时候,每个沿途的路由器会将
    IP包的TTL值减少1。如果TTL减少为0,则该IP包会被丢弃。
    这个字段可以防止由于路由环路而导致IP包在网络中不停被转发。
    协议号8标识了上层所使用的协议。以下是比较常用的协议号:
    1 ICMP
    2 IGMP
    6 TCP
    17 UDP
    88 IGRP
    89 OSPF
    头部校验和16Header Checksum
    用来做IP头部的正确性检测,但不包含数据部分。 因为每个
    路由器要改变TTL的值,所以路由器会为每个通过的数据包重
    新计算这个值。
    发送方IP地址32Source Addresses 发送方IP地址。除非使用NAT,否则
    整个传输的过程中,这两个地址不会改变
    接收方IP地址32Destination Addresses 接收方IP地址。除非使用NAT,否则
    整个传输的过程中,这两个地址不会改变
    可选字段一般测试使用

    实例

    # ip协议头20字节
    4 # 协议版本 ipv4
    5 # ip协议头长度 5 * 4 = 20字节
    00 # 服务类型 000-0-0-0-0-0  
    00 33 # ip包总长度 hex => dec 51字节
    28 5b # ID号 
    40 00 # 标志与分片偏移量 0100 0000 0000 0000 DF位为1 不允许分包 偏移量为0
    80 # 生存时间 dec 128
    06 # 协议号 TCP协议
    ba 80 # 头部校验和
    0a 01 02 01 # 发送方ip 10.1.2.1
    0a 01 02 07 # 接收方ip 10.1.2.7
    
    # ip协议头 头部校验和计算方法
    # 1. 头部校验和置0;
    # 2. 对IP头部中的每16bit进行二进制求和;
    # 3. 如果和的高16bit不为0,则将和的高16bit和低16bit反复相加,直到和的高16bit为0,从而获得一个16bit的 值;
    # 4. 将该16bit的值取反,存入校验和字段。
    

    TCP协议头 传输层

    图示

    https://xinu-note-images.oss-cn-beijing.aliyuncs.com/UTOOLS1575643308334.png

    总长度 20B+

    字段名长度(bit)含义
    源端口号16发送网络包的程序的端口号
    目的端口号16网络包的接收方程序的端口号
    序列号 seq32发送的时候,TCP 协议为每个包编号(sequence number,
    简称 SEQ),以便接收的一方按照顺序还原。万一发生丢包
    ,也可以知道丢失的是哪一个包。
    当前序列号 + 数据长度 = 下一个包的序列号
    确认序列号 ack32期待要收到下一个数据包的编号,ack与seq搭配确保数据的
    完整性,确认号只有ACK位为1时才有效。
    首部长度(数据偏移量)4表示数据部分的起始位置,也可以认为表示头部的长度
    保留6保留,未使用
    控制位6该字段中的每个比特分别表示以下通信控制含义。
    URG:表示紧急指针字段有效

    ACK:接收数据序号字段有效,一般表示数据已被接收方接收
    该位只有在连接未建立时为0,连接建立后始终为1

    PSH:表示通过flush操作发送的数据,指示接收方在接收到
    该报文段以后,应尽快将这个报文段交给应用程序,而不是
    在缓冲区排队。

    RST:强制断开连接,用于异常中断的情况

    SYN:同步序号,用于建立连接过程,在连接请求中发送SYN=1
    和ACK=0 , 应答 SYN=1和ACK=1

    FIN:用于释放连接,为1时表示发送方已经没有数据发送了,
    即关闭本方数据流。
    窗口16接收方告知发送方窗口大小(即无需等待确认可一起发送的数据量)
    校验和16用来检查是否出现错误
    紧急指针16只有当 URG 标志置 1 时紧急指针才有效。紧急指针是一个
    正的偏移量,和顺序号字段中的值相加表示紧急数据最后一
    个字节的序号。 TCP 的紧急方式是发送端向另一端发送紧急
    数据的一种方式。
    选项和填充不定最常见的可选字段是最长报文大小,又称为MSS
    (Maximum Segment Size),每个连接方通常都在通
    信的第一个报文段(为建立连接而设置SYN标志为1的那
    个段)中指明这个选项,它表示本端所能接受的最大报
    文段的长度。选项长度不一定是32位的整数倍,所以要
    加填充位,即在这个字段中加入额外的零,以保证TCP
    头是32的整数倍。
    数据可选

    实例

    # tcp协议头 20字节
    30 39 # 源端口 12345
    25 1e # 目的端口 9502 
    84 a4 e6 82 # 序列号 
    cf f2 ea 28 # 确认序列号
    5 # 首部长度 5 * 32 / 8 = 20 bytes
    0 1 8 # 000000 保留 011000 ACK=1 PSH=1
    10 0a # 窗口大小 4106
    7b 45 # 校验和
    00 00 # URG=0 无效
    # 传输的数据
    68 65 6c 6c 6f 20 77 6f 72 6c 64  # ascii码
    h  e  l  l  o     w  o  r  l  d
    

    附录

    每一个数据包都带有下一个数据包的编号。如果下一个数据包没有收到,那么 ACK 的编号就不会发生变化。举例来说,现在收到了4号包,但是没有收到5号包。ACK 就会记录,期待收到5号包。过了一段时间,5号包收到了,那么下一轮 ACK 会更新编号。如果5号包还是没收到,但是收到了6号包或7号包,那么 ACK 里面的编号不会变化,总是显示5号包。这会导致大量重复内容的 ACK。如果发送方发现收到三个连续的重复 ACK,或者超时了还没有收到任何 ACK,就会确认丢包,即5号包遗失了,从而再次发送这个包。通过这种机制,TCP 保证了不会有数据包丢失。

    UDP协议

    https://xinu-note-images.oss-cn-beijing.aliyuncs.com/UTOOLS1575899141973.png

    展开全文
  • 第1章 以太网数据帧实验;第一单元 网络协议篇;第1章;实验目的与实验环境;以太网Ethernet;以太网帧格式 ;MAC地址;大家学习辛苦了还是要坚持;MAC地址;Packet Tracer 网络仿真器;12;实验步骤;初探MAC帧 在模拟模式下...
  • 以太网数据帧结构以及大小限制

    千次阅读 2018-04-09 21:47:58
    以太网数据帧结构 以太网是目前最流行的一种局域网组网技术(其他常见局域网组网技术还有令牌环局域网、无线局域网、ATM局域网),以太网技术的正式标准是IEEE 802.3标准,它规定了在以太网中传输的数据帧结构,如...

     以太网数据帧结构    

           以太网是目前最流行的一种局域网组网技术(其他常见局域网组网技术还有令牌环局域网、无线局域网、ATM局域网),以太网技术的正式标准是IEEE 802.3标准,它规定了在以太网中传输的数据帧结构,如下图所示。

                  

          1、前导码/帧起始定界符:7字节0x55,一串1、0间隔,用于信号同步,1字节0xD5(10101011),表示一帧开始
      2、目的地址:6字节
      3、源地址:6字节
      4、类型/长度:2字节,0~1500保留为长度域值,1536~65535保留为类型域值(0x0600~0xFFFF)
      5、数据:46~1500字节
      6、帧校验序列(FCS):4字节,使用CRC计算从目的MAC到数据域这部分内容而得到的校验和。

            ARP报文是典型的以太网数据帧,他的结构为:

          以太网帧头部中的前两个字段是以太网的MAC地址和源MAC地址,目的地址为全1的特殊地址是以太网广播地址。在ARP表项建立前,源主机只知道目的主机的IP地址,并不知道其MAC地址,所以在数据链路上,源主机只有通过广播的方式将ARP请求数据包发送出去,同一网段上的所有以太网接口都会接收到广播的数据包。

           两个字节长的以太网帧类型表示帧中数据的类型。对于ARP包来说,该字段值为0x0806;对IP包来说,该字段的值为0x0800。接下来就是ARP数据包部分了,第一个硬件类型字段表示发送方想要知道的硬件接口类型,对于以太网MAC地址,它的值为1.协议类型字段表示要映射的协议地址类型,它的值为0x0800时,即表示要映射为IP地址,该值与以太网数据帧头中的类型字段的值使用相同的一组值。

    接下来的两个单字节长度的字段,称为硬件地址长度和协议地址长度,它们分别指出硬件地址和协议地址的长度,长度单位为字节。对于以太网上ARP请求或应答来说,它们的值分别为6和4,代表MAC地址的长度和IP地址的长度。在ARP协议包中流出硬件地址长度和协议地址长度字段可以使得ARP协议在任何网络中被使用,而不仅仅只在以太网中。

          操作字段op指出ARP数据包的类型,它们可以使ARP请求(值为1)、ARP应答(值为2)。

          接下来的四个字段是发送端的以太网MAC地址、发送端的IP地址、目的端的以太网MAC地址和目的端的IP地址。


    大小限制

        我们注意到上面提到数据的大小46~1500字节.46是如何算出来的呢?

        这里一句话带过,为了避免信号碰撞.也就是说信号在A和B之间传输 的来回时间必须控制在一定范围之内。IEEE定义了这个标准,一个碰撞域内,最远的两台机器之间的round-trip time 要小于512bit time.(来回时间小于512位时,所谓位时就是传输一个比特需要的时间)。这也是我们常说的一个碰撞域的直径。

      512个位时,也就是64字节的传输时间,如果以太网数据包大于或等于64个字节,就能保证碰撞信号到达A的时候,数据包还没有传完。

        前面提到,以太网首部要占14个字节,最后一个帧校验序列(FCS)占4字节.(前导码/帧起始定界符并不能算是真正意义上的以太网数据帧,它们是以太网在物理层上发送以太网数据时添加上去的),所以数据最小必须是64-14-4=46字节.对于ARP协议,数据长度只有28字节,剩余必须全部补0,为18个字节.

        最长长度1500字节也是以太网的规定,目的是避免数据太长,导致数据一直占用信道.



        参考:

        为什么以太网数据帧最小为64字节

        以太网完整协议

    展开全文
  • 以太网数据帧的格式分析

    千次阅读 2009-07-23 11:18:00
    一、 以太网数据帧的格式分析大家都知道我们目前的局域网大多数是以太网,但以太网有多种标准,其数据帧有多种格式,恐怕有许多人不是太清楚,本文的目的就是通过帧格式和Sniffer捕捉的数据包解码来区别它们。...

    一、 以太网数据帧的格式分析

    大家都知道我们目前的局域网大多数是以太网,但以太网有多种标准,其数据帧有多种格式,恐怕有许多人不是太清楚,本文的目的就是通过帧格式和Sniffer捕捉的数据包解码来区别它们。

    以太网这个术语一般是指数字设备公司(Digital Equipment)、英特尔公司(Intel)和施乐公司(Xerox)在1982年联合公布的一个标准(实际上它是第二版本,第一版本早在1972年就在施乐公司帕洛阿尔托研究中心PARC里产生了)。它是目前TCP/IP网络采用的主要的局域网技术。它采用一种称作CSMA/CD的媒体接入方法,其意思是带冲突检测的载波侦听多路接入(Carrier Sense, Multiple Access with Collision Detection)。它的速率为10 Mb/s,地址为48 bit。

    1985年,IEEE(电子电气工程师协会) 802委员会公布了一个稍有不同的标准集,其中802.3针对整个CSMA/CD网络,802.4针对令牌总线网络,802.5针对令牌环网络。这三者的共同特性由802.2标准来定义,那就是802网络共有的逻辑链路控制(LLC)。不幸的是,802.2和802.3定义了一个与以太网不同的帧格式,加上1983年Novell为其Netware开发的私有帧,这些给以太网造成了一定的混乱,也给我们学习以太网带来了一定的影响。

    1、通用基础

    数据链路层头(Header)是数据链路层的控制信息的长度不是固定的,根据以太网数据帧的格式的不同而不同,那么判断IEEE802.3、IEEE802.3 SNAP、Ethernet Version2、Netware 802.3 “Raw”这些数据帧的最主要依据也源于Header的变化。

    从Sniffer捕捉数据包中也可以看出,Sniffer捕捉数据包的时候是掐头去尾的,不要前面的前导码,也丢弃后面的CRC校验(注意它只是不在Decode里显示该区域,但并不代表它不去做数据包CRC校验),这就是很多人困惑为什么Sniffer捕捉到的数据包长度跟实际长度不相符的原因。那么,Sniffer是如何来判断这些不同类型的以太网格式呢?

    Sniffer可以判断出不同的以太网格式,这里需要注意的是,Sniffer在数据包解码时有自己的格式,所以有Offset之说,offset ØE是指在Sniffer Hex解码窗口中从左向右第15位的数值。大家如果有点发懵的话,没有关系,看完后面的格式分析后再来分析前面提到的,相信一定能够明白?

    下面我们通过一些具体的数据包来说明各种以太网格式的具体区别。

    2、Ethernet Version2

    以太网版本2是先于IEEE标准的以太网版本。

    从数据包中可以看出,Ethernet V2通过在DLC头中2个字节的类型(Type)字段来辨别接收处理。类型字段是用来指定上层协议的(如0800指示IP、0806指示ARP等),它的值一定是大于05FF的,它提供无连接服务的,本身不控制数据(DATA)的长度,它要求网络层来确保数据字段的最小包长度(46字节)。

    Sniffer捕获的Ethernet V2帧的解码,可以看到在DLC层,源DLC地址后紧跟着就是以太网类型(Etehertype)值0800,代表上层封装的是IP报文,0800大于05FF,因而我们可以断定它是Ethernet V2的帧。

     

    3、IEEE802.3

    IEEE802.3把DLC层分隔成明显的两个子层:MAC层和LLC层,其中MAC层主要是指示硬件目的地址和源地址。LLC层用来提供一些服务:

    – 通过SAP地址来辨别接收和发送方法

    – 兼容无连接和面向连接服务

    – 提供子网访问协议(Sub-network Access Protocol,SNAP),类型字段即由它的首部给出。

    MAC层要保证最小帧长度不小于64字节,如果数据不满足64字节长度就必须进行填充。

    是Sniffer捕获的IEEE802.3帧的解码,可以看到在DLC层源地址后紧跟着就是802.3的长度(Length)字段0026,它小于05FF,可以肯定它不是Ethernet V2的帧,而接下来的Offset 0E处的值“4242”(代表DSAP和SSAP),既不是Novell 802.3 “Raw”的特征值“FFFF”,也不是IEEE 802.3 SNAP的特征值“AAAA”,因此它肯定是一个IEEE802.3的帧。

     

    4、IEEE802.3 SNAP

    SNAP (Sub-Network Access Protocol)子网访问协议,是逻辑链路控制(Logical Link Control)的一个子集,它允许协议不用通过服务访问点(SAP)即可实现IEEE兼容的MAC层功能,因此它在DSAP和SSAP域里的值是固定的(AAAA)。也正源于此,它需要额外提供5个字节的头来指定接收方法,3个字节标识厂商代码,2个字节标识上层协议。

    其MAC层保证数据帧长度不小于64字节,不足的话需要进行数据填充。

    是Sniffer捕获的IEEE802.3 SNAP帧的解码,可以看到在DLC层源地址后紧跟着就是802.3的长度(Length)字段0175,它小于05FF,可以肯定它不是Ethernet V2的帧,而接下来的Offset 0E处的值“AAAA”(代表DSAP和SSAP),这是IEEE 802.3 SNAP的特征值“AAAA”,因此可以断定它是一个IEEE802.3 SNAP的帧。

     

    5、Novell Netware 802.3 “Raw”

    虽然它的产生先于IEEE802.3规范,但已成为IEEE802.3规范的一部分。它仅使用DLC层的下半部,而不使用LLC。

    802.3 “Raw”帧通过在DLC头中2个字节的长度(Length)字段来标记数据帧长度,而在长度字段后紧跟着就是两个字节的十六进制值FFFF,它是用来标识IPX协议头的开始。为了确保最小数据帧长度为64字节,MAC层会进行填充数据区域来确保最小长度。

    在所有工作站都使用同一种数据帧类型情况下不会有什么问题,但如果是在混合以太网帧类型环境中,Novell的这种以太网帧会造成负面影响:当Novell发出广播帧时,其FF字段正好是IEEE802.3帧中的服务访问点(SAP)域,它的“FF”值代表着广播SAP,因此所有的工作站(不管是不是Netware工作站)都会拷贝,这会造成不必要的广播影响。

    Sniffer捕获的Netware 802.3 “RAW”帧的解码,可以看到在DLC层源地址后紧跟着就是802.3的长度(Length)字段0120,它小于05FF,可以肯定它不是Ethernet V2的帧,而接下来的Offset 0E处的值“FFFF”(代表IPX协议的开始),这是Netware 802.3 “Raw”的特征值“FFFF”,因此可以断定它是一个Novell 802.3 “Raw”的帧。

     

    二、 Ethernet V2帧与IEEE 802.3帧的比较

    因为这两种帧是我们在现在的局域网里最常见的两种帧,因此,我们对它们进行一些比较。

    Ethernet V2可以装载的最大数据长度是1500字节,而IEEE 802.3可以装载的最大数据是1492字节(SNAP)或是1497字节; Ethernet V2不提供MAC层的数据填充功能,而IEEE 802.3不仅提供该功能,还具备服务访问点(SAP)和SNAP层,能够提供更有效的数据链路层控制和更好的传输保证。那么我们可以得出这样的结论:Ethernet V2比IEEE802.3更适合于传输大量的数据,但Ethernet V2缺乏数据链路层的控制,不利于传输需要严格传输控制的数据,这也正是IEEE802.3的优势所在,越需要严格传输控制的应用,越需要用IEEE802.3或SNAP来封装,但IEEE802.3也不可避免的带来数据装载量的损失,因此该格式的封装往往用在较少数据量承载但又需要严格控制传输的应用中。

    在实际应用中,我们会发现,大多数应用的以太网数据包是Ethernet V2的帧(如HTTP、FTP、SMTP、POP3等应用),而交换机之间的BPDU(桥协议数据单元)数据包则是IEEE802.3的帧,VLAN Trunk协议如802.1Q和Cisco的CDP(思科发现协议)等则是采用IEEE802.3 SNAP的帧。大家有兴趣的话,可以利用Sniffer等协议分析工具去捕捉数据包,然后解码查看是不是这样的。

    展开全文
  • 14[单选题] 以太网中计算机间以帧为单位进行通信,下列选项中不属于以太网数据帧内容的是( )。  A.IP地址  B.MAC地址  C.有效载荷  D.校验信息  参考答案:A  参考解析:以太网数据帧:前导码(7字节)、...
  • 以太网数据帧(802.3)最大与最小长度2017年03月20日 19:40:01 Farmwang 阅读数:5370更多个人分类: TCP/IP以太网(IEEE 802.3)帧格式: 1、前导码:7字节0x55,一串1、0间隔,用于信号同步2、帧起始定界符:1字节0...
  • 以太网(IEEE 802.3)格式: 1、前导码:7字节0x55,一串1、0间隔,用于信号同步 2、起始定界符:1字节0xD5(10101011),表示一开始 3、DA(目的MAC):6字节 4、SA(源MAC):6字节 5、类型/长度:2字节,0~...
  • 以太网(IEEE 802.3)格式:1、前导码:7字节0x55,一串1、0间隔,用于信号同步2、起始定界符:1字节0xD5(10101011),表示一开始3、DA(目的MAC):6字节4、SA(源MAC):6字节5、类型/长度:2字节,0~1500保留为...
  • 以太网最大和最小、MTU

    千次阅读 2016-07-23 14:32:38
    根据rfc894的说明,以太网封装IP数据包的最大长度是1500字节,也就是说以太网最大长应该是以太网首部加上1500,再加上7字节的前导同步码和1字节的开始定界符,具体就是:7字节前导同步码 + 1字节开始定界符 + ...
  • 以太网帧,IP,TCP,UDP首部结构

    千次阅读 2018-01-24 22:03:57
    1.以太网帧的格式2.IP报头格式IP是TCP/IP协议簇中最为重要的协议。所有的TCP,UDP, ICMP和IGMP数据都以IP数据报格式传输。IP提供的是不可靠、无连接的协议。普通的IP首部长为20个字节,除非含有选项字段。4位版本:...
  • 以太网MAC格式

    万次阅读 2013-10-17 00:57:01
    常用的以太网MAC格式有两种标准 : DIX Ethernet V2 标准 IEEE 的 802.3 标准 最常用的 MAC 以太网V2的格式 类型字段 (2个字节):  用来标志上一层使用的是什么协议,以便把收到的MAC...
  • 以太网帧,IP,TCP,UDP首部结构

    万次阅读 2016-10-13 18:31:37
    1.以太网帧的格式以太网封装格式2.IP报头格式 IP是TCP/IP协议簇中最为重要的协议。所有的TCP,UDP, ICMP和IGMP数据都以IP数据报格式传输。IP提供的是不可靠、无连接的协议。  普通的IP首部长为20个字节,除非含有...
  • 以太网帧格式

    2013-10-23 15:08:17
    以太网帧前导码(Preamble) 8个字节 10101010 10101010 10101010 10101010 10101010 10101010 10101010 10101011   以太网帧本体 首部 14个字节 源MAC地址(6) 目的MAC地址(6) 上层协议类型(2) 数据 46...
  • 以太网协议

    2013-07-26 09:08:48
    以太网帧格式: 1.以太网帧由5个字段组成 1>前两个字段分别为6字节长的目的地址和源地址地段。 2>第三个字段是2字节的类型字段,用来标志上一层使用的是什么协议。 l 类型字段的值为0x0800时,表示...
  • 以太网帧的格式

    2021-07-24 17:36:56
    用于表示数据链路层中包的单位,所以在以太网中传输的数据包又被称为以太网帧。在每个分层中都会对所发送的数据附加一个首部。所以在以太网中的包是由网络层中传输的数据加上以太网首部构成。 以太网帧的格式...
  • 以太网最大和最小 以太网技术基础 关于MAC最小字节的由来 以太网(IEEE 802.3)格式: 1、前导码:7字节0x55,一串1、0间隔,用于信号同步 2、起始定界符:1字节0xD5(10101011),表示一开始 3、DA...
  • 以太网帧

    千次阅读 2016-08-30 18:06:51
    每种格式的以太网帧的开始处都有64比特(8字节)的前导...前导字符的作用是使接收节点进行同步并做好接收数据帧的准备。   目前有四种在用的贞格式,它们分别是:    ●Ethernet II即DIX 2.0:Xerox与DEC、Int

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,982
精华内容 5,192
关键字:

以太网数据帧首部