triumph_421 2023-06-15 19:39 采纳率: 50%
浏览 11
已结题

sdn网络中使用scapy库实现终端之间发送数据包

在Ubuntu系统中利用mininet构建好了网络拓扑后,怎么让拓扑中的主机之间发送数据包呢?
比如说现在构建了两台主机h1和h2,现在要让h1发送特定协议类型的数据包(区别于ping的icmp报文)给h2呢?如果是编写利用scapy库编写python脚本的话,这个python文件应该放在什么地方运行呢?(就是如何把python文件里写的行为和使用mininet构建的拓扑结构对应起来)

  • 写回答

1条回答 默认 最新

  • 泡沫o0 2023年度博客之星上海赛道TOP 1 2023-06-16 22:19
    关注

    Scapy是一个强大的Python库,可以用于创建、解析和发送网络包。在Mininet创建的网络拓扑中,你可以使用Scapy库让主机发送数据包。

    以下是一个基本示例,这个脚本创建一个简单的ICMP(ping)请求,并将其发送到网络上:

    from scapy.all import *
    
    #创建ICMP包
    icmp = IP(dst="10.0.0.2")/ICMP()
    
    #发送ICMP包
    send(icmp)
    

    如果你需要从一个特定的主机(比如h1)发送这个数据包,你需要在h1上运行这个Python脚本。你可以在Mininet的交互式CLI中执行这个操作:

    mininet> h1 python send_icmp.py
    

    在上面的命令中,send_icmp.py是你的Python脚本,它需要在你启动Mininet的同一目录下,或者在你的PYTHONPATH环境变量中。

    你也可以在你的Mininet拓扑脚本中使用Python的subprocess库执行这个命令,例如:

    import subprocess
    subprocess.call(['xterm', '-e', 'python send_icmp.py &'])
    

    请注意,你的网络配置可能需要更复杂的设置,例如你可能需要配置路由,或者根据你的需求修改数据包的内容。此外,你需要有适当的权限才能发送原始数据包,这通常意味着你需要以root权限运行你的脚本。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 7月27日
  • 已采纳回答 7月19日
  • 创建了问题 6月15日

悬赏问题

  • ¥15 多址通信方式的抗噪声性能和系统容量对比
  • ¥15 winform的chart曲线生成时有凸起
  • ¥15 msix packaging tool打包问题
  • ¥15 finalshell节点的搭建代码和那个端口代码教程
  • ¥15 Centos / PETSc / PETGEM
  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答