課程:信息安全系統設計基礎linux
姓名: 20145206 鄒京儒 20145236馮佳編程
班級:1452windows
指導教師:婁嘉鵬瀏覽器
實驗日期:2016.11.10安全
實驗名稱: 簡單嵌入式WEB服務器實驗服務器
實驗目的與要求:網絡
學習使用 socket 進行通信編程的過程,瞭解一個實際的網絡通信應用程序總體設計,閱讀HTTP 協議的相關內容,學習幾個重要的網絡函數的使用方法。
讀懂HTTPD.C 源代碼。在此基礎上增長一些其餘功能。在PC 計算機上使用瀏覽器測試 嵌入式WEB 服務器的功能。
(要求)正確使用鏈接線等實驗儀器,並注意保護實驗箱。實驗結束以後將實驗箱送回。
(同實驗一)本次實驗創建在掌握嵌入式開發平臺使用方法和配置方法的基礎上,要求使用windows xp,linux(red hat),arm三個系統(即NFS方式);在linux系統中安裝arm系統。多線程
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
:客戶請求的文件名
1.配置實驗箱
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地址),觀察在客戶機的瀏覽器中的鏈接請求結果(以下圖)。
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
error127
。mount -t nfs -o nolock 192.168.0.234:/root/bc /hos
時,提No such file or director
錯誤提示。mount -t nfs -o nolock 192.168.0.234:/home/bc /hos
便可解決所提示錯誤。