《信息安全系統設計基礎》實驗五實驗報告

《信息安全系統設計基礎》實驗五實驗報告

課程:信息安全系統設計基礎linux

姓名: 20145206 鄒京儒 20145236馮佳編程

班級:1452windows

指導教師:婁嘉鵬瀏覽器

實驗日期:2016.11.10安全

實驗名稱: 簡單嵌入式WEB服務器實驗服務器

實驗目的與要求:網絡

  1. 學習使用 socket 進行通信編程的過程,瞭解一個實際的網絡通信應用程序總體設計,閱讀HTTP 協議的相關內容,學習幾個重要的網絡函數的使用方法。
  2. 讀懂HTTPD.C 源代碼。在此基礎上增長一些其餘功能。在PC 計算機上使用瀏覽器測試 嵌入式WEB 服務器的功能。
  3. (要求)正確使用鏈接線等實驗儀器,並注意保護實驗箱。實驗結束以後將實驗箱送回。

實驗內容、步驟與體會:

1、實驗內容

(同實驗一)本次實驗創建在掌握嵌入式開發平臺使用方法和配置方法的基礎上,要求使用windows xp,linux(red hat),arm三個系統(即NFS方式);在linux系統中安裝arm系統。多線程

2、實驗原理

1.該WEB服務器能實現的功能?socket

獲取服務器當前目錄文件列表、獲取指定文件、獲取HTML類型文件、獲取純文本文件、獲取JPG圖像文件、獲取GIF圖像文件。

2.HTTP協議數據頭格式要求函數

1)請求格式:

             請求行-通用信息頭-請求頭-實體頭-報文主體

       2)響應格式:

             狀態行-通用信息頭-響應頭-實體頭-報文主體

3.爲什麼採用SOCKET?

SOCKET用於描述IP地址和端口,是一個通訊鏈的句柄,能夠用來實現不一樣虛擬機或不一樣計算機之間的通訊。

4.代碼理解

1)解析客戶請求:int ParseReq(FILE *f, char *r)

char *r:字符串指針,待解析的字符串。

2)發送 HTTP協議數據頭:int PrintHeader(FILE *f, int content_type)

int content_type:信息類型,用於肯定發送的 HTTP 協議數據頭信息

3)發送當前目錄文件列表信息:int DoDir(FILE *f, char *name)

char *name:目錄名,表示客戶請求的目錄信息。

4)發送 HTML文件內容:int DoHTML(FILE *f, char *name)

char *name:客戶請求的文件名

5)發送純文本(TXT)文件內容:int DoText(FILE *f, char *name)

char *name:客戶請求的文件名

6)發送 JPEG圖像文件內容:int DoJpeg(FILE *f, char *name)

char *name:客戶請求的文件名

7)發送 GIF圖像文件內容:int DoGif(FILE *f, char *name)

char *name:客戶請求的文件名

3、實驗過程

1.配置實驗箱

  • 同實驗一中同樣,配置實驗環境
  • 鏈接arm開發板;
  • 創建超級終端;
  • 啓動實驗平臺;
  • 修改windows xp系統的ip使得它與arm機的ip在同一網段;
  • 在red hat中安裝arm編譯器;
  • 配置環境變量。

2.進入07_hpptd文件夾中,嘗試直接make進行自動編譯。出現以下圖所示的錯誤。

3.如上圖中所示,爲了解決httpd未能自動編譯的問題,對hpptd.c文件進行手動多線程編譯。

4.使用 NFS 服務方式將HTTPD 下載到開發板上,並拷貝測試用的網頁進行調試。

[/mnt/yaffs] mount -t nfs -o nolock 192.168.0.56:/arm2410cl /host
[/mnt/yaffs]cd /host/exp/basic/07_httpd/
[/host/exp/basic/07_httpd]./httpd
(結果)starting httpd...
press q to quit.
wait for connection.
5.在臺式機的瀏覽器中輸入 http://192.168.0.121(121 爲UP-CUP S2410 實驗板的IP地址),觀察在客戶機的瀏覽器中的鏈接請求結果(以下圖)。

4、實驗中遇到的問題及解決

  1. 雖然將07_httpd文件中所有拷貝進了bc中,文件夾中擁有Makefile文件,可是仍是沒法經過make獲得該文件夾中copy和httpd的可執行文件。
    解決:第一次是以爲Makefile文件中的PATH路徑不對,將其改爲了/home/bc/07_httpd存盤退出後發現仍是沒法執行,第二次咱們直接使用gcc對其單步進行編譯:
    armv4l-unknow-linux-gcc –E copy.c –o copy.i
    armv4l-unknow-linux-gcc –S copy.i –o copy.s
    armv4l-unknow-linux-gcc –c copy.s –o copy.o
    對於httpd的編譯方式同上。
    Make——工程管理器,爲了減小重複工做量,「自動編譯管理器」,「自動」在於它能根據文件時間戳自動發現更新過的文件而減小編譯工做量,同時它經過讀入makefile文件的內容來執行大量的編譯工做。用戶只須要編寫一次簡答的編譯語句就能夠了,也就是說之後只要敲入make便可編譯所有文件,它大大提升了實際項目的工做效率,幾乎全部linux下的項目編程都須要用到它。
  2. make時出現error127
    解決:找到了緣由,環境變量配置出現問題,是拷代碼時沒有將一個Rules.mak的MAK類型文件一塊兒拷過來,致使make命令不能使用,從新配置後則正常make。
  3. 在將httpd服務下載到開發板上這一步驟中,掛載超級終端與共享文件創建通信時,輸mount -t nfs -o nolock 192.168.0.234:/root/bc /hos時,提No such file or director錯誤提示。
    解決方法:再次查看共享文件目錄,肯定咱們並不存在/root/home/bc這一目錄,將命令行修改mount -t nfs -o nolock 192.168.0.234:/home/bc /hos便可解決所提示錯誤。
相關文章
相關標籤/搜索