hnu计网实验一-应用协议与数据包分析实验(使用Wireshark)

news2024/12/25 2:33:09

前言:这是个比较简单的实验,个人认为最难的不是分析部分,而是能否抓到一个好的包。为了抓到一个好的包我试了很多个网站,终于抓京东时抓到了令我个人最满意的包,因为没有其他各种杂乱的报文,就是那几条必要的报文,因此如果抓的包不满意的话可以多尝试几个不同的网站。

一、实验目的

通过本实验,熟练掌握Wireshark的操作和使用,学习对HTTP协议进行分析。

二、实验内容

1.HTTP 协议简介
HTTP 是超文本传输协议(Hyper Text Transfer Protocol)的缩写,用于WWW 服务。
(1)HTTP 的工作原理
HTTP 是一个面向事务的客户服务器协议。尽管HTTP 使用TCP 作为底层传输协议,但 HTTP 协议是无状态的。也就是说,每个事务都是独立地进行处理。当一个事务开始时,就在web客户和服务器之间建立一个TCP 连接,而当事务结束时就释放这个连接。此外,客 户可以使用多个端口和和服务器 (80 端口)之间建立多个连接。其工作过程包括以下几个阶段。

  1. 服务器监听TCP 端口 80,以便发现是否有浏览器 (客户进程)向它发出连接请求;
  2. 一旦监听到连接请求,立即建立连接。
  3. 浏览器向服务器发出浏览某个页面的请求,服务器接着返回所请求的页面作为响应。
  4. 释放TCP 连接。

在浏览器和服务器之间的请求和响应的交互,必须遵循HTTP 规定的格式和规则。当用户在浏览器的地址栏输入要访问的HTTP 服务器地址时,浏览器和被访问HTTP 服务器的工作过程如下:
① 浏览器分析待访问页面的URL 并向本地DNS 服务器请求IP 地解析;
② DNS 服务器解析出该HTTP 服务器的IP 地址并将IP 地址返回给浏览器;
③ 浏览器与HTTP 服务器建立TCP 连接,若连接成功,则进入下一步;
④ 浏览器向HTTP 服务器发出请求报文 (含GET 信息),请求访问服务器的指定页面;
⑤ 服务器作出响应,将浏览器要访问的页面发送给浏览器,在页面传输过程中,浏览器会打开多个端口,与服务器建立多个连接;
⑥ 释放TCP 连接;
⑦ 浏览器收到页面并显示给用户。
2、HTTP 报文格式
HTTP有两类报文:从客户到服务器的请求报文和从服务器到客户的响应报文。
在这里插入图片描述

图1.1 HTTP 的请求报文和响应报文结构
在图1.1 中,每个字段之间有空格分隔,每行的行尾有回车换行符。各字段的意义如下:
① 请求行由三个字段组成:

  • 方法字段,最常用的方法为 “GET”,表示请求读取一个万维网的页面。常用的方法还有 “HEAD(指读取页面的首部)”和“POST(请求接受所附加的信息);
  • URL 字段为主机上的文件名,这时因为在建立TCP 连接时已经有了主机名;
  • 版本字段说明所使用的HTTP 协议的版本,一般为 “HTTP/1.1”。
    ② 状态行也有三个字段:
  • 第一个字段等同请求行的第三字段;
  • 第二个字段一般为 “200”,表示一切正常,状态码共有41 种,常用的有:301 (网站已转移),400(服务器无法理解请求报文),404(服务器没有锁请求的对象)等;
  • 第三个字段时解释状态码的短语。

