Python3 透明网桥算法

import time
#定义网桥1
b1 = {}
port_list1 = [1, 2]
#主机列表
L1 = ['a','b','c']
L2 = ['d','e']
L = [L1,L2]
def get_time():
#获取每次记录的时间
t = int(time.time()*10) #毫秒级
# print(t)
t = str(t)[-5:] #保留从毫秒开始的前五位
# print(t)
return t
def get_port(sendform):
#确定当前主机发送的消息进入哪个端口
#模拟物理上的端口链接
if sendform in L1:
return 1
else:
return 2
def deal_dic():
#当网桥的字典中元素超过三个时,排序并删除时间最早的那个
if len(b1) > 3:
sorted(b1.items(), key=lambda x: x[1], reverse=False)
for i in range(3, len(b1)):
b1.pop(list(b1.keys())[0])
def send(sendfrom, sendto):
#传入发送地址和目的地址
bridge = b1
#获取网桥接口
inport = get_port(sendfrom)
#获取时间
t = get_time()
#遍历所有的主机分组
for l in L:
if sendfrom in l:
bridge[sendfrom] = [inport,t]
if sendto in l:
bridge[sendto] = [inport,t]
print('同一网段,不转发')
elif sendto in bridge:
print('查找成功,转发至'+ str(bridge[sendto][0]) + '号端口')
else:
# 获取非获取帧的其他接口
other_port = [x for x in port_list1 if not x is inport]
bridge[sendto] = [other_port[0],t]
print('查找失败,转发至'+str(bridge[sendto][0]) + '号端口')
while True:
a = (input('请输入发送站点:'))
b = (input('请输入目的站点:'))
send(a, b)
deal_dic()
print(b1)

注: 只实现了一个网桥和两个网段之间的帧的处理
Python3 透明网桥算法的更多相关文章
- 计算机网络透明网桥算法时间戳c++
要交CG的兄弟们别抄啊,撞上了严nan谁都不会放过的 好久没写博客了,这次是老师布置的作业,做出来一种,觉得写得很不好,第一种方法把情况都写死在代码里了. 上代码 #include<iostre ...
- 2017-2018-2 20179207 《网络攻防技术》第十三周作业 python3实现SM234算法
国密算法SM234 的python3实现 国家标准 GM/T 0002-2012 <SM4分组密码算法> GM/T 0003.1-2012 <SM2椭圆曲线公钥密码算法 第1部分:总 ...
- Python3实现Two-Pass算法检测区域连通性
技术背景 连通性检测是图论中常常遇到的一个问题,我们可以用五子棋的思路来理解这个问题五子棋中,横.竖.斜相邻的两个棋子,被认为是相连接的,而一样的道理,在一个二维的图中,只要在横.竖.斜三个方向中的一 ...
- 关于 centos 7系统,iptables透明网桥实现【转载请注明】
首先建立网桥:(使用bridge) 示例 桥接eth0 与 eth1 网口 /sbin/modprobe bridge /usr/sbin/brctl addbr br0 /sbin/ifup ...
- sort、sorted高级排序-Python3.7 And 算法<七>
1.sort(*, key=None, reverse=False) sort()接受两个参数,这两个参数只能通过关键字(关键字参数)传递. 参数key:带一个参数的函数(排序时,会依次传入列表的每一 ...
- python3的C3算法
一.基本概念 1. mro序列 MRO是一个有序列表L,在类被创建时就计算出来. 通用计算公式为: mro(Child(Base1,Base2)) = [ Child ] + merge( mro(B ...
- python3数据结构与算法
python内置的数据结构包括:列表(list).集合(set).字典(dictionary),一般情况下我们可以直接使用这些数据结构,但通常我们还需要考虑比如搜索.排序.排列以及赛选等一些常见的问题 ...
- Python3 决策树ID3算法实现
# -*- coding: utf-8 -*- """ Created on Wed Jan 24 19:01:40 2018 @author: markli 采用信息增 ...
- Python3 kmeans 聚类算法
# -*- coding: utf-8 -*- """ Created on Wed Jan 10 19:18:56 2018 @author: markli " ...
随机推荐
- 安装Xcode主题
安装Xcode主题 下载地址 https://github.com/YouXianMing/Xcode-Themes 安装教程 1. 安装文件夹中的字体 2. 如下图,执行 ./cp_themes.s ...
- [零基础学JAVA]Java SE面向对象部分.面向对象基础(06)
1.interface 接口 2.设计模式(工厂模式) 3.异常的捕获 java: //接口中定义的全是public,即使不声明也是public的,//如果一个类定义的时候全部由抽象方法和全局常量所组 ...
- 原生JS实现轮播图的效果
原生JS实现轮播图的效果: 只要缕清了全局变量index的作用,这个轮播图也就比较容易实现了:另外,为了实现轮这个效果,有几处clearInterval()必须写上.废话不多说,直接上代码,修复了几个 ...
- Kali-linux使用Metasploitable操作系统
Metasploitable是一款基于Ubuntu Linux的操作系统.该系统是一个虚拟机文件,从http://sourceforge.net/projects/metasploitable/fil ...
- 算法——(4)哈希、hashmap、hashtable
1. Hash 把任意长度的输入通过散列算法,变换成固定长度的输出,该输出就是散列值.拥有四个特性: 1. 拥有无限的输入域和固定大小的输出域 2. 如果输入值相同,返回值一样 3. 如果输入值不相同 ...
- CVPR2018_Crafting a Toolchain for Image Restoration by Deep Reinforcement Learning
CVPR2018_Crafting a Toolchain for Image Restoration by Deep Reinforcement Learning http://mmlab.ie.c ...
- 错误:maximum number of expressions in a list is 1000
某一日发现这么如下这么一个错误 --> maximum number of expressions in a list is 1000 原因:因为SQL语句中用到了IN字句,而IN中的元素个数 ...
- 用JavaScript中jQuery编写放大镜效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 处理Model
将Model对象归档解档 - CSDN博客 iOS archive(归档)的总结 - 苹果吧 - 博客园 IOS数据持久化之归档NSKeyedArchiver,iosnskeyedarchiver_I ...
- vue面试题!!!
由于公司需要,需要把项目拆分,前端使用vue框架.最近面试vue总结的试题 1:mvvm框架是什么?它和其他框架的区别是什么? mvvm 全称model view viewModel,model数据模 ...