官术网_书友最值得收藏!

2.1.1 編程及計算機基礎課程

目前,網絡安全和 CTF 競賽的內容絕大部分還是與計算機程序密切相關的,因此關于程序編寫及運行的知識是進行進一步學習的基礎,這些知識主要包括高級程序設計語言、匯編語言、編譯原理、計算機系統原理、數據庫等。

高級程序設計語言的知識主要出現在程序設計、數據結構、面向對象編程等課程中。要通過學習這些知識,形成分析問題并通過計算機程序解決問題的思維方式,掌握數據類型、基本運算、邏輯控制、數組、結構、指針、函數、對象等基本概念,熟悉各類數據結構的特點及實現,了解面向對象編程的概念,掌握2~3門高級程序設計語言的編程、調試、運行。建議重點關注C/C++語言及Python語言,前者是當前網絡安全研究和CTF競賽命題的主要目標對象,后者便于讀者實現快速開發,提高 CTF 競賽解題和網絡安全研究的效率。在掌握C/C++語言和Python語言之后,再學習其他高級程序設計語言就會比較容易。

匯編語言是計算機相關專業的一門重要的專業基礎課,通過學習它既可以對計算機系統中的指令執行、存儲管理、系統I/O等有一個本質而直觀的認識,又可以對高級程序設計語言中的變量組織、地址訪問、邏輯控制、函數調用等有一個深入而準確的理解。從網絡安全學習和 CTF 競賽的角度來看,匯編語言的學習尤其要注意以下兩點:一是匯編語言與計算機的體系結構和指令集密切相關,因此在學習過程中主要是領會其思想和邏輯,如實模式與保護模式、編址與尋址等,至于具體的指令形式,在需要時查閱相關手冊即可;二是學習匯編語言的落腳點始終是網絡安全研究,因此要重點關注與網絡安全問題關聯緊密的寄存器、內存訪問、數據處理、跳轉方式、函數調用等內容,如何通過匯編語言編程實現復雜的功能則不是學習的重點。匯編語言的學習通常從學習16位8086指令集的匯編入手,推薦閱讀王爽的《匯編語言(第4版)》。學習32位x86指令集的匯編則推薦閱讀Kip R.Irvine的《匯編語言:基于x86處理器(第7版)》。

編譯原理主要介紹高級程序設計語言的源代碼是如何成為可以在計算機上運行的二進制程序的,通過學習它可以幫助理解程序的執行過程,提高對計算機系統的總體認識。學習編譯原理的難度較大,但與匯編語言類似,讀者只需要關注其中與網絡安全相關的知識即可,主要包括編譯的過程、編譯器各組成部分的作用及實現方法、中間代碼、目標代碼、符號表、運行時存儲空間組織等。推薦結合斯坦福大學的在線課程Compilers來進行學習。

計算機系統原理相關的知識除了散見于上述幾門課程外,還可能涉及計算機組成原理、計算機體系結構等課程。其中,需要重點了解和掌握的知識有信息的表示及處理、CPU 體系結構、存儲器、虛擬內存、鏈接、異常處理、程序間交互及通信等。推薦閱讀Randal E.Bryant和David O'Hallaron的《深入理解計算機系統(第3版)》。

此外,還需要了解一點基本的數據庫知識,包括數據庫系統的概念、關系數據庫、SQL語言、數據庫完整性、數據庫安全性等。重點是掌握通過SQL語言進行數據的插入、刪除、修改、查詢等基本操作的方法,要能夠靈活運用、舉一反三。推薦閱讀王珊和薩師煊的《數據庫系統概論》。

主站蜘蛛池模板: 新乐市| 曲水县| 收藏| 房产| 公安县| SHOW| 马鞍山市| 年辖:市辖区| 金川县| 克拉玛依市| 青岛市| 古蔺县| 永昌县| 西安市| 新源县| 迭部县| 临猗县| 巴彦县| 武陟县| 卢湾区| 灌南县| 建昌县| 扬中市| 凉城县| 全椒县| 东港市| 搜索| 青河县| 永新县| 吉水县| 泽州县| 竹北市| 宣威市| 莱芜市| 大宁县| 资中县| 孙吴县| 芒康县| 安吉县| 岳普湖县| 鱼台县|