1、计算机网络实验3计算机网络课程实验三实验目的:让学生通过实验,对网络原理有更深刻和更直观的认识;掌握网络基本技术,例如:组网、截获/分析数据包、网络编程等;为以后更深入的学习和利用计算机网络打下一个好的基础;实验环境:与因特网连接的计算机网络系统;主机操作系统为Windows;Ethereal、IE、Java等软件。实验内容:一、查看课程配套的3个JAVA Applet演示演示1:GBN(回退N步)协议(显然同时最多只能发送5个Packet)(1)Kill Packet 0Kill Packet 0(2)Kill Acknoledgement of Packet 0 演示2:SR(选择重传)(
2、1)Kill Packet 0Kill Packet 0(2)没有Kill Packet演示3:TCP流量控制文件大小4Kb,缓存大小2KbWhen Host A receives an acknowledgment with WIN=0Host A sends a packet with one byte of data二、利用Ethereal研究TCP传输过程操作步骤:1 利用学校BBS的“自定义头像”上传功能,完成本地主机到远程服务器的TCP传输。步骤:登陆,选择“个人工具箱”中的“个人文件上传”,在新窗口中通过“浏览”按钮选择附件中的“face.gif”。2启动Ethereal,开始一
3、个新的分组俘获。3回到“个人文件上传”窗口,点击“上传”,上传成功后,在页面的下方将出现face.gif图象。4停止Ethereal分组俘获。5在筛选规则中输入“tcp”,将看到主机和服务器之间传输的一系列的tcp和http报文。得到的分组截图如下:由此可知:客户端主机的IP地址202.38.64.3服务器的IP地址210.45.73.76TCP源端口号58207序列号15118三、Socket编程1构造一个简单的Web服务器运行结果截图如下:这表明了这段代码只能响应单个请求。2在上面程序的基础上添加部分代码,使WebServer.Java能够响应多个请求,并在主机端显示请求次数。试写代码如下
4、:import java.io.*; import .*; import java.util.*; class WebServer public static void main(String args)throws Exception String requestMessageLine; String fileName=; int countnum=0; /计数器while(true) /加上循环,允许响应多次请求 ServerSocket listenSocket=new ServerSocket(6789); Socket connectionSocket = listenSocket.
5、accept(); BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream(); DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream(); requestMessageLine=inFromClient.readLine(); StringTokenizer tokenizedLine = new StringTokenizer(
6、requestMessageLine); if(tokenizedLine.nextToken().equals(GET) fileName=tokenizedLine.nextToken(); if(fileName.startsWith(/)=true) fileName=fileName.substring(1); File file=new File(fileName); int numOfBytes=(int)file.length(); FileInputStream inFile=new FileInputStream(fileName); byte fileInBytes=ne
7、w bytenumOfBytes; inFile.read(fileInBytes); outToClient.writeBytes(HTTP/1.0 200 Document Followsrn); if(fileName.endsWith(.jpg) outToClient.writeBytes(Content-Type:image/jpegrn); if(fileName.endsWith(.gif) outToClient.writeBytes(Content-Type:image/gifrn); outToClient.writeBytes(Content-Length:+numOfBytes+rn); outToClient.writeBytes(rn); outToClient.write(fileInBytes,0,numOfBytes); connectionSocket.close(); else System.out.println(Bad Request Message); System.out.println(请求次数:”+countnum+); /输出请求次数
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1