CLICK 直接使用以太帧发送数据

本文介绍如何使用Click模块实现定制化的网络数据包发送与接收,包括构造特定格式的数据包、利用EtherEncap封装以太帧头及设定广播目标MAC地址等关键技术点。同时,文章还探讨了EthernetV2帧头结构及其协议类型字段的含义,提供了接收端Click配置示例。

click文件:

发送:

SendGet(INTERVAL 1)->out1 :: Queue(200) ->
EtherEncap(0X1110,38:f9:d3:2d:b4:64,FF:FF:FF:FF:FF:FF)->
ToDevice(en0);

SendGet是我改装TimeSource(click自带的element)得到的,它主要功能就是发送我固定的包头格式的包。

在wiki中可以看到很多名字里带source的基本都是发包的元素(以一定的速率等等)

 

使用EtherEncap封装以太帧的头 ,这里我设置的协议字段为 0x1110 (这个只要是标识我设置的包,这个数值可以根据自己的喜好设定,但是需要在一个范围,具体看下面的补充知识点)  目的mac我使用的是广播,也就是在通信范围内的网卡都能收到。

到这里其实已经可以用wireshark抓到包了

我们也可以写一个接受的click

接收:

在另一台机器上写一个click文件可以用来接收

使用 FromDevice(wlan0)来接收,接受之后可以进行一些输出。

 

补充知识点:

Ethernet V2帧头结构为  6bytes的源地址+6bytes的目标地址+2Bytes 的协议类型字段+数据。 常见协议类型如下: 0800       IP 0806       ARP 0835       RARP 8137       Novell IPX 809b       Apple Talk 如果协议类型字段取值为0000-05dc(十进制的0-1500),则该帧就不是Ethernet V2(ARPA)类型了(PR,SD,PAD,FCS这几个数据段我们不用理它 ,它是由网卡自动产生的,我们要理的是DA,SA,TYPE,DATA四个段的内容.)

常见的的类型 DA SA 之后是 TYPE

 

而如果协议类型字段小于 0x05dc时,该字段变为 Length   ,它指明其后数据域的长度,其取值范围为:46-1500。

 

更加具体的细分可以在这个博客里看到 https://www.cnblogs.com/TigerGOGO/archive/2013/05/28/3103325.html

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值