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指令。
  • 統一的防範措施
    要針對這三種攻擊制定統一的防範措施,具體的細節會有不一樣,可是相同的思想是進行嚴格的檢查機制,對邊界數據和輸入數據進行更安全的檢測,可是對於程序的運行效率可能會有必定的影響。

參考資料

相關文章
相關標籤/搜索