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 透明网桥算法的更多相关文章

  1. 计算机网络透明网桥算法时间戳c++

    要交CG的兄弟们别抄啊,撞上了严nan谁都不会放过的 好久没写博客了,这次是老师布置的作业,做出来一种,觉得写得很不好,第一种方法把情况都写死在代码里了. 上代码 #include<iostre ...

  2. 2017-2018-2 20179207 《网络攻防技术》第十三周作业 python3实现SM234算法

    国密算法SM234 的python3实现 国家标准 GM/T 0002-2012 <SM4分组密码算法> GM/T 0003.1-2012 <SM2椭圆曲线公钥密码算法 第1部分:总 ...

  3. Python3实现Two-Pass算法检测区域连通性

    技术背景 连通性检测是图论中常常遇到的一个问题,我们可以用五子棋的思路来理解这个问题五子棋中,横.竖.斜相邻的两个棋子,被认为是相连接的,而一样的道理,在一个二维的图中,只要在横.竖.斜三个方向中的一 ...

  4. 关于 centos 7系统,iptables透明网桥实现【转载请注明】

    首先建立网桥:(使用bridge)    示例 桥接eth0 与 eth1 网口 /sbin/modprobe bridge /usr/sbin/brctl addbr br0 /sbin/ifup ...

  5. sort、sorted高级排序-Python3.7 And 算法<七>

    1.sort(*, key=None, reverse=False) sort()接受两个参数,这两个参数只能通过关键字(关键字参数)传递. 参数key:带一个参数的函数(排序时,会依次传入列表的每一 ...

  6. python3的C3算法

    一.基本概念 1. mro序列 MRO是一个有序列表L,在类被创建时就计算出来. 通用计算公式为: mro(Child(Base1,Base2)) = [ Child ] + merge( mro(B ...

  7. python3数据结构与算法

    python内置的数据结构包括:列表(list).集合(set).字典(dictionary),一般情况下我们可以直接使用这些数据结构,但通常我们还需要考虑比如搜索.排序.排列以及赛选等一些常见的问题 ...

  8. Python3 决策树ID3算法实现

    # -*- coding: utf-8 -*- """ Created on Wed Jan 24 19:01:40 2018 @author: markli 采用信息增 ...

  9. Python3 kmeans 聚类算法

    # -*- coding: utf-8 -*- """ Created on Wed Jan 10 19:18:56 2018 @author: markli " ...

随机推荐

  1. 采用powershell创建project网站集(摘抄自https://www.cnblogs.com/jindahao/p/5855668.html)

    采用powershell创建project网站集,具体步骤如下 1.输入License Enable-ProjectServerLicense –Key "23CB6-N4X8Q-WWD7M ...

  2. Effective C++(6) 如何拒绝编译器的自动生成函数

    问题聚焦: 如果不希望class支持某一成员函数,那么不声明和定义它就可以了,但是这一策略对与拷贝构造函数和重载赋值操作符并不起作用. 因为如果不声明它们,那么当尝试调用它们的时候,编译器会为你声明和 ...

  3. Java学习---RMI 技术分析[Hessian]

    一.什么是Hessian Hessian 是一个基于 binary-RPC 实现的远程通讯 library.使用二进制传输数据.Hessian通常通过Web应用来提供服务,通过接口暴露.Servlet ...

  4. Bearer Token的加密解密规则(OAuth中间件)

    在OAuthBearerAuthenticationMiddleware中使用Microsoft.Owin.Security.DataHandler. SecureDataFormat<TDat ...

  5. Tomcat的HTTPS配置及HTTP自动跳转配置

    1.生成证书 (1)在jdk的安装目录\bin\keytool.exe下打开keytool.exe 在命令行中输入以下命令: keytool -genkeypair -alias 以上命令将生产一对非 ...

  6. python的os和sys模块

    OS模块: 提供对操作系统进行调用的接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目 ...

  7. cascade属性

    cascade属性是设置级联操作的也就是在操作一端的数据如果影响到多端数据时会进行级联操作,一对一的时候直接写在标签上,其他的要写在set标签上 cascade="none|save-upd ...

  8. h5标签

    1.<abbr> 标签指示简称或缩写,比如 "WWW" 或 "NATO". IE 6 或更早版本的 IE 浏览器不支持 <abbr> 标 ...

  9. Unable to perform unmarshalling at line number 16 and column 63 in RESOURCE hibernate.cfg.xml. Message: cvc-elt.1: 找不到元素 'hibernate-configuration' 的声明。

    七月 02, 2017 4:32:37 下午 org.hibernate.Version logVersionINFO: HHH000412: Hibernate Core {5.2.10.Final ...

  10. 激活pycharm

    1. 修改hosts文件: 添加下面一行到hosts文件,目的是屏蔽掉Pycharm对激活码的验证**0.0.0.0 account.jetbrains.com ** windwos系统hosts文件 ...