计算机网络-HTTP协议——沐雨先生

实验内容

1.使用Java平台的com.sun.net.httpserver包搭建一个简易HTTP server;

2.编辑网页(.html文档)存放在HTTP server端;

3.在浏览器端浏览HTTP server的网页;

4.使用抓包软件wireshark查看并分析HTTP请求和响应消息首部和数据。

基本要求

1.理解HTTP协议的工作过程;

2.了解HTTP请求消息和响应消息首部结构;

3.学会编写简单的HTML文档。

实验步骤

第1部分 建立简易HTTP服务器

  1. 查看本机IP地址
    进入Dos命令窗口,输入命令ipconfig,查看本主机IP地址,下面是一个可能的显示结果:

以太网适配器 以太网:

连接特定的 DNS 后缀 . . . . . . . :

本地链接 IPv6 地址. . . . . . . . : f880::b1b2:e876:a385:4b82%16

IPv4 地址 . . . . . . . . . . . . : 192.168.1.100

子网掩码 . . . . . . . . . . . . : 255.255.255.0

默认网关. . . . . . . . . . . . . : 192.168.1.1

在这个例子中,主机IPv4地址是192.168.1.100。

  1. 建立一个Java Application项目的包

打开NetBeans开发环境,在前面的实验中,我们曾在"D:\"盘下建立了一个Java Application项目,项目名称是javanetwork,项目所在文件夹是d:\javanetwork;在javanetwork项目中创建一个包,包名是demo.httpserver,在这个包下建立一个名为Server的类,复制下列Java代码,将其粘贴到Server类源码的编辑窗口。

java 复制代码
//Server.java
package demo.httpserver;
import java.io.IOException;
import java.io.OutputStream;
import java.io.FileInputStream;
import java.io.BufferedInputStream;
import java.net.InetSocketAddress;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;

public class Server {
    static int BUFF = 1024;
    public static void main(String[] args) throws Exception {
        HttpServer server = HttpServer.create(new InetSocketAddress("192.168.1.***",8000), 0);
        server.createContext("/", new MyHandler());
        System.out.println("HTTP Server starts... ...");
        server.start();
    }
    static class MyHandler implements HttpHandler {
        @Override
        public void handle(HttpExchange t) throws IOException {
           String path = t.getRequestURI().getPath();
           if (path.equals("/"))
             path = "/index.html";
           OutputStream output;
           try
           {
              t.sendResponseHeaders(200, 0);
              output = t.getResponseBody();
              BufferedInputStream in = new BufferedInputStream(new FileInputStream(path.substring(1, path.length())));
              byte[] buf = new byte[BUFF];
              int resp =in.read(buf);
              while (resp != -1){
                output.write(buf,0,resp);
                resp = in.read(buf);
              }
              output.close();
           }
            catch(IOException ioe)
           {
              String resp = "Not Found";
              t.sendResponseHeaders(404, resp.length());
              output = t.getResponseBody();
              output.write(resp.getBytes());
              output.close();
            }
        }
    }
}

将Server.java第15行

HttpServer server = HttpServer.create(new InetSocketAddress("192.168.1.***",8000), 0);

中的IPv4地址替换为第1步得到的主机IPv4地址。

  1. 建立index.html文档

在文件夹D:\javanetwork建立如下index.html文档,可使用记事本等文本编辑软件编辑此文件。

php 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Java Server Test</title>
</head>
<body>
    Hello, world!
</body>
</html>
  1. 运行Server
    在NetBeans开发环境运行Server。
  2. 在本机使用浏览器浏览
    打开Chrome浏览器,在地址栏输入http://<HTTP server的IP地址>:8000,或http://<HTTP server的IP地址>/index.html。例如,http://192.168.1.100:8000,观察浏览器的显示界面。
  3. 从其它主机的浏览器访问HTTP server
    与另外一名同学合作,在另一台电脑打开Chrome浏览器,在地址栏输入http://<HTTP server的IP地址>:8000,或http://<HTTP server的IP地址>/index.html。例如,http://192.168.1.100:8000,查看是否出现预期结果。
    是。
  4. 在Dos命令窗口运行Server
    停止在NetBeans开发环境运行Server程序,将index.html拷贝到路径D:\javanetwork\build\classes
    打开Dos命令窗口,进入路径
    D:\javanetwork\build\classes,执行命令
    java demo.httpserver.Server
    命令成功执行后,Server则一直等待客户的请求。在Chrome浏览器地址栏输入http://<IP地址>:8000,或http://<IP地址>:8000/index.html,可看到浏览器的显示结果。如果要中断HTTP服务,按ctrl-C。

第2部分 修改index.html

按Ctrl-C键停止Dos窗口的HTTP服务,回到NetBeans集成开发环境,使用记事本等文本编辑软件编辑index.html。

HTML的<a>标记(tag)定义超链接,用于从一个页面链接到另一个页面。<a>标记最重要的属性是href,它指示链接的目标。在文件d:\javanetwork\index.html的元素<body></body>中增加一行:

<a href='Server.java'>start</a>

保存index.html,启动Server,使用浏览器浏览,然后点击超链接start,查看显示结果。

Server.java与index.html在不同文件夹,可以在index.html中指出Server.java的位置,例如<a href=".\src\demo\httpserver\Server.java">start</a>

其中.\表示当前目录。

HTML的<h1>到<h6>标记,定义六个不同大小的标题,例如:

<h4>实验三 HTTP</h4>HTML的

标记定义换行,此标记不需要结尾标记,例如:This is<br>an example<br>of line breaks.

修改d:\javanetwork\index.html,要求产生类似下图所示浏览效果:

其中链接Server Source Code指向Server.java, 链接Web Page指向index.html。点击Server Source Code后出现类似如下结果:

点击链接Web Page后出现类似如下结果:

第3部分 抓包

  1. 打开Wireshark,选择接口(网卡)为以太网,点击"捕获"->"选项",不勾选"在所有接口上使用混杂模式",点击"开始"按钮开始抓包;
  2. A,B两台主机一组,B运行Server程序;
  3. A使用浏览器访问B的Server;
  4. 待网页内容完整显示后,停止Wireshark抓包。
相关推荐
starstarzz2 小时前
计算机网络实验四:Cisco交换机配置VLAN
网络·计算机网络·智能路由器·vlan·虚拟局域网
EasyDSS3 小时前
国标GB28181-2022平台EasyGBS:安防监控中P2P的穿透方法
网络协议·php·音视频·p2p
网安墨雨3 小时前
常用网络协议
网络·网络协议
HSunR5 小时前
计算机网络
网络·计算机网络
ZoeLandia5 小时前
WebSocket | 背景 概念 原理 使用 优缺点及适用场景
网络·websocket·网络协议
像污秽一样5 小时前
计算机网络简答题
计算机网络
Crossoads9 小时前
【汇编语言】端口 —— 「从端口到时间:一文了解CMOS RAM与汇编指令的交汇」
android·java·汇编·深度学习·网络协议·机器学习·汇编语言
诸葛悠闲9 小时前
SOME/IP 协议详解——信息格式
网络协议
gywl12 小时前
openEuler VM虚拟机操作(期末考试)
linux·服务器·网络·windows·http·centos
某柚啊13 小时前
Windows开启IIS后依然出现http error 503.the service is unavailable
windows·http