《信息安全系统设计基础》实验五实验报告

《信息安全系统设计基础》实验五实验报告

课程:信息安全系统设计基础

姓名: 20145206 邹京儒 20145236冯佳

班级:1452

指导教师:娄嘉鹏

实验日期:2016.11.10

实验名称: 简单嵌入式WEB服务器实验

实验目的与要求:

  1. 学习使用 socket 进行通讯编程的过程,了解一个实际的网络通讯应用程序整体设计,阅读HTTP 协议的相关内容,学习几个重要的网络函数的使用方法。 
    
  2. 读懂HTTPD.C 源代码。在此基础上增加一些其他功能。在PC 计算机上使用浏览器测试 嵌入式WEB 服务器的功能。 
    
  3. (要求)正确使用连接线等实验仪器,并注意保护实验箱。实验结束之后将实验箱送回。
    

实验内容、步骤与体会:

一、实验内容

(同实验一)本次实验建立在掌握嵌入式开发平台使用方法和配置方法的基础上,要求使用windows xp,linux(red hat),arm三个系统(即NFS方式);在linux系统中安装arm系统。

二、实验原理

1.该WEB服务器能实现的功能?

       获取服务器当前目录文件列表、获取指定文件、获取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.配置实验箱

  • 同实验一中一样,配置实验环境
  • 连接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地址),观察在客户机的浏览器中的连接请求结果(如下图)。

四、实验中遇到的问题及解决

  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即可解决所提示错误。
原文地址:https://www.cnblogs.com/feng886779/p/6097182.html