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

冯·诺依曼体系结构

美籍匈牙利数学家冯·诺依曼于1946年提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式储存。 冯·诺依曼体系结构冯·诺依曼理论的要点是:计算机的数制采用二进制;计算机应该按照程序顺序执行。人们把冯·诺依曼的这个理论称为冯·诺依曼体系结构。

体系结构

  • (1)采用存储程序方式,指令和数据不加区别混合存储在同一个存储器中,数据和程序在内存中是没有区别的,它们都是内存中的数据,当EIP指针指向哪 CPU就加载那段内存中的数据,如果是不正确的指令格式,CPU就会发生错误中断. 在现在CPU的保护模式中,每个内存段都有其描述符,这个描述符记录着这个内存段的访问权限(可读,可写,可执行).这就变相的指定了哪些内存中存储的是指令哪些是数据)。指令和数据都可以送到运算器进行运算,即由指令组成的程序是可以修改的。
  • (2)存储器是按地址访问的线性编址的一维结构,每个单元的位数是固定的。
  • (3)指令由操作码和地址组成。操作码指明本指令的操作类型,地址码指明操作数和地址。操作数本身无数据类型的标志,它的数据类型由操作码确定。
  • (4)通过执行指令直接发出控制信号控制计算机的操作。指令在存储器中按其执行顺序存放,由指令计数器指明要执行的指令所在的单元地址。指令计数器只有一个,一般按顺序递增,但执行顺序可按运算结果或当时的外界条件而改变。
  • (5)以运算器为中心,I/O设备与存储器间的数据传送都要经过运算器。
  • (6)数据以二进制表示。

特点

  • (1)计算机处理的数据和指令一律用二进制数表示
  • (2)顺序执行程序
  • (3)计算机硬件由运算器、控制器、存储器、输入设备和输出设备五大部分组成。

瓶颈

程序内存和数据内存之间的共享总线导致了冯诺依曼瓶颈,即中央处理器(CPU)和内存之间的有限吞吐量(数据传输速率)与内存的数量相比。因为单个总线一次只能访问两类内存中的一种,所以吞吐量低于CPU的工作速率。当CPU需要对大量数据执行最小的处理时,这严重限制了有效的处理速度。CPU不断地被迫等待所需的数据被传输到或从内存中。由于CPU速度和内存大小的增长速度比它们之间的吞吐量增长速度快得多,瓶颈已经成为一个更大的问题,这个问题的严重性随着新一代CPU的出现而增加。

图灵机

图灵机,又称图灵计算、图灵计算机,是由数学家艾伦·麦席森·图灵(1912~1954)提出的一种抽象计算模型,即将人们使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人们进行数学运算。

图灵机的基本元素

  • 带:是存储装置,两端是无穷的且被划分成无穷的方格,每个方格可以存一个符号;
  • 控制器:有有限个状态;
  • 读写头:主要功能是读带上的符号,写带中的方格。

图灵机的基本思想

图灵的基本思想是用机器来模拟人们用纸笔进行数学运算的过程,他把这样的过程看作下列两种简单的动作:

  • 在纸上写上或擦除某个符号;
  • 把注意力从纸的一个位置移动到另一个位置;
    而在每个阶段,人要决定下一步的动作,依赖于 (a) 此人当前所关注的纸上某个位置的符号和(b) 此人当前思维的状态。
    为了模拟人的这种运算过程,图灵构造出一台假想的机器,该机器由以下几个部分组成:
  • 1.一条无限长的纸带 TAPE。纸带被划分为一个接一个的小格子,每个格子上包含一个来自有限字母表的符号,字母表中有一个特殊的符号 表示空白。纸带上的格子从左到右依此被编号为 0,1,2,... ,纸带的右端可以无限伸展。
  • 2.一个读写头 HEAD。该读写头可以在纸带上左右移动,它能读出当前所指的格子上的符号,并能改变当前格子上的符号。
  • 3.一套控制规则 TABLE。它根据当前机器所处的状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作,并改变状态寄存器的值,令机器进入一个新的状态。
  • 4.一个状态寄存器。它用来保存图灵机当前所处的状态。图灵机的所有可能状态的数目是有限的,并且有一个特殊的状态,称为停机状态。