③ 根据具体情况,首部行的行数是可变的。请求首部有Accept 字段,其值表示浏览器 可以接受何种类型的媒体;Accept-language,其值表示浏览器使用的语言;User-agent 表明可用的浏览器类型。响应首部中有Date、Server、Content-Type、Content-Length 等字段。在请求首部和响应首部中都有 Connection 字段,其值为Keep-Alive 或 Close,表示服务器在传送完所请求的对象后是保持连接或关闭连接。
④ 若请求报文中使用 “GET”方法,首部行后面没有实体主体,当使用 “POST”方法是,附加的信息被填写在实体主体部分。在响应报文中,实体主体部分为服务器发送给客户的对象。
图1.2 和图1.3显示了捕获的HTTP 请求和响应报文,结合上面的介绍,请自己分析和体会。
在这里插入图片描述
图1.2 HTTP 请求报文示例
在这里插入图片描述
图1.3 HTTP 响应报文示例
2.实验环境与说明
(1)实验目的
在PC 机上访问Web 页面,截获报文,分析HTTP 协议的报文格式和HTTP协议的工作过程。
(2)实验设备和连接
本地实验室环境,无须设备连接;
注意:请通过访问可以连接的WWW 站点或使用IIS 建立本地WWW 服务器来进行实验。
(3)实验分组
每四名同学为一组,每人一台计算机独立完成实验。

三、实验过程

1.开始抓包
1)打开wireshark
在官网按照系统版本选择下载好wireshark后,打开wireshark主页面
在这里插入图片描述

2)打开WLAN接口开始抓包
点击捕获-选项,可以看到有很多接口(如本地连接 *10,本地连接 *9,WLAN等),这里我们打开WLAN接口,此时wireshark开始抓包
在这里插入图片描述
3)打开jd.com网站
使用任意浏览器打开网站,这里使用QQ浏览器。打开jd.com后等待页面加载完毕,然后关闭网站,回到wireshark软件,选择暂停抓包
在这里插入图片描述
wireshark抓包情况如下:
在这里插入图片描述
2.过滤
wireshark有一个强大的功能就是可以选择过滤出想要的抓包信息。由于我们一打开WLAN接口软件就开始抓包,所以抓的包中可能包含不是关于想要jd.com的相关报文。可以在过滤器上输入http来获得相关HTTP协议的报文,这里我们可以使用过滤器。由于我们想要获得HTTP协议的报文,因此我们在过滤栏输入http过滤出http协议的报文信息:
在这里插入图片描述
3.保存
停止截获报文,将截获的报文命名为http-学号保存。
4.分析
点开第一条HTTP报文信息,可以看到
在这里插入图片描述

四、回答问题

1)综合分析截获的报文,查看有几种HTTP 报文?

有两种,如下图所示,分别为请求报文和应答报文

  • 请求报文:下图第三行为从客户端发往服务器的请求报文,其最左边箭头为向左表示请求报文。其中Source的10.63.200.105是客户端的ip,Destination的106.39.171.134是服务器的ip
  • 响应报文:下图第二行为服务器发往客户端的应答报文 。其中Source的106.39.171.134是服务器的ip,Destination的10.63.200.105是客户端的ip

在这里插入图片描述

2)在截获的HTTP 报文中,任选一个HTTP 请求报文和对应的 HTTP 应答报文,仔细分析它们的格式,填写表1.1 和表1.2。

1.请求报文
下面分析一下序列号为7的HTTP请求报文的相关信息,如下图所示
在这里插入图片描述
在这里插入图片描述
2.应答报文
下面分析一下序列号为9的HTTP应答报文的相关信息,如下图所示
在这里插入图片描述
在这里插入图片描述

3)分析在截获的报文中,客户机与服务器建立了几个连接?服务器和客户机分别使用了哪几个端口号?

右键第一条请求报文-追踪流-TCP流,查看连接,结果如下:
在这里插入图片描述
可以看到只有一条连接,其中服务器端口为80,客户机的端口为65450

4)综合分析截获的报文,理解HTTP 协议的工作过程,将结果填入表1.3中。

