欢迎关注我的公众号是【CodeAllen】,关注回复【1024】获取资源
程序员技术交流①群:736386324 ,程序员技术交流②群:371394777

以太网链路传输的数据包称做以太帧,或者以太网数据帧。在以太网中,网络访问层的软件必须把数据转换成能够通过网络适配器硬件进行传输的格式。

以太帧的工作机制

当以太网软件从网络层接收到数据报之后,需要完成如下操作:

1) 根据需要把网际层的数据分解为较小的块,以符合以太网帧数据段的要求。

以太网帧的整体大小必须在 64~1518 字节之间(不包含前导码)。有些系统支持更大的帧,最大可以支持 9000 字节。有些系统支持更大的帧,最大可以支持 9000 字节。

2) 把数据块打包成帧。每一帧都包含数据及其他信息,这些信息是以太网网络适配器处理帧所需要的。

3) 把数据帧传递给对应于 OSI 模型物理层的底层组件,后者把帧转换为比特流,并且通过传输介质发送出去。

4) 以太网上的其他网络适配器接收到这个帧,检查其中的目的地址。如果目的地址与网络适配器的地址相匹配,适配器软件就会处理接收到的帧,把数据传递给协议栈中较高的层。

以太帧的结构

以太帧起始部分由前同步码和帧开始定界符组成,后面紧跟着一个以太网报头,以 MAC 地址说明目的地址和源地址。以太帧的中部是该帧负载的包含其他协议报头的数据包,如 IP 协议。

以太帧由一个 32 位冗余校验码结尾,用于检验数据传输是否出现损坏。以太帧结构如图所示。

上图中每个字段的含义如下表所示:

字段 含义
前同步码 用来使接收端的适配器在接收 MAC 帧时能够迅速调整时钟频率,使它和发送端的频率相同。前同步码为 7 个字节,1 和 0 交替。
帧开始定界符 帧的起始符,为 1 个字节。前 6 位 1 和 0 交替,最后的两个连续的 1 表示告诉接收端适配器:“帧信息要来了,准备接收”。
目的地址 接收帧的网络适配器的物理地址(MAC 地址),为 6 个字节(48 比特)。作用是当网卡接收到一个数据帧时,首先会检查该帧的目的地址,是否与当前适配器的物理地址相同,如果相同,就会进一步处理;如果不同,则直接丢弃。
源地址 发送帧的网络适配器的物理地址(MAC 地址),为 6 个字节(48 比特)。
类型 上层协议的类型。由于上层协议众多,所以在处理数据的时候必须设置该字段,标识数据交付哪个协议处理。例如,字段为 0x0800 时,表示将数据交付给 IP 协议。
数据 也称为效载荷,表示交付给上层的数据。以太网帧数据长度最小为 46 字节,最大为 1500 字节。如果不足 46 字节时,会填充到最小长度。最大值也叫最大传输单元(MTU)。

在 Linux 中,使用 ifconfig 命令可以查看该值,通常为 1500。

帧检验序列 FCS 检测该帧是否出现差错,占 4 个字节(32 比特)。发送方计算帧的循环冗余码校验(CRC)值,把这个值写到帧里。接收方计算机重新计算 CRC,与 FCS 字段的值进行比较。如果两个值不相同,则表示传输过程中发生了数据丢失或改变。这时,就需要重新传输这一帧。

构建以太帧

通过上面的学习了解了以太帧的结构。用户可以根据需要设置以太帧的字段值,从而构建以太帧。netwox 工具中编号为 32 的模块提供了以太帧构建功能。

【示例】构建以太网数据帧。

1) 查看以太网数据帧,执行命令如下:

root@daxueba:~# netwox 32

输出信息如下:

Ethernet________________________________________________________.
| 00:0C:29:CA:E4:66->00:08:09:0A:0B:0C type:0x0000           |
|____________________________________________________________   |

上述输出信息中的 00:0C:29:CA:E4:66 为源 MAC 地址,是当前主机的 MAC 地址;00:08:09:0A:0B:0C 为目标 MAC 地址,0x0000 为以太网类型。