基本图灵机

一个基本Turing机M由下述七部分组成:

  • 状态集\(Q\),它是非空有限的集合;
  • 带字表\(C\),它是非空有限的集合
  • 动作函数 \(\delta\), \(Q\mathrm{x}C\rightarrow {C\cup{L,R}}\mathrm{x}Q\)
  • 空白符\(B\in C\);
  • 输入字母表\(A\subseteq C-{B}\);
  • 控制器的初始状态\(q1\in Q\);
  • 接受状态\(F\subseteq Q\), \(F\)中的元素叫做接受状态。
  • 记作\(M =(Q,A,C,\delta,B, q_1,F)\),缩写为\(TM\).

区别与联系

图灵机是为了探索可计算问题的数学领域,并获得描述这些计算的方法而发明的理论概念。冯-诺伊曼体系结构是一种用于构建实际计算机的体系结构(实现图灵机器理论上描述的内容),是一种实现通用图灵机的计算设备。

“程序=指令+数据”

我认为指令构成了方法,数据就像原材料,将方法运用到原材料上能达到我们期望的目的,这就是程序。比如你想实现一个图片识别的程序,图片是数据,实现图片识别的方法时指令,这两者缺一不可,缺少一个都只能干瞪眼,什么都做不了。

安全问题

缓冲区溢出

缓冲区溢出的基本原理就是,计算机程序向特定缓冲区内填充数据时,超出了缓冲区本身的容量,导致溢出的数据覆盖了相邻内存空间的合法数据,从而破坏程序的堆栈,使程序转而执行其它指令,以达到攻击的目的。
缓冲区溢出攻击发生的根本原因在于,现代计算机系统的基础架构冯诺依曼体系本质存在的安全问题,即采用了“存储程序”的原理。因为数据和程序都存储在同一内存中,所以可以通过缓冲区溢出漏洞,通过溢出与存储程序内存相邻的存储数据的内存,达到覆盖存储程序的内存的效果,从而把这部分被覆盖的程序内容注入了恶意的攻击指令,达到攻击的目的。

XSS攻击

XSS攻击的原理是,利用了WEB应用程序对用户输入内容的安全验证与过滤不够完善,导致用户的输入内可以包含HTML、JavaScipt及其他脚本代码,可能会让恶意代码逻辑包含在服务器动态产生和更新的网页中,导致其他用户访问网页时下载并执行了恶意脚本,受到攻击。黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。

SQL注入攻击

SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

共同点

由上面三部分对缓冲区溢出、XSS攻击、SQL注入攻击的原理的分析,可以发现共同点,它们都是利用了漏洞,将恶意代码通过某种方式注入了目标,然后执行恶意代码达到攻击的目的。因此防范的方法,应该在于,如何防止这些代码被注入,应该有一个更安全的检查机制,杜绝这些代码的注入。比如对于XSS攻击,针对编译器可以引入缓冲区的边界保护机制,杜绝溢出的发生,也就杜绝了恶意代码的注入。比如XSS攻击,对于用户的输入检查,过滤掉可能的脚本代码,对于SQL,同样增强过滤掉可能的SQL语法。

抽象出统一的防范方法

加入一个检查过滤机制,杜绝对于可能发生代码注入情况的发生。

参考

链接

冯诺依曼体系架构维基百科
冯诺依曼体系结构百度百科
图灵机百度百科
图灵机和冯诺依曼

书籍

图灵的秘密:他的生平、思想及论文解读,Charles Petzold (作者) 杨卫东 , 朱皓 (译者)
网络攻防技术与实战,诸葛建伟

转载于:https://www.cnblogs.com/pandaDou/p/10784141.html