HTTP的工作流程大致为:

  1. 建立连接。先解析DNS,把local host变成ip(127.0.0.1),然后根据127.0.0.1和端口号80(没有端口号则使用默认的端口)建立socket。也可以理解为通过“三次握手”建立TCP连接,确定通讯正常。
  2. 发送请求命令。socket建立好之后,客户端开始向web服务器发送请求命令(GET/POST等)。
  3. 发送请求头(和请求正文如果有)。客户端先发送与自身相关的信息,再发送空行表示请求头发送完毕,如果是post则继续发送请求正文。
  4. 回传状态行。应答第一步,发送协议版本和状态码(200、503、404等)
  5. 回传应答头。应答第二步,先发送自身相关信息、Content-Type(必须)及被请求的文档,在发送空行宝石应答头发送完毕。
  6. 回传应答正文。应答第三步,根据应答头的Content-Type指定的格式发送应答正文。
  7. 关闭连接。一次‘会话’完成,如果设置了Connection:keep-alive则TCP连接不关闭,否则关闭连接。

下面按照报文图进行分析
在这里插入图片描述
在这里插入图片描述
[1] 第一次握手:客户端发送SYN到服务器,并进入SYN_SENT状态。SYN :标志位,表示请求建立连接。Seq = 0 :初始建立连接值为0,数据包的相对序列号从0开始,表示当前还没有发送数据。Ack =0:初始建立连接值为0,已经收到包的数量,表示当前没有接收到数据。
[4] 第二次握手:服务器收到请求后,回送SYN+ACK信令到客户端,此时服务器进入SYN_RECV状态,Seq = 0 :初始建立值为0,表示当前还没有发送数据,Ack = 1 : 表示当前端成功接收的数据位数,虽然客户端没有发送任何有效数据,确认号还是被加1,因为包含SYN或FIN标志位。
[6] 第三次握手:主客户端收到SYN+ACK包,向服务器发送确认ACK包,客户端进入ESTABLISHED状态,服务器收到请求后也进入ESTABLISHED状态,完成三次握手,此时TCP连接成功,客户端与服务器开始传送数据。ACK :标志位,表示已经收到记录。Seq = 1 :表示当前已经发送1个数据。

为什么是三次握手
1)第一次握手成功:说明客户端的数据可以被服务端收到,说明客户端的发功能可用,说明服务端的收功能可用。但客户端自己不知道数据是否被接收。
2)第二次握手成功:说明服务端的数据可以被客户端收到,说明服务端的发功能可用,说明客户端的收功能可用。同时客户端知道自己的数据已经正确到达服务端,自己的发功能正常。但是服务端自己不知道数据是否被接收。
3)第三次握手成功:说明服务端知道自己的数据已经正确到达客户端端,自己的发功能正常。至此服务成功建立。

这里,主机A是客户端口51253,B为服务器端口80。完成三次握手,主机A与主机B开始传送数据。

[7] 为请求命令GET的发送。在TCP三次握手之后,连接已经建立,可以传输数据。
交互过程中,SEQ表示发送的数据,LEN表示发送的数据长度,下一次的SEQ就等于当前SEQ加上LEN。ACK表示接收的数据位。客户端和服务端分别计算自己的增长值。
[8] 服务端收到请求,发送ACK应答代表收到请求
[9] 服务器向本地发送HTTP 302错误,要求本地进行重定向请求。
[10] 本地65450端口通过TCP向服务器80端口请求信息,这次的请求已经重定向,返回302时一般会在响应头里加上一个location,包含这一个要跳转的url,使浏览器跳转到这个url。

在这里插入图片描述
在这里插入图片描述
[41] 第一次挥手:客户端 发送一个[FIN+ACK],表示自己没有数据要发送了,想断开连接
[42] 第二次挥手:服务端收到FIN后,知道不会再有数据从客户端传来,发送ACK进行确认
[43] 第三次挥手:服务端发送[FIN+ACK]给对方,表示自己没有数据要发送了,然后直接断开TCP会话的连接,释放相应的资源。
[44] 第四次挥手:客户端收到了服务端的FIN信令后,发送ACK确认消息。断开了到服务端的TCP连接,释放所有资源。当服务端收到客户端的ACK回应后,会进入CLOSE状态,并关闭本端的会话接口,释放相应资源。