2) 构建以太帧,设置源 MAC 地址为 00:0c:29:c4:8a:de,目标 MAC 地址为 01:02:03:04:05:06,执行命令如下:

root@daxueba:~# netwox 32 -a 00:0c:29:c4:8a:de -b 01:02:03:04:05:06

输出信息如下:

Ethernet________________________________________________________.
| 00:0C:29:C4:8A:DE->01:02:03:04:05:06 type:0x0000              |
|_____________________________________________________________    |

3) 为了验证构建的以太帧,通过 Wireshark 工具进行抓包。在链路层中可以看到伪造的源 MAC 地址和目标 MAC 地址,信息如下:

Ethernet II, Src: Vmware_c4:8a:de (00:0c:29:c4:8a:de), Dst:

Woonsang_04:05:06(01:02:03:04:05:06)

4) 为了不被其他主机发现,在构造数据包时,可以指定假的源MAC地址。但是,每构造一次只能发送一个数据包。如果需要发送多个数据包,就需要构造多次。

为了方便,可以使用 macchanger 工具临时修改 MAC 地址,这样就不需要每次构造假的源 MAC 地址了。例如,将当前主机的 MAC 地址修改为 00:0c:29:aa:e0:28,执行命令如下:

Current MAC:         00:0c:29:ca:e4:66 (VMware, Inc.)
Permanent MAC:    00:0c:29:ca:e4:66 (VMware, Inc.)
New MAC:              00:0c:29:aa:e0:28 (VMware, Inc.)

以上输出信息表示当前主机原来的 MAC 地址为 00:0c:29:ca:e4:66,修改后的 MAC 地址为 00:0c:29:aa:e0:28。

5) 再次使用 netwox 工具进行发包,默认使用修改后的 MAC 地址作为源 MAC 地址,如下:

root@daxueba:~# netwox 32

输出信息如下:

Ethernet_________________________________________________
| 00:0C:29:AA:E0:28->00:08:09:0A:0B:0C type:0x0000    |
|_______________________________________________________    |

以太帧洪水攻击

交换机为了方便数据传输,通常会存储每个端口所对应的 MAC 地址,形成一张表。当交换机收到计算机发来的以太帧时,就会查看帧中的源 MAC 地址,并查找存储的表:

  • 如果表中存在该 MAC 地址,就直接转发数据;
  • 如果没有,则将该 MAC 地址存入该表中。

当其他计算机向这个 MAC 地址发送数据时,可以快速决定向哪个端口发送数据。由于该表不可能是无穷大的,所以当达到一定数量时,将不会储存其他新的 MAC 地址。再有新的主机发来数据帧时,部分交换机将不再查找对应的端口,而是以广播的形式转发给所有的端口。这样,就使其他主机可以接收到该数据帧了。

netwox 工具提供编号为 75 的模块,用来实现以太帧洪水攻击功能。它可以伪造大量的以太网数据包,填满交换机的存储表,使交换机失去正确的转发功能。

实施以太帧洪水攻击,执行命令如下:

root@daxueba:~# netwox 75

执行命令后没有任何输出信息,但是会发送大量的以太网数据包。

使用 Wireshark 工具进行抓包,如图所示。图中捕获的数据包为以太帧洪水攻击产生的数据包。

本文为转载,仅供学习,转载请联系原作者
http://c.biancheng.net/tcp_ip/