20189311《网络攻防》第十周作业相关推荐

  1. 2017-2018-2 20179209《网络攻防》第二周作业

    网络攻防学习之绪论 国内外著名黑客 鲁本保罗 鲁本保罗今年才10岁,已经是一名CEO.他从6岁就开始从身为计算机安全专家的父亲那里学习技能,他的公司"慎思游戏"致力于开发网络智力游 ...

  2. 20189307《网络攻防》第二周作业

    1.黑客信息 (1)国内知名黑客: 吴翰青:阿里云首席安全科学家.云盾负责人,也是网络安全领域为人熟知的"刺"."道哥"和"小黑".他要想黑 ...

  3. 20189311《网络攻防》第二周作业

    1.脚本 (1)windows BAT 就是从以下命令中得到当前的ip地址. (2)Shell 可以计算距离下一次生日还有多少天. 2.黑客信息 (1)国内黑客 黄鑫,汉族,毕业于西安电子科技大学,职 ...

  4. 网络攻防第十一周作业

    Burp Suite 官网 使用指南 功能模块有以下几个: - Web vulnerability scanner Web漏洞扫描程序Enterprise Professional 覆盖100多个通用 ...

  5. 《网络攻防第六周作业》

    一.KaliSecurity视频总结(21-25) Kali密码攻击之密码攻击工具 cewl- UI界面,可以爬行网站获取关键信息创建密码字典. 给定url之后将结果返回成为一个字典 cat-很小的安 ...

  6. 20189320《网络攻防》第一周作业

    a. 你对师生关系的理解,希望是哪种关系? 在学习方面,老师是我们在知识道路上的引导者.通过实际与我们自身兴趣的结合,老师向我们提出了研究方向,并通过提供各种参考书籍与资料帮助我们快速入门并对该方向进 ...

  7. 2018-2019-2 20189206 《网络攻防实践》 第十周作业

    2018-2019-2 20189206 <网络攻防实践> 第十周作业 First Draft of a Report on the EDVAC EDVAC (Electronic Dis ...

  8. 2019春第十周作业

    第十周作业 本周作业头 这个作业属于哪个教程 C语言程序设计Ⅱ 这个作业要求在哪里 (https://edu.cnblogs.com/campus/zswxy/software-engineering ...

  9. 20189200余超 2018-2019-2 移动平台应用开发实践第十周作业

    20189200余超 2018-2019-2 移动平台应用开发实践第十周作业 偏好 在Android应用中,我们常需要记录用户设置的一些偏好参数,,此时我们就需要用SharedPreferences和 ...

最新文章

  1. 必须为元素类型 association 声明属性 oftype。_CSS相关的选择器和属性介绍
  2. Webstorm2017安装以及破解和汉化
  3. 华为xs第几批升级鸿蒙,华为和荣耀老机型用户有福:确定能批量升级到鸿蒙系统!...
  4. 《SpringBoot从菜鸟到老鸟》之SpringBoot 如何配置全局的异常捕获
  5. js,java时间处理
  6. tornado 学习注意事项--00
  7. Kubernetes 部署 Ingress 控制器 Traefik v2.1
  8. Entity Framework第三篇IQueryable和list本地集合
  9. 重磅!阿里推出国产开源的 JDK!
  10. 移动APP产品经理必学的工具和必上的酷站
  11. SpringCloud-11-解决[NACOS HTTP-GET] The maximum number of tolerable server reconnection errors has bee
  12. 瑞吉外卖项目——修改分类
  13. 技术真好玩第一期(2019-11-01)
  14. 微信公众平台开发教程之新手初级入门攻略 附PHP代码实例
  15. iOS13文件的连接服务器
  16. oracle 11g 连接远程服务器 数据库
  17. Type mismatch affecting row number 0 and column type 'BIGINT': Value [7] is of type [Integer] and c
  18. 两个总体方差的F检验
  19. java messagedigest_Java 自带的加密类MessageDigest类(加密MD5和SHA)
  20. 嵌入式常见英文缩写和英文词汇

热门文章

  1. 第五天小练习(商品库存管理)
  2. c语言实践周通讯录设计报告,C语言程序的设计报告_个人通讯录.docx
  3. 启用Docker对ipv6的支持
  4. Day7-有效的括号
  5. 首席新媒体运营商学院黎想:怎么做短视频运营博主?
  6. lru算法C语言结构体指针,在Golang里如何实现结构体成员指针到结构体自身指针的转换...
  7. Ubuntu 14.04 网络配置
  8. LOJ#3156. 「NOI2019」回家路线(前缀和优化建图+for循环+凸包)
  9. 中国古代十大感天动地诗词
  10. 2023年全球及中国盐酸环丙沙星行业头部企业市场占有率及排名调研报告