填表结果如下:
在这里插入图片描述

五、实验总结

1.学习到的知识
通过这次实验学习到了很多的知识点。首先学会了使用wireshark来截取各种网络数据包,并可以对数据包详细信息进行一定分析。同时对HTTP协议有了更深一层次的理解,体会到了TCP建立的三次握手的取消的四次挥手的过程。尤其在实验的过程中学习到了HTTP与HTTPS协议的不同,在http://www.jd.com网站访问的报文中发现学习了一些网站从HTTP到HTTPS的过渡,通过在HTTP响应报文中添加首部行Location记录新的HTTPS网址可以实现跳转。本次实验受益匪浅,对课本的理论知识有了更深的理解和巩固。
2.遇到的问题
在实验中也遇到了很多问题,比如wireshark的使用方法,网上有许多教程,跟着一两个教程完整的抓一次包即可基本学会。还有有时候会抓不到想要的http协议,这可能与网站有关(换不同网站),也可能与网络有关,也可以重启wireshark多试验几遍来获得想要的报文信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/128220.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

直流信号线性放大器非隔离转换模块0-10V转0-12V大功率负载180mA导轨安装

概述: 导轨安装DIN11 NIPO 系列模拟信号放大器是一种将输入信号放大、转换成按比例输出的直流信号放大器。产品广泛应用在电力、远程监控、仪器仪表、医疗设备、工业自控等需要直流信号测控的行业。此系列产品内部采用稳压电路,通过等比例控制线性放大输…

视频转换IC大全和桥接芯片大全

视频转换大全(桥接芯片大全) 本人从事多年视频转换ic多年累计大量宝贵资源,可以和大家交流交流,下面就视频转换或桥接芯片做下相关交流,期望可以帮助大家。 视频转换或视频桥接:就是把视频源的信号格式转成…

《MySQL高级篇》数据库建模工具---PowderDesigner的使用教程

文章目录PowerDesigner的使用11.1 开始界面11.2 概念数据模型11.3 物理数据模型11.4 概念模型转为物理模型11.5 物理模型转为概念模型11.6 物理模型导出SQL语句PowerDesigner的使用 PowerDesigner是一款开发人员常用的数据库建模工具,用户利用该软件可以方便地制作…

Python--字典及基本操作

字典也是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据。 比如有份成绩表数据,语文:79,数学:80,英语:92,这组数据看上去像两个列表,但这两个列表的元素…

传统目标跟踪——背景分割法

目录 一、背景分割法 二、流程 三、代码 四、总结 一、背景分割法 传统的前景背景分割方法有GrabCut,分水岭算法,当然也包括一些阈值分割的算法。但是这些算法在应用中往往显得鲁棒性较弱,达不到一个好的分割效果。 现代的背景分割算法融入…

便宜的骨传导耳机好用吗?五款便宜的骨传导耳机推荐

市面上的骨传导耳机价格参差不齐,那价位较低的骨传导耳机能不能入手呢?只能说“一分钱,一分货”但是一些大牌骨传导耳机品牌也会出一些性价比较高的骨传导耳机,依靠大牌技术的加持,耳机的使用体验也会更好。可以看看下…

抓住站点能源革命机遇,必须要了解的十大趋势

编辑 | 阿冒 设计 | 沐由每一天,你做得最多的几件事情是什么?喝八回水,吃三次饭,还有空闲的时候起身溜达几圈,以及穿插其间、难以计数的查看手机次数?可以说,我们中的绝大多数每天在手机上花…

告别丑陋判空,一个Optional类就能搞定

认识Optional Opitonal类就是Java提供的为了解决大家平时判断对象是否为空用,通常会用 null!obj 这样的方式存在的判断,从而令人头疼导致空指针异常,同Optional的存在可以让代码更加简单,可读性跟高,代码写起来更高效…

剑指 Offer 16. 数值的整数次方

