zoukankan      html  css  js  c++  java
  • 2018-2019-2 20189215 《网络攻防技术》第十周作业

    冯·诺依曼体系结构与图灵机

    冯·诺依曼体系结构

    • 冯·诺伊曼结构是一种将程序指令存储器和数据存储器合并在一起的计算机设计概念结构,是一种实现通用图灵机的计算设备,以及一种相对于并行计算的序列式结构参考模型。冯·诺依曼结构将存储设备与中央处理器分开,因此依据冯·诺依曼结构设计出的计算机又称存储程序计算机。
    ![](https://img2018.cnblogs.com/blog/1506992/201905/1506992-20190505113458080-2005994139.jpg)
    - 存储程序计算机在体系结构上主要特点有: + 以运算单元为中心 + 采用存储程序原理 + 存储器是按地址访问、线性编址的空间 + 控制流由指令流产生 + 指令由操作码和地址码组成 + 数据以二进制编码 - 冯.诺依曼体系结构是现代计算机的基础,现在大多计算机仍是冯.诺依曼计算机的组织结构,只是作了一些改进而已,并没有从根本上突破冯体系结构的束缚。冯.诺依曼也因此被人们称为“计算机之父”。

    图灵机

    • 一张经典的图灵机构成图
    ![](https://img2018.cnblogs.com/blog/1506992/201905/1506992-20190505113505961-405838577.jpg)
    - 图灵的基本思想是用机器来模拟人们用纸笔进行数学运算的过程,它把运算过程看作下列两种简单的动作,每个阶段,人要决定下一步的动作,依赖于此人当前所关注的纸上某个位置的符号和此人当前思维的状态。 + 在纸上写上或擦除某个符号 + 把注意力从纸的一个位置移动到另一个位置 - 逻辑结构上图灵机有四个部分组成,"输入集合、输出集合、内部状态、固定的程序指令"抓住了二维信息处理的根本。 + 一个无限长的存储带,带子有一个个连续的存储格子组成,每个格子可以存储一个数字或符号 + 一个读写头,读写头可以在存储带上左右移动,并可以读、修改存储格上的数字或符号 + 内部状态存储器,该存储器可以记录图灵机的当前状态,并且有一种特殊状态为停机状态 + 控制程序指令,指令可以根据当前状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作(左移还是右移),并改变状态存储器的值,令机器进入一个新的状态或保持状态不变。 - 图灵机的正式定义 ![](https://img2018.cnblogs.com/blog/1506992/201905/1506992-20190505113636472-1102137433.png) - 图灵机的主要作用及功能 作为研究计算的一般性质的抽象工具,替代人们进行数学运算,并有以下作用: + 作为语言接受器:被M接受的语育记作L(M),它是Σ中的这样一些字符串的集合,当把这些字符串放在M的带子上,M处于q0状态且M的带头处在最左单元时.这些字符串可以使M进入一个终结状态而停机。给定一个识别语言L的图灵机M,一般假定,当输入被接受时,M为停机,即没有下一动作。然而对于不被接受的字符串,M可能永不停机.被图灵机接受的语官称为递归可枚举语言。递归集合是递归可枚举集合的子类,递归集合总能被对所有输入都能停机的图灵机所接受。 + 作为整数函数计算机:被图灵机计算的函数称为部分递归函数。在某种意义上,部分递归函数类似于递归可枚举语言.因为计算它的图灵机在给定的输入上可能不停机。完全递归函数对应于递归语育.因为它能被总能停机的图灵机计算。 + 作为语言产生器:设M是一个多带图灵机,它用一条带作为输出带,在这条带上,符号一经写出上就不能再改写.输出带的带头也不能左移。假定在输出带上,M写出某个字毋表Σ的一些字符串,并用分隔符分开,则最终打印在输出带上的字符串的集合就称为由M生成的语言,记为G(M),G(M)Σ。如果L是某个图灵机生成的语言,则L是递归可枚举集合,反之亦然。

    图灵机与冯·诺依曼体系结构的区别和联系

    图灵机是一个计算机的理论模型,本质上是状态机;冯诺依曼体系是图灵机的实现,包括运算、控制、存储、输入、输出五个部分。诺依曼体系相对之前的计算机最大的创新在于程序和数据的存储,以此实现机器内部编程。图灵机的纸带应对应诺依曼计算机体系中的存储,读写头对应输入和输出,规则(读了一个符号后下一步做什么)对应运算,纸带怎么移动对应控制。(参考: 知乎
    图灵机的指令系统单一不够完善,总结起来主要有两条。第一,没能将指令存储起来重复使用。第二,没能形成实现程序结构设计。由于这两点缺欠,图灵机还不能成为能够处理各种任务的计算机。图灵机欠缺的这两点恰被冯诺依曼提出的程序数据存储的思想解决了。

    程序 = 指令 + 数据

    不管多么复杂的软件程序,到了汇编层面(最接近硬件的层面), 都成了简单的指令流。这些指令流虽然简单,但是已经包含了所有必须的计算指令。每一行汇编代码都有固定的格式,都是一条指令,而寄存器为数据提供了一种存储的方式,操作寄存器可以对寄存器中的数据进行操作。
    程序 = 指令 + 数据是对程序的一种直观、本质的解释方式。

    安全问题:缓冲区溢出、XSS攻击、SQL注入攻击

    缓冲区溢出:https://www.cnblogs.com/jsjliyang/p/10779174.html#_label1_1
    XSS攻击:https://www.cnblogs.com/jsjliyang/p/10626863.html#_label2_1
    SQL注入:https://www.cnblogs.com/jsjliyang/p/10626863.html#_label2_0

    • 三种攻击的共同点
      三种攻击都是通过越界访问,访问到本不应该访问到的内存空间,从而获得执行代码的条件。
      • 对缓冲区溢出来说是计算机对接收的输入数据没有进行有效的检测(理想的情况是程序检查数据长度并不允许输入超过缓冲区长度的字符),向缓冲区内填充数据时超过了缓冲区本身的容量,而导致数据溢出到被分配空间之外的内存空间,使得溢出的数据覆盖了其他内存空间的数据。
      • XSS攻击是新型的“缓冲区溢出攻击“,本质也是利用缓冲区溢出实现。
      • SQL注入攻击是针对数据库的攻击方式,本来提供的输入框只能传入数据或者参数,但是攻击者可以在输入中注入SQL指令,设计不良的程序忽略了输入检查,从而使得数据库服务器可以运行攻击者注入的SQL指令。
    • 统一的防范措施
      要针对这三种攻击制定统一的防范措施,具体的细节会有不同,但是相同的思想是进行严格的检查机制,对边界数据和输入数据进行更安全的检测,但是对于程序的运行效率可能会有一定的影响。

    参考资料

  • 相关阅读:
    Logstash实践
    GitLab-CI部署及踩坑总结
    WebSocket ,Socket ,Http差异
    加快Gradle的构建过程
    关于Android 主题的那些事
    inflate()引发NullPointerException
    Android Error:Could not find lottie.jar
    GreenDao使用解析
    关于ActionBar 左侧添加完返回后 点击无效的问题
    Android 如何更改一个 imageview的颜色
  • 原文地址:https://www.cnblogs.com/jsjliyang/p/10812111.html
Copyright © 2011-2022 走看看