首页 > 其他分享 >0211-使用 dummy 发送数据

0211-使用 dummy 发送数据

时间:2024-08-09 10:41:50浏览次数:6  
标签:dummy 00 ip 0211 link ff 发送数据 mydummy 网络接口

环境

  • Time 2022-11-20
  • WSL-Ubuntu 22.04
  • Rust 1.65.0
  • pnet 0.31.0

前言

说明

参考:https://docs.rs/pnet_datalink/0.31.0/pnet_datalink/linux

目标

前面使用了 pnet 自己模拟的一个数据链路层的发送和接收过程。
现在使用 linux 的 dummy 来模拟数据的发送和接收。

新建网络接口

新建一个网络接口:

root@jiangbo12490:~# ip link add mydummy type dummy
root@jiangbo12490:~# ip -s link show mydummy
8: mydummy: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 36:e0:f1:2a:e8:45 brd ff:ff:ff:ff:ff:ff
    RX:  bytes packets errors dropped  missed   mcast
             0       0      0       0       0       0
    TX:  bytes packets errors dropped carrier collsns
             0       0      0       0       0       0

其中 ip link add 命令可以新增一个网络接口,type 指定了类型。
使用 ip -s link show mydummy 查看了网络接口的当前状态。

启用网络接口

root@jiangbo12490:~# ip  link set mydummy up
root@jiangbo12490:~# ip -s link show mydummy
8: mydummy: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether 36:e0:f1:2a:e8:45 brd ff:ff:ff:ff:ff:ff
    RX:  bytes packets errors dropped  missed   mcast
             0       0      0       0       0       0
    TX:  bytes packets errors dropped carrier collsns
           140       2      0       0       0       0

ip link set mydummy up 是启用网络接口。
启动后查看状态,可以看到已经传送了两个包了,长度 140 字节。

监听网络接口

可以使用 tcpdump 命令监听网络接口上的流量,又叫抓包。

root@jiangbo12490:~/git/game# tcpdump -e -vv -i mydummy
tcpdump: listening on mydummy, link-type EN10MB (Ethernet), snapshot length 262144 bytes


发送数据

use pnet_datalink::{linux, Channel};

fn main() {
    let interfaces = linux::interfaces();

    let dummy: Vec<_> = interfaces
        .into_iter()
        .filter(|e| e.name == "mydummy")
        .collect();

    let config = linux::Config::default();
    let channel = linux::channel(&dummy[0], config);
    let (mut sender, mut _reader) = match channel {
        Ok(Channel::Ethernet(tx, rx)) => (tx, rx),
        _ => panic!("Not a valid channel returned"),
    };

    sender.build_and_send(1, 14, &mut |_| {});
}

tcpdump 的显示

root@jiangbo12490:~/git/game# tcpdump -e -vv -i mydummy
tcpdump: listening on mydummy, link-type EN10MB (Ethernet), snapshot length 262144 bytes

20:55:41.681667 00:00:00:00:00:00 (oui Ethernet) > 00:00:00:00:00:00 (oui Ethernet), 802.3, length 0:  [|llc]

tcpdump 显示了信息,证明数据包确实发送到了网络接口上。
也可以使用 ip -s link show mydummy 查看,数据包增加了一个。

总结

使用了 linux dummy 网络接口来进行数据的发送。

附录

标签:dummy,00,ip,0211,link,ff,发送数据,mydummy,网络接口
From: https://www.cnblogs.com/jiangbo4444/p/18350334

相关文章

  • 0212-使用 dummy 收发数据
    环境Time2022-11-20WSL-Ubuntu22.04Rust1.65.0pnet0.31.0前言说明参考:https://docs.rs/pnet_datalink/0.31.0/pnet_datalink/linux目标前面使用了pnet发送了一个数据包,这里发送一个数据包,然后接收并显示出来。接收数据usepnet_datalink::{linux,Channel};f......
  • [SDR] GNU Radio 系列教程 —— GNU Radio TX PDU (发送数据包操作)的基础知识(超全)
    目录1PDU概述2Demo详解2.1RandomPDUGenerator2.2AsyncCRC322.3ProtocolFormatter(Async)2.4将header和payload合并输出2.5对PDU实施突发填充和渐变2.6RRC滤波与多相任意重采样2.6.1FIR滤波器例子2.6.2滤波器基础及RRC知识1)什么时候用RRC?2)什么是RRC?3......
  • gym102114K. Kaleidoscope
    神必burnside题题目大意给出一个60面体,求用n种颜色染色的方案数(旋转同构),第i种要用至少\(c_i\)次对p取模(p不是质数)展开图:题解显然一眼burnside/polya,考虑求出所有的置换感受一下,一个二维的正方形需要1种顺时针旋转90°得到所有置换,一个三维的正方体需要2种90°旋转得到所......
  • 如何检测 Windows 应用程序 (.exe) 是否正在向外部发送数据?
    我正在使用用Python编写的Windows应用程序(.exe)来操作文件夹中的文件。我怀疑此应用程序可能在未经许可的情况下将我的文件发送到远程服务器。如何验证此应用程序是否正在建立不需要的网络连接?具体来说:有没有办法检查此应用程序是否正在连接到互联网,而无需对源......
  • 当我们创建一个在 https 服务器上获取和发送数据的 python 应用程序时,我们应该如何处
    python脚本使用Urllib3,我的服务器是在Node.js上编写的脚本。我担心(并且不清楚)证书:我是否需要将我的python应用程序上的证书另存为变量?例如我这样做了,http=urllib3.PoolManager(cert_reqs="CERT_REQUIRED",ca_certs='client-cert.pem')并且我不知道......
  • django“晋农进商”农产品跨境电子商务平台-计算机毕业设计源码60211
    摘要在全球化的浪潮下,电子商务已成为连接各国市场、促进贸易往来的重要桥梁。特别是在农产品领域,跨境电子商务平台的崛起不仅打破了地域限制,也为农民和消费者提供了前所未有的便利与机遇。在这一背景下,“晋农进商”农产品跨境电子商务平台应运而生,旨在将山西乃至全国的优质农......
  • 为什么执行代码,烧入程序之后,电脑对单片机发送数据,但是单片机不反应
    #include"stm32f10x.h"      #include"Uart.h"#include<stdio.h>#include<stdarg.h>u8USART1_RX_BUF[64];  //接收缓冲,最大64个字节.//接收状态//bit7,接收完成标志//bit6,接收到0x0d//bit5~0,接收到的有效字节数目u16USART1_RX_STA=0;   ......
  • nl80211
    同wpa_supplicant、hostapd一样,nl80211也可以管理无线网络,不同的是wpa_supplicant和hostapd是通过nl80211管理无线网络。 Linux平台上目前常用的专门针对无线网络设备编程的API有两套最早的一套API由HP公司员工JeanTourrilhes于1997年开发,全称为LinuxWirelessExt......
  • 程序可以加入到一个多播组中并等待服务器发送数据包,并且程序还需要具有发送功能,如果收
    /****************************************************************************************************************************************字节序:数据以字节流的方式进行传输,底层都是采用二进制,字节流的顺序是由架构决定的,现在假设使用X86架构,是采用小端存储* 网络......
  • 设计程序,要求程序可以加入到一个多播组中并等待服务器发送数据包,并且程序还需要具有发
    目录题目分析代码结果题目小组实现,小组中的每位成员都需要设计程序,要求程序可以加入到一个多播组中并等待服务器发送数据包,并且程序还需要具有发送功能,如果收到数据包则把消息内容输出到终端,消息内容格式[消息来源IP消息时间]:消息内容分析1.发送端需设置套接字的广......