2019寒假訓練營第三次做業

2019寒假訓練營第三次做業

Deadline:2.18 23:00python

出題人:福州大學 計算機科學與技術 周政演linux

學習視頻課程(20')

  • 學習福州大學網絡課程 網絡空間安全概論,造成學習筆記,發佈專門博客,至少完成第五章的視頻學習。
  • 或學習密歇根大學的網絡課程Internet history,造成學習筆記,另外發布專門的博客。至少完成第二週的視頻學習。
  • 以上兩門課程二選一便可。

實驗題(30'+120')

背景

黑客風波事後,一切又恢復了正常。但你總以爲有些不安,按照以前的方法:把全部請求都記錄下來,的確能很準確地顯示全部用戶的請求狀況。git

可是請求實在太多,把它們都記下來,須要花費巨大的空間來存儲,致使許多預算用在了購買記錄請求的空間上,並且服務器的速度也降低很多。github

有沒有更好的辦法?你以爲本身遇到了瓶頸,但別人確定也遇到過一樣的問題,何不借鑑別人的方法?算法

查閱文獻過程當中,果真,發現一種叫作 sketch 的技術十分火熱,能夠解決這個問題,它能夠顯著地下降空間的使用。ubuntu

你很興奮,你想盡快地把這個技術部署到服務器上。安全

熱身題(30')

服務器正在運轉着,也不知道這個技術可不可用,萬一服務器被弄崩了,那損失可不小。服務器

因此, 決定在虛擬機上試驗一下,不當心弄壞了也不要緊。須要在的電腦上裝上虛擬機linux系統網絡

  1. 安裝虛擬機(可參考Vmware、Virtual Box等)
  2. 安裝ubuntu系統(推薦安裝16.04版本)
  3. 寫一個helloworld程序,在ubuntu系統上編譯運行
    (你可能須要瞭解linux系統的終端和一些基本命令、文本編輯工具nano、如何編譯代碼、運行程序)

基本題 (120')

瞭解新技術(20')

衆多sketch的技術中,Count-min sketch 經常使用也並不複雜,但你可能須要稍微瞭解一點點散列的知識。從它入手不失爲一個好選擇,把它記錄在你的技術博客上:tcp

  1. 簡單描述什麼是sketch
  2. 描述Count-min sketch的算法過程

實現新技術(30')

大體瞭解了Count-min sketch,接下來就須要實現它了。本着不須要重複造輪子的思想,你上github一查,果真發現了相關代碼。

並不須要深入理解代碼,你只須要會用,你的目標是在虛擬機上跑通Count-min sketch:

  1. 克隆一種版本(python或者c語言)的代碼,大體瞭解如何使用這個代碼,在ubuntu系統上編譯。本身任意編寫一個小測試,成功運行這個代碼。
  2. 你也能夠本身實現Count-min sketch。

獲取用戶請求(15')

如今須要獲取用戶的請求信息,其實請求就是網絡傳輸的數據包,可使用本身的網絡環境來模擬服務器的請求,使用工具來捕獲這個數據包:

  1. 安裝並使用抓包工具tcpdump
  2. 輸入tcpdump -n 獲取數據包的信息
  3. 使用linux 重定向的方法把該信息用文本文件存起來,文件命名爲 pakcet_capture.txt。

請求的用戶用源ip地址端口號和目的ip地址端口號來標識,請求的大小用包的長度來標識,例如:

11:07:30.240275 IP 203.107.41.32.9018 > 192.168.0.101.55730: Flags [P.], seq 1:36, ack 39, win 17688, length 35

請求的用戶

203.107.41.32.9018 > 192.168.0.101.55730

請求的大小

length 35

請求格式處理(25')

處理爲這樣的格式(請求的實際形式)

203.107.41.32.9018>192.168.0.101.55730 35
  1. 使用程序把第一條請求處理成第二條請求的格式
  2. 使用linux 重定向的方法把該信息用文本文件存起來,命名爲Request.txt。

測試新技術(30')

完事具有,只欠東風:

  1. 用跑通的Count-min sketch程序讀文件,得到最後的處理結果,請求大小超過閾值T認定爲黑客,此處T本身定義。

對於你所完成題目,把實現思路實現結果記錄在博客中,把代碼提交到github的倉庫上。

開放題(50')

理論部分(25')

  1. 解釋爲何 sketch 能夠省空間
  2. 流程圖描述Count-min sketch的算法過程
  3. 拿它和你改進後方法進行對比,分析優劣
  4. 吐槽Count-min sketch

實驗部分(25')

按基本題中的處理方法,要存請求、處理請求、讀請求,速度太慢了,要是能把獲取的請求直接用count-min sketch 處理就行了:

  1. 儘量減小中間的文件讀寫環節
  2. 實時處理請求
相關文章
相關標籤/搜索