9.以太网数据帧格式(结构)图解相关推荐

  1. TCP/IP网络协议栈:以太网数据包结构、802.3、MTU

    <TCP/IP网络协议栈:以太网数据包结构.802.3> <TCP/IP网络协议栈:ARP协议详解> <TCP / IP攻击:ARP缓存中毒的基本原理.TCP序列号预测和 ...

  2. 以太网数据帧格式及ARP协议

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

  3. 以太网数据包、IP包、TCP/UDP 包的结构(转)

    源:以太网数据包.IP包.TCP/UDP 包的结构 版本号(Version):长度4比特.标识目前采用的IP协议的版本号.一般的值为0100(IPv4),0110(IPv6). IP包头长度(Head ...

  4. 以太网 VLAN数据帧格式、交换机接口类型介绍、u和t的区别和作用

    2.8.2 以太网 VLAN(VLAN数据帧格式.交换机接口类型) 原始的以太网数据帧没有802.1QTag字段,在网络中进行转发的时候能够被主机接收.解封查看. 而一但有了802.1Q Tag字段的 ...

  5. Winpcap进行抓包,分析数据包结构并统计IP流量

    2020年华科计算机网络实验 文末有完整代码,仅限参考 一.实验目的 随着计算机网络技术的飞速发展,网络为社会经济做出越来越多的贡献,可以说计算机网络的发展已经成为现代社会进步的一个重要标志.但同时, ...

  6. 3. 以太网帧的结构

    以太网帧的结构 网络通信协议 分层模型-OSI OSI模型-数据发送和接收过程 TCP/IP 传输控制协议/网络协议 数据封装 帧格式 Etehernet_II帧格式: IEEE 802.3帧格式: ...

  7. JAVA网络编程:TCP/IP数据包结构

    2019独角兽企业重金招聘Python工程师标准>>> 一般来说,网络编程我们仅仅须要调用一些封装好的函数或者组件就能完毕大部分的工作,可是一些特殊的情况下,就须要深入的理解网络数据 ...

  8. TCP,IP数据包结构

    TCP/IP协议中各层的数据报结构是一个比较抽象的内容,大家在日常学习过程中往往难以理解和掌握,常常是死记硬背把它记住了事.本文首先利用Sniffer工具捕获了FTP命令操作过程中的所有数据包,然后对 ...

  9. 以太网 数据包速率计算方法

    以太网 数据包速率计算方法 我们知道1个千兆端口的线速包转发率是1.4881MPPS, 百兆端口的线速包转发率是0.14881MPPS,这是国际标准,但是如何得来的呢? 具体的数据包在传输过程中会在每 ...

最新文章

  1. Android10桌面启动器高级版,SONY Xperia launcher-索尼Z5桌面启动器下载10.0.A.0安卓最新版-西西软件下载...
  2. FileLocatorPro正则表达式批量搜索文件中的字符串
  3. oracle 回滚空间查询,oracle回滚段和回滚表空间操作
  4. 万事开头难,用HTML写的第一个界面,收获颇多
  5. file_operations结构体
  6. Ubuntu16.04下部署 nginx+uwsgi+django1.9.7(虚拟环境pyenv+virtualenv)
  7. 【基础】网络常见的9大命令,非常实用!
  8. Eclipse 4.7(Oxygen)安装Tomcat Plugin 后没有小猫图标解决方法
  9. alitum designer 的PCB生成gerber文件步骤
  10. 四川自考计算机信息管理专业,计算机信息管理专业2019年10月四川自考科目及考试时间[本科]...
  11. HTML5 SVG生成图案背景样式的js插件
  12. warning: ISO C forbids an empty translation unit [-pedantic]
  13. HttpClient 4.2.3 (GA) 这些名字里面都有GA,GA代表什么意思啊?
  14. Docker 18.09.0更换阿里镜像加速器
  15. 如何在mac版chrome安装第三方插件
  16. b站爬虫,用于查询主播舰队用户等级构成
  17. CCProxy + Proxifier 通过另一台电脑访问网络
  18. 用计算机弹生僻字乐谱,【计算器乐谱】抖音生僻字计算器乐谱 抖音生僻字计算器数字简谱...
  19. Elasticsearch:Runtime fields 及其应用(一)
  20. Linux中查看压缩包的内容,linux中肿么查看压缩包中的内容

热门文章

  1. linux jlink软件安装,jlink 在LINUX下安装
  2. 4G/5G多卡聚合融合通信设备 在应急行业领域应用解决方案
  3. telnet端口解决如何连接的问题
  4. 浅谈压缩感知(二十八):压缩感知重构算法之广义正交匹配追踪(gOMP)
  5. ajax中cache什么意思,ajax之cache血与泪~~
  6. 基于Hyperledger Fabric的学位学历认证管理系统
  7. 戴尔OptiPlex商务台式机限时5折起,助力小企业加速成长!
  8. 分布式缓存:爱我你怕了吗?
  9. 输出如下图所示的下三角形乘法九九表。
  10. 登陆界面设计(设置按回车登录)