通过 traceroute 和 networkx 构建网络拓扑图

2024-03-20 10:59

本文主要是介绍通过 traceroute 和 networkx 构建网络拓扑图,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、通过 traceroute 获取网络中的节点
  • 二、使用 networkx 进行绘图
  • 三、traceroute 部分结果及网络拓扑图

一、通过 traceroute 获取网络中的节点

import osdef exec_command():website_list = ["120.78.188.0", "www.baidu.com", "www.csdn.net", "www.bilibili.com", "www.nowcoder.com","www.leetcode.cn", "www.markji.com", "www.gitee.com", "www.github.com", "www.runoob.com","www.zhipin.com", "www.gushiwen.cn", "www.youtube.com", "www.twitter.com", "www.stackoverflow.com","www.paypal.com", "www.cacti.net", "www.wargaming.com", "www.sina.com", "www.caida.org","www.sohu.com", "www.qq.com", "www.iqiyi.com", "www.zhihu.com", "www.ximalaya.com","www.taobao.com", "www.qidian.com", "www.tudou.com", "www.youku.com", "www.jd.com"]file = open('traceroute.txt', 'w')  # 覆盖写index = 1for website in website_list:command = "traceroute -n -m 9 -q 1 -w 1 " + website  # -n 不显示域名 -m 跳数 -q 探测包的个数 -w 响应等待时间file.writelines("[" + str(index) + "] " + command + "\n") # 将命令写入文件index = index + 1ret = os.popen(command).readlines()  # 调用系统命令并写到内存中for i in ret:file.writelines(i)  # 把命令输出写到文件中file.close()if __name__ == "__main__":exec_command()

二、使用 networkx 进行绘图

import reimport matplotlib.pyplot as plt
import networkx as nxdef get_node_and_edge():"""基于 traceroute 结果提取边和节点"""nodes_set = {"127.0.0.1", "192.168.0.1"}  # 节点集合 通过集合自动去重edges_list = []  # 边列表previous_node = "127.0.0.1"  # 用于记录每次 traceroute 过程中上一次访问的节点with open("traceroute.txt", "r") as traceroute:for i in range(1, 31):print(traceroute.readline(), end="")  # 依次打印每条命令for j in range(1, 10):line = traceroute.readline()ip = re.findall(r"\s\s(.*)\s\s", line)  # 提取 ip 地址if len(ip):nodes_set.add(ip[0])  # 添加节点if j == 1:if "127.0.0.1" != ip[0]:node_tuple = ("127.0.0.1", ip[0])else:if previous_node != ip[0]:node_tuple = (previous_node, ip[0])previous_node = ip[0]edges_list.append(node_tuple)  # 添加边return edges_list, list(nodes_set)def draw_network():"""绘制网络拓扑图"""edges_list, nodes_list = get_node_and_edge()G = nx.Graph()for node in nodes_list:G.add_node(node)G.add_edges_from(edges_list)nx.draw(G, with_labels=True, node_size=25, font_size=5)plt.show()if __name__ == "__main__":draw_network()

三、traceroute 部分结果及网络拓扑图

[1] traceroute -n -m 9 -q 1 -w 1 120.78.188.01  192.168.0.1  2.451 ms2  192.168.1.1  3.220 ms3  10.40.16.1  6.572 ms4  218.11.136.57  8.558 ms5  61.182.183.185  11.666 ms6  61.182.184.169  11.787 ms7  112.97.0.202  45.623 ms8  157.148.0.166  64.426 ms9  211.95.149.242  48.744 ms
[2] traceroute -n -m 9 -q 1 -w 1 www.baidu.com1  192.168.0.1  2.847 ms2  192.168.1.1  3.399 ms3  10.40.16.1  7.472 ms4  218.11.136.57  8.126 ms5  61.182.184.13  13.335 ms6  61.182.184.9  19.884 ms7  110.242.66.190  17.743 ms8  221.194.45.134  19.138 ms9  *
...
...
...
[30] traceroute -n -m 9 -q 1 -w 1 www.jd.com1  192.168.0.1  2.769 ms2  192.168.1.1  2.875 ms3  10.40.16.1  6.300 ms4  218.11.171.57  8.563 ms5  61.182.184.5  18.292 ms6  61.182.184.1  19.421 ms7  60.9.12.6  31.128 ms8  *9  *

在这里插入图片描述

这篇关于通过 traceroute 和 networkx 构建网络拓扑图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/829252

相关文章

Spring Cloud:构建分布式系统的利器

