计算机网络实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

计算机网络实验报告

班级:电信0901

学号:U200914332

姓名:王焕

2012.1

实验四:网络协议与Web通信

一、实验目的

1.了解网络协议数据单元的格式

2.分析网络协议工作基本流程

3.深入理解Web应用的通信过程

二、实验内容

1.网络协议数据单元分析

通过wireshark抓取局域网数据包并分析各个层次的协议数据单元内容

(1)以太网帧头

(2)IP分组首部

(3)ARP包

(4)ICMP包(ping)

2.Web原理实验

(1)HTTP协议分析

(2)通过socket编程模拟HTTP协议通信过程

三、实验原理

1.Web通信经过四个步骤:

(1)建立连接

(2)客户端发送HTTP REQUEST请求

(3)服务器端接收请求,生成RESPONSE响应

(4)关闭连接

2.HTTP协议

客户端浏览器或其他程序与Web服务器之间的应用层通信协议。一般在Internet 上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。

3.Java网络编程

Java Socket对网络的封装是非常完美的,对于进行网络编程的程序员,使用网络就像使用本地文件系统一样简单。

与其他Socket网络编程有一个明显的区别就是,在服务器和客户机通信建立时就要另外一个ServerSocket 。

它仅仅适用与服务器端,监听指定端口,如果有socket 连接请求,它就答应,并在服务器端产生一个socket 与其对应,那么用这个socket 就可以和客户端进行通信了。

实验原理图如下:

四、实验内容及分析

1.编译、执行参考程序

本次实验提供了两个原始程序(NetServer.java和NetClient.java),它们可以实现一个服务器/客户端请求响应的完整过程。Dos环境下先后编译执行NetServer.java与NetClient.java,即可得到一次完整的客户端向服务器请求并得到响应的完整过程,结果如下:

2.修改、编写实验程序

参考程序模拟了客户端与服务器之间的对话,但由于其之间交互的数据都是我们设定的而不含有http报头信息,因此不能和真正的web服务器与浏览器对话,以下即为

实现自制web服务器的方法

(1)利用自制的服务器获取真正浏览器的HTTP Request 报头信息:运行自制的服务器,默认监听端口8080,在浏览器中输入以下网址

http://127.0.0.1:8080/new/main/UserLoad.jsp,其中127.0.0.1为本机localhost地址,这样浏览器就会向自制服务器发出请求,服务器即可获取http request报头信息。如图所示:

(2)利用自制的客户端获取HTTP Response 报头信息:

在真实的浏览器中访问一网址,利用wireshark软件获取对该网站服务器发送的http request报头,将这些内容加入NetClient.java中out.println()方法中的字符串内,如下所示:

out.println("GET / HTTP/1.1\r\n");

out.println("Host: \r\n");

out.println("Connection: keep-alive\r\n");

out.println("Accept:application/xml,application/xhtml+xml,text/html;q=0.9,text/

plain;q=0.8,image/png,*/*;q=0.5\r\n");

out.println("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US)

AppleWebKit/534.8 (KHTML, like Gecko) Chrome/7.0.524.0

Safari/534.8\r\n");

out.println("Accept-Encoding: gzip,deflate,sdch\r\n");

out.println("Accept-Language: zh-CN,zh;q=0.8\r\n");

out.println("Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3\r\n");

并且将NetClient.java文件中的端口号PORT改为80,

InetAddress.getByName("localhost");中的localhost改为实际访问的网址。即可得到服务器的http response,如图所示:

(3)在自制的服务器中构造一个HTTP Response 报头信息:

为将(2)中得到的http response报头信息加入自制服务器中,需在NetServer.java 中加入out.println()语句,位置在String str = in.readLine();之前,http response报头信息放入out.println()方法中的字符串内即可:

out.println("HTTP/1.1 200 OK\r\n");

out.println("Cache-Control: private, max-age=0\r\n");

out.println("Content-Length: 30104\r\n");

out.println("Content-Type: text/html; charset=utf-8\r\n");

out.println("Set-Cookie: _SS=SID=73C301846E8148399EFF0E23B86DD939;

domain=; path=/\r\n");

out.println("P3P: CP=\"NON UNI COM NAV STA LOC CURa DEVa PSAa PSDa OUR

IND\"\r\n");

out.println("Date: Mon, 02 Jan 2012 16:48:11 GMT\r\n");

此外,http response报头还可利用wireshark获取。

(4)通过真正的浏览器来显示自制服务器提供的Web 服务:

编译运行经过(3)修改的NetSerer.java程序,在真正的浏览器中输入

http://127.0.0.1:8080/new/main/UserLoad.jsp网址,则会出现来自自制服务器的http response报头信息,如图所示:

相关文档
最新文档