2018-2019-2 20189215 《网络攻防技术》第十周做业

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

冯·诺依曼体系结构

  • 冯·诺伊曼结构是一种将程序指令存储器和数据存储器合并在一块儿的计算机设计概念结构,是一种实现通用图灵机的计算设备,以及一种相对于并行计算的序列式结构参考模型。冯·诺依曼结构将存储设备与中央处理器分开,所以依据冯·诺依曼结构设计出的计算机又称存储程序计算机。
  • 存储程序计算机在体系结构上主要特色有:
    • 以运算单元为中心
    • 采用存储程序原理
    • 存储器是按地址访问、线性编址的空间
    • 控制流由指令流产生
    • 指令由操做码和地址码组成
    • 数据以二进制编码
  • 冯.诺依曼体系结构是现代计算机的基础,如今大多计算机还是冯.诺依曼计算机的组织结构,只是做了一些改进而已,并无从根本上突破冯体系结构的束缚。冯.诺依曼也所以被人们称为“计算机之父”。

图灵机

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

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

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

程序 = 指令 + 数据

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

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

缓冲区溢出:http://www.javashuo.com/article/p-bhhrrelx-dc.html
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指令。
  • 统一的防范措施
    要针对这三种攻击制定统一的防范措施,具体的细节会有不一样,可是相同的思想是进行严格的检查机制,对边界数据和输入数据进行更安全的检测,可是对于程序的运行效率可能会有必定的影响。

参考资料

相关文章
相关标签/搜索