引言 在当今的云计算和微服务架构时代,构建高效、可靠的分布式系统成为软件开发的重要任务。Spring Cloud 提供了一套完整的解决方案,帮助开发者快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器等)。本文将探讨 Spring Cloud 的定义、核心组件、应用场景以及未来的发展趋势。 什么是 Spring Cloud Spring Cloud 是一个基于 Spring

Python应用开发——30天学习Streamlit Python包进行APP的构建(9)

st.area_chart 显示区域图。 这是围绕 st.altair_chart 的语法糖。主要区别在于该命令使用数据自身的列和指数来计算图表的 Altair 规格。因此,在许多 "只需绘制此图 "的情况下,该命令更易于使用,但可定制性较差。 如果 st.area_chart 无法正确猜测数据规格,请尝试使用 st.altair_chart 指定所需的图表。 Function signa

基于Spring Boot构建淘客返利平台

基于Spring Boot构建淘客返利平台 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将讨论如何基于Spring Boot构建一个淘客返利平台。 淘客返利平台通过整合各种电商平台的商品信息,提供给用户查询和返利功能,从而实现流量变现。以下是实现一个简单的淘客返利平台的步骤。 1. 项目初始化 首先,使用Spri

使用 AngularJS 从零构建大型应用

0、导言1、准备工作2、构建框架3、丰富你的directives4、公用的services5、用controllers组织业务 导言 纵览线上各种AngularJS教程,大部分都是基础与一些技巧分析。 如果你已经能运行你的ng-app,但又找不到实际案例可以参考。那么本文应该对您有所帮助。 本文将以电商产品:友好速搭 其中的 店铺后台 作为的实际案例,裸奔展示如何从零构建“自以为大型的”A

指令微调数据集构建方法

指令微调(Instruction Tuning),是指使用自然语言形式的数据对预训练后的大语言模型进行参数微调,在一些文章中也称为有监督微调(Supervised Fine-tuning,SFT)或多任务提示训练(Multitask Prompted Training)。指令微调的第一步就是收集或构建指令化的实例,然后通过有监督的方式对LLM的参数进行微调,经过指令微调后,大语言模型能够展现出较强

构建高可用Java微服务架构的秘籍

构建高可用Java微服务架构的秘籍 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 随着云计算和分布式系统的快速发展,微服务架构已成为构建大型应用的首选方案之一。而在构建高可用的Java微服务架构时,开发者需要考虑诸多因素,包括服务发现、负载均衡、容错机制等。本文将分享一些构建高可用Java微服务架构的秘籍,帮助开发者更好地设

昇思25天学习打卡营第5天|网络构建

一、简介: 神经网络模型是由神经网络层和Tensor操作构成的,mindspore.nn提供了常见神经网络层的实现,在MindSpore中,Cell类是构建所有网络的基类(这个类和pytorch中的modul类是一样的作用),也是网络的基本单元。一个神经网络模型表示为一个Cell,它由不同的子Cell构成。使用这样的嵌套结构,可以简单地使用面向对象编程的思维,对神经网络结构进行构建和管理。

构建、标记和发布镜像

构建、标记和发布镜像 目录 构建镜像标记镜像发布镜像实践 设置构建镜像推送镜像 在本指南中,您将学习以下内容: 构建镜像:基于Dockerfile构建镜像的过程。标记镜像:为镜像命名的过程,这也决定了镜像的分发位置。发布镜像:使用容器注册表分发或共享新创建的镜像的过程。 构建镜像 通常情况下,镜像是使用Dockerfile构建的。最基本的构建命令如下: docker build

构建家庭NAS之二:TrueNAS Scale规划、安装与配置

首先声明一下,我用的版本是TrueNAS SCALE 24.04.1.1(目前的最新版本),其它版本的界面和操作方式或有不同。我安装使用过程中网上的一些教程里的操作方式和这个版本不一样,造成了一些困扰。 TrueNAS SCALE的最低硬件需求: 双核64位CPU8 GB内存(推荐16GB)16 GB SSD 系统盘2个相同容量的数据盘(其实1个盘也可以,后面细讲)不需要硬件RAID卡 存储

昇思25天学习打卡营第5天 | 网络构建

内容介绍:神经网络模型是由神经网络层和Tensor操作构成的,mindspore.nn提供了常见神经网络层的实现,在MindSpore中,Cell类是构建所有网络的基类,也是网络的基本单元。一个神经网络模型表示为一个`Cell`,它由不同的子`Cell`构成。使用这样的嵌套结构,可以简单地使用面向对象编程的思维,对神经网络结构进行构建和管理。 具体内容: 1. 导包 import minds