题目 实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。 思路 快速幂算法 求 x^n最简单的方法是通过循环将 n 个 x 乘起来,依次求 x1,x2,...,x^n,…

【微服务】Nacos 注册中心服务数据模型

目录 一、前言 二、服务(Service)和服务实例(Instance) 1、定义服务 2、服务元数据 3、定义实例 4、实例元数据 5、持久化属性 三、集群 1、定义集群 四、生命周期 1、服务的⽣命周期 2、实例的⽣命周期 3、集群的⽣命…

使用Comsol完成固体火箭装药的燃面推移

简介 为了计算固体火箭发动机的内弹道曲线,必须知道燃面面积随烧去肉厚的变化关系。目前主要有实体造型法、动网格法、水平集法等。笔者给出一种直接使用Comsol有限元软件完成燃面推移的方法,使用简便快捷,无需编写代码。 理论部分可参考论…

API风险

©网络研究院 从表面上看,API帮助企业连接应用程序并相互共享数据。这为客户和用户创造了更简单、更无缝的体验。 如果你曾经使用你的谷歌账户登录过多个网站或应用程序,那么你很有可能使用的是谷歌开发的API。 像这样的API在后台工作&#xff0c…

极狐gitlab-runner的安装

1)下载系统对应的二进制文件 # Linux x86-64 sudo curl -L --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-linux-amd64 2)赋予执行权限 chmod x /usr/local/bin/gitlab-runne…

Faster RCNN网络源码解读(Ⅱ) --- Faster RCNN源码使用

目录 一、源码链接 二、环境配置 三、文件结构 四、预训练权重下载地址 五、训练集 六、训练方法及注意事项 七、大概看一下训练过程(train_mobilenetv2.py) 一、源码链接 Faster R-CNN源码链接https://pan.baidu.com/s/1SQjyLXD47H11ke05OXY…

基于javaweb的学院社团管理系统(idea+servlet+jsp)

一、系统简介 本项目采用idea工具开发,jspservletjquery技术编写,数据库采用的是mysql,navicat开发工具。 系统一共分为3个角色分别是:管理员,学生,社长 获取方式:基于javaweb的学院社团管理系…

VisualStudio2015安装不上的解决方法_选择对应msi_依然报错继续选择---VisualStudio2015工作笔记001

这个visualstudio网上竟然有卖的,真的是太~咱啥也不说了~ 好了说解决办法吧; 1.这里完整版大小挺大的6G多,但是这里我们找的有可能是只有3.8G左右的,这个版本的就是有文件损坏...但是这个版本是可以装上的,也不耽误用的,我亲自测试了. 2.因为很久没写vb.net程序了,想写个小程…

Docker中安装宝塔

1、docker拉取ubuntu系统 docker pull ubuntudocker pull ubuntu 2、运行容器 docker run -i -t -d --name bt -p 2000:20 -p 2100:21 -p 8000:80 -p 4430:443 -p 8880:888 -p 8888:8888 --privilegedtrue -v /d/baota:/www/wwwroot ubuntu -v后的/d/baota代表本地D盘的bao…

【LeetCode】二叉树中的最大路径和 [H](递归)

124. 二叉树中的最大路径和 - 力扣(LeetCode) 一、题目 路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一…

擎创技术流 | ClickHouse实用工具—ckman教程(8)

2022年即将迎来终点,各大公司和网站开始出“年终使用报告”了,而关于ClickHouse系列分享也来到了尾期。本系列最初一共规划了10期内容,一转眼就只剩最后2期了,初衷就是单纯的技术分享,如果你能从中得到启发&#xff0c…

圣诞节来临,TikTok上圣诞相关产品销量突破5万单丨超店有数

12月25日,圣诞节正式来临。TikTok卖家和达人如何把握住这个一年一度的「西方春节」,如何实现精准选品,快速爆单。凡事预则立,不预则废。快人一步,掌握趋势,抢占先机。 从谷歌趋势观察,一周内「…