实验步骤

  1. 环境配置
    这个时候用Kali的好处来了!安装系统的时候已经预装过了,开袋即食
1
wireshark

在 Wireshark 启动后,看一下主界面顶部的网络接口列表:
如果能看到类似 eth0、wlan0 这样的接口名称,并且前面没有红色的”锁”图标,说明权限正常,可以直接点击开始抓包
如果接口前面有一个红色的”锁”图标,说明当前用户没有抓包权限,需要关闭 Wireshark,然后在终端执行以下命令把自己加入 wireshark 用户组:

1
2
sudo usermod -aG wireshark $USER
reboot

接着需要准备一个浏览器,此处鄙人不才选的是Chrome,下载时选择.deb
下载地址

1
2
cd 下载
sudo dpkg -i google-chrome-stable_current_amd64.deb

关于Chrome清空缓存的方法:
Ctrl+shift+delete
时间范围:选择”时间不限”(All time)
勾选:仅勾选”缓存的图片和文件”(Cached images and files)
点击:”清除数据”(Clear data)

关于wireShark的No.不显示的解决方案:
右键No.的这一栏,选择’列首选项’
选中No.并点击’-‘删除这一行
用’+’新添加,Title填’No.’,Type填’Number’,Fields填’frame.number’
点击确定即可

  1. 实验一(基本HTTP GET/response)
    1. 清空Chrome缓存并打开一个空白页(此时保持虚拟机里面只打开了Chrome一个浏览器)
    2. 重新在终端打开wireShark
    3. 网卡双击选择eth0(虚拟机桥接模式)
    4. 然后会看到抓了很多包(Tcp,ssh等)
    5. 在Chrome网址栏输入’http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file1.html
    6. 在wireShark的过滤器栏中输入http并回车
    7. 截图结果
    8. 为了回答1-7题,在wireShark中查看信息并截图
      1. 点击No.496(GET请求)
      2. 选择Hpertext Transfer Protocol展开
      3. 截图(1-3题)
      4. 点击No.502(200 OK未响应)
      5. 选择Hpertext Transfer Protocol展开
      6. 截图(4-7题)
  2. 实验二(条件GET)
    1. 停止当前抓包(红色方块)
    2. 重新抓包(蓝色鲨鱼鳍)
    3. 清空Chrome缓存并打开一个空白页
    4. 访问’http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file2.html
    5. 刷新一次浏览器
    6. 停止抓包
    7. 过滤器输入http
    8. 截图
    9. 查看信息并截图:
      1. 查看No.375
      2. 查看No.379
      3. 查看No.437
      4. 查看No.441
  3. 实验三(检索长文档)
    1. 清空Chrome缓存并打开一个空白页
    2. 开始抓包
    3. 访问’http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file3.html
    4. 页面加载结束后停止抓包
    5. 过滤器:http
    6. 截图(12-14)
    7. 重复步骤1-5,过滤器先ip.addr == 128.119.245.12,选择No.92,右键追踪流,选择TCP Stream,截屏
  4. 实验四(嵌入对象)
    1. 清空Chrome缓存并打开一个空白页
    2. 开始抓包
    3. 访问’http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file4.html
    4. 等待页面完全加载(一个短 HTML 文件和两张图片),停止抓包
    5. 在过滤器输入http
    6. 截图(16-17)
  5. 实验五(HTTP认证)
    1. 清空Chrome缓存并打开一个空白页
    2. 开始抓包
    3. 访问’http://gaia.cs.umass.edu/wireshark-labs/protected_pages/HTTP-wireshark-file5.html
    4. 在登录框里输入:
      用户名:wireshark-students
      密码:network
    5. 登录
    6. 停止抓包
    7. 过滤器:http
    8. 截图(18)
    9. 查看No.240的Hypertext Transfer Protocol(截图19)

实验题

  1. HTTP版本(GET部分):
    浏览器:HTTP/1.1
    服务器:HTTP/1.1
  2. 浏览器可接受的语言(Accept-Language字段):
    zh-CN,zh;q=0.9 优先接受简体中文,中文其次
  3. IP地址(Internet Protocol,Src本机,Dst服务器):
    本机:
    服务器:
  4. 状态码(HTTP/1.1 200 OK\r\n):
    200 OK
  5. 文件最后修改时间(Last-Modified):
    Tue, 28 Oct 2025 05:59:01 GMT
  6. 返回的内容字节数(Content-Length):
    128 bytes
  7. 原始数据中未显示的头部:
    \r\n、HTTP/1.1 200 OK状态行
  8. 第一次 GET 请求中是否有 “If-Modified-Since”?
    没有
  9. 第一次响应是否返回了文件内容?如何判断?
    返回了文件内容:
    状态码是 200 OK(表示成功)
    Content-Length: 371(表示返回了 371 字节的数据)
    File Data: 371 bytes(确认有文件内容)
  10. 第二次 GET 请求中是否有 “If-Modified-Since”?值是什么?
    有,值为Tue, 28 Oct 2025 05:59:01 GMT
  11. 第二次响应的状态码是什么?是否返回了文件内容?解释原因
    状态码是304 Not Modified
    未返回文件内容:服务器检查了 If-Modified-Since 字段,发现文件自 Tue, 28 Oct 2025 05:59:01 GMT 以来没有被修改过,因此返回 304 Not Modified 告诉浏览器可以使用本地缓存(响应中没有 Content-Length 字段和实体主体)
  12. 浏览器发送了几个 GET 请求?哪个包包含 GET 报文?
    4个
    No.90包含文档的GET报文
  13. 哪个包包含状态码和短语?
    No.94
  14. 状态码和短语是什么?
    200 OK
  15. 多少个数据包(TCP 段)携带了 HTTP 响应?
    2 个 TCP 段

在 Follow TCP Stream 窗口的底部,Wireshark 显示了统计信息:”2客户端分组,3服务器分组,3 turn(s)”,以及:”整个对话(6,316 bytes”

  1. 浏览器发送了多少个 HTTP GET 请求?发送到了哪些互联网地址?
    4个
    128.119.245.12(gaia.cs.umass.edu):共3个请求
    2.56.99.24(法国的服务器):1个请求
  2. 浏览器是串行还是并行下载两张图片?
    串行:浏览器在收到第一个图片的响应后,才发起第二个图片的请求。从时间戳可以看出两个请求之间有明显的间隔(约0.5秒)
  3. 服务器对第一次 GET 请求的响应(状态码和短语)是什么?
    401 Unauthorized (No.180)
  4. 第二次 GET 请求中包含了什么新字段?(Base64编码的用户名和密码)
    Authorization: (自己填)