首页 > 其他分享 >计算机网络实验2——利用Wireshark对上网操作抓包并进行相关协议分析(实验部分)

计算机网络实验2——利用Wireshark对上网操作抓包并进行相关协议分析(实验部分)

时间:2024-09-25 08:53:54浏览次数:12  
标签:HTTP 报文 TCP 实验 序列号 客户端 抓包 Wireshark

五、实验过程

1.安装并启动Wireshark。

选择菜单栏上捕获->选项,勾选WLAN网卡。点击Start,进行抓包

 Wireshark处于抓包状态中

  2.打开浏览器,在地址栏中输入教师指定的web服务器地址。(http://202.113.78.39)

为了确保连通性,先ping一下服务器  打开cmd  Ping  202.113.78.39 

网址登录失败。更换网址,进行实验 Ping image.baidu.com

ping百度网址以获得百度ip来对抓包进行限制

 

3. 打开153.3.237.235页面,鼠标右键单击看到的照片,将图片另存为到本地

打开 http://153.3.237.235界面

打开一张图片,将图片另存为到本地。

鼠标单击照片,待页面改变后,关闭浏览器,停止Wireshark抓包

4.所抓到数据包的种类如下:

TCP,HTTP,HTTP/JSON, TLSv1.2,TLVd1.3,DNS,MDNS,NBNS,SSL,UDP,IGMPv2,ARP,ICMPv6,

5.列表写出客户端、网关、web 服务器的 IP 地址和 MAC 地址。HTTP 客户端和服务器段的端口号

cmd  ipconfigz  找到客户端IP的地址和网关

 根据客户端IP的地址和网关,在Wireshark中找到相对应的MAC地址和HTTP 客户端和服务器段的端口号

 

Client

Gateway

Server

IP

192.168.0.199

192.168.0.1

153.3.238.102

MAC

ec:63:d7:d7:7c:74

50:0f:f5:34:b0:e0

50:0f:f5:34:b0:e0

Port#

49961

------------------------

443

6. 将TCP、IP、HTTP 和 Ethernet 的首部字段的名字和值按照协议的格式分别记录下来

访问指定服务器的第一个 HTTP 请求报文格式:

 

请求行

GET/HTTP/1.1\r\n

首部行

Host

153.3.237.235\r\n

Connection

keep-alive\r\n

Upgrade-Insecure-Requests:

1\r\n

User-Agent:

 Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.67\r\n

Accept

text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7\r\n

Accept-Encoding

 gzip, deflate\r\n

Accept-Language

:

zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6\r\n

服务器返回的第二个 HTTP 响应报文格式:

状态行

HTTP/1.1 200 OK\r\n

首部行

Response Version

HTTP/1.1

Status Code

200

Response Phrase

:

OK

Access-Control-Allow-Credentials

:

true\r\n

Access-Control-Allow-Origin:

:

https://m.baidu.com,https://www.baidu.com,http://m.baidu.com,http://www.baidu.com\r\n

Connection

:

keep-alive\r\n

Content-Encoding

:

gzip\r\n

Content-Type

:

 text/html; charset=UTF-8\r\n

Date

:

Thu, 12 Oct 2023 15:14:33 GMT\r\n

 任意一个UDP报文首部:

 

源端口号49668

目的端口号8000

UDP长度514

UDP检验和0xc7c5

 与服务器建立连接的第二次握手的 TCP 报文格式:

源端口:80

目的端口:49989

序号:0

确认号:16

数据偏移:0

保留:000

URG:0

ACK:1

PSH:0

RST:0

SYN:1

FIN:0

窗口:8192

校验和:0x71ca

填充:0

浏览器跳转到第二个Web页面的IP包首部: 

版本:4

头部长度:20 bytes

服务类型:0x00

总长度:52

标识符:0x0000

标志:0x2

片位移:0

存活时间:53

上层协议:TCP

报头校验和:0xbd04

源IP地址:157.148.41.188

目的IP地址:192.168.0.199

 任意802.3帧头 

50:0f:f5:34:b0:e0

ec:63:d7:d7:7c:74

0800

--------------

------------

 7.在Wireshark界面上,设置抓包后的过滤条件只显示IP地址包括web服务器地址的包(筛选格式类似“ip.addr eq 202.113.78.39”)

筛选条件为:

 筛选结果为:

8. 在 Wireshark 界面上分别圈出 TCP 建立连接和释放连接的数据包。(抓图展示)

建立连接过程为:

 释放连接过程为:

1

2

 3

4

 9.在 Wireshark 界面上圈出你的主机如何找到 Web 服务器的 MAC 地址(ARP 协议)或者 IP 地址(DNS 协议)

10. 依据实际抓到的数据包,截图并圈出 TCP 顺序号和确认号的使用方法及变化规律。 

Wireshark 中默认使用的是相对顺序号,本步骤中选择 Wireshark 菜单栏中

的 Edit -> Preferences ->protocols ->TCP,去掉 Relative sequence number 后面

勾选框中的√。

去掉前

 去掉后

规律:Wireshark通常显示的都是相对序列号/确认号,而不是实际序列号/确认号,相对序列号/确认号是和TCP会话的初始序列号相关联的。在实际中,比起真实序列号/确认号,跟踪更小的相对序列号/确认号会相对容易一些

11.在所抓到的各种类型数据包中,在Wireshark的主界面上是以下底纹标注

12. 尝试使用 Statistics 菜单中“IO graph”、“HTTP”、“Protocol Hierarchy” 等功能,并记录结果

  1. IO graph

统计->I/O图表

显示过滤器的配置:在Display filter项内输入需要配置的显示过滤器(不配置显示过滤器就是显示所有的数据包),然后勾选上前面的对勾就可显示图表 

IO Graphs应用

1)测量设备之间的吞吐量:

显示过滤器:ip.addr eq153. and ip addr eq 192.168.0.199

 

2) 可将数据复制到excel表格,再利用excel进行绘图

HTTP统计信息

1)分组计数器

2)请求:主机请求访问Web站点的分布情况,以及所访问的Web站点的具体资源。

 

3)负载分配:HTTP数据包(请求和响应)访问过哪些站点。

 4)请求序列

5)协议分级

 6)端点

此工具用来观察第二、三、四层端点(Ethernet端点、IP端点、TCP/UDP端点)有关的统计信息。 

15. 找到全部 HTTP 的请求消息并截图。(过滤条件类似“http.request and ip.addr eq 202.113.78.39”)

过滤条件:

过滤结果: 

16. 找到全部源 IP 地址为指定 web 服务器地址的 HTTP 响应消息并截图

17. 查看你访问指定 Web 服务器 HTTP 会话的工作过程。将结果截图,并对前 10 个包进行详细分析。

统计->流量图

 限制显示过滤器,TCP

每行代表一个单独的TCP包,左边列显示时间,中间列显示包的方向、TCP端口、段长度和设置的标志位,右边列以10进制的方式显示相关序列号/确认号。我们可以利用这个流图更好的理解序列号和确认号是如何工作的。序列号为当前端成功发送的数据位数,确认号为当前端成功接收的数据位数,SYN标志位和FIN标志位也要占1位

包1:TCP会话的每一端的序列号都从0开始,同样的,确认号也从0开始,因为此时通话还未开始,没有通话的另一端需要确认

包2:同包1

包3:服务端响应客户端的请求,响应中附带序列号0和相对确认号1(表明服务端收到了客户端发送的包1中的SYN)

包4:同包3

包5:客户端使用确认号1响应服务端的序列号0,同时响应中也包含了客户端自己的序列号(由于服务端发送的包中确认收到了客户端发送的SYN,故客户端的序列号由0变为1)此时,通信的两端的序列号都为1,通信两端的序列号增1发生在所有TCP会话的建立过程中 

包6:同包5

包7:第一个携带有效数据的包(即客户端发送的HTTP请求),序列号和确认号保持1不变,因为客户端没有从服务端接收到任何数据,包中有效数据的长度为482字节

包8:当上层处理HTTP请求时,服务端发送该包来确认客户端在包7中发来的数据,确认号的值增加了482(482是包7中有效数据长度),变为483。服务端告知客户端总共收到了482字节的数据.服务端的序列号保持为1不变

包9:标志着服务端返回HTTP响应的开始,该包带有1400字节的有效数据

包10:同包9

18. 使用Follow TCP Stream功能,将下载的文件从收到的HTTP响应消息数据包中恢复出来

Http 进行过滤

 

 上传文件提交可以使用post一个表单的形式

19.回答下列问题

1)简述访问 web 页面的过程

  1. 输入URL
  2. DNS域名进行解析,解析出网站的IP地址
  3. 客户端与服务器建立TCP连接
  4. 客户端发送HTTP请求
  5. 服务器进行响应,将内容发给客户端
  6. 释放TCP连接

 2)找出 DNS 解析请求、应答相关分组,传输层使用了何种协议,端口号是多少?所请求域名的 IP 地址是什么? 

DNS请求分组:基于UDP的传输协议,源端口号是57931,目的端口号是53,所请求IP地址:111.206.209.249

DNS应答分组:源端口号是53,目的端口号是57931

3) 针对 TCP 连接,该 TCP 连接的四元组是什么?双方协商的起始序号是什么?TCP 连接建立的过程中,第三次握手是否带有数据?是否消耗了一个序号?

四元组为:    源IP地址: ;源端口号: ;

目的IP地址: ;目的端口号: ;

双方协商的起始序号是0;

第三次握手后,seq和ack都为1.第三次报文没有消耗序号,没有带数据

4) 找到 TCP 连接的释放过程,绘出 TCP 连接释放的完整过程,注明每个 TCP 报文段的序号、确认号、以及 FIN\ACK 的设置。

第一个TCP报文段:seq=2497, ack=6147, FIN:set, ACK:set

第二个TCP报文段:seq=6147, ack=2498, FIN:not set, ACK:set

第三个TCP报文段:seq=6178, ack=2498, FIN:set, ACK:set

第四个TCP报文段:seq=2498, ack=6178, FIN:not set, ACK:set

5)针对 TCP 连接释放,请问释放请求由服务器还是客户发起?FIN 报文段是否携带数据,是否消耗一个序号?FIN 报文段的序号是什么?为什么是这个值?

释放请求是服务端发起的;

FIN报文段不携带数据,消耗一个序号;

FIN报文段的序号是6147,此报文前的一个报文确认号为2498,是前一个传送数据最后一个字节的序号

6)在该 TCP 连接的数据传输过程中,找出每一个 ACK 报文段与相应数据报文段的对应关系,计算这些数据报文段的往返时延 RTT(即 RTT 样本值)。

报文段往返时间RTT 新的RTTs=(1-a)*(旧的RTTs)+a*(新的RTT样本值)

新的RTTD=(1-b)*(旧的RTTD) +b*|RTTs-新的RTT样本|

7)请描述 HTTP 协议的持续连接的两种工作方式。访问这些页面(同一网站的不同页面)的过程中,采用了哪种方式

  1. 流水线方式:客户在收到 HTTP 的响应报文之前就能接着发送新的请求报文;
  2. 非流水线方式:客户在收到前一个响应后才能发出下一个请求;

采用的是流水线方式

六、结论与分析

遇到的问题1:

Ping  202.113.78.39   出现数据包100%丢失

Ping出网络丢包原因: 

  • 物理线路故障
  • 设备故障
  • 网络拥塞

于是,更换网址,重新进行实验  Ping image.baidu.com  

遇到的问题2:Wireshark界面中不显示IP协议

原因:tcp报文正是基于ip协议的,tcp是传输层协议,而ip是它底下的网络层协议

遇到的问题3:显示各种类型数据包在Wireshark的主界面底纹标注颜色

解决方法:与其他同学探讨,发现更简便的方法

视图->着色规则

遇到的问题4:在大量数据中,TCP的三次握手和四次挥手较为难找

解决方法:借助流量图等功能帮助寻找

遇到的问题5:无法成功恢复下载的文件

原因:对Follow TCP Stream功能了解不够深入

目前待解决

标签:HTTP,报文,TCP,实验,序列号,客户端,抓包,Wireshark
From: https://blog.csdn.net/qq_61012545/article/details/142455233

相关文章

  • 实验1 C语言输入输出和简单程序编写
    任务一#include<stdio.h>intmain(){printf("O\n");printf("<H>\n");printf("II\n");printf("O\n");printf("<H>\n");printf("II\n");return0;} #inclu......
  • CNAS软件测试实验室能力验证全流程介绍
    能力验证是多个实验室间比对来确定实验室检测能力的活动,是维持实验室较高技术水平的一种确认和验证活动。CNAS软件检测实验室初次认可和扩大认可范围时,申请认可的每个子领域应至少参加过一次相关领域的能力验证且获得满意结果。通过认定认可后,只要存在可获得的能力验证,不同类目......
  • 基于python+flask框架的开放实验室网上预约系统(开题+程序+论文) 计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着高等教育体系的不断发展和教育资源的日益丰富,实验室作为培养学生实践能力和创新精神的重要场所,其高效管理与利用成为高校亟需解决的问......
  • 容器系列-09liveness存活性探测实验步骤
    容器系列-09liveness存活性探测实验步骤#viliveness-exec.yaml#kubectlapply-fliveness-exec.yaml#kubectlgetpods#kubectldescribepodsliveness-exec#kubectlgetpods#kubectlexec-itliveness-exec--/bin/sh#kubectlgetpods#kubectlge......
  • 动手实验 1
    请运行以下代码(TestDouble.java)publicclassTestDouble{publicstaticvoidmain(Stringargs[]){System.out.println("0.05+0.01="+(0.05+0.01));System.out.println("1.0-0.42="+(1.0-0.42));System.out.println("......
  • springboot+vue中药实验管理系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着中医药事业的蓬勃发展,中药实验作为中医药教育与科研的重要组成部分,其管理水平直接影响着教学质量与科研成果的转化效率。然而,传统的中药实验管理模式多依赖于人工记录与纸质文档,存在信息更新不及时、资源共享难度大、管理流程繁琐......
  • Wireshark开源抓包工具
    Wireshark零基础使用教程(超详细)-元宇宙-Metaverse-博客园(cnblogs.com)一、Wireshark是什么Wireshark是使用最广泛的一款「开源抓包软件」,常用来检测网络问题、攻击溯源、或者分析底层通信机制。它使用WinPCAP作为接口,直接与网卡进行数据报文交换。二、Wireshark抓包原......
  • 写在实验之前
    尊敬的各位老师、同学、读者朋友们,大家好。我是一位目前就读于南京市一所普通一本院校的脆皮废物大学牲。我在2024年秋学期选读了数据结构与算法设计课程,也使我受益良多。当今的计算机系统代表了人类智力与创造力的巅峰之作,它们是科技进步达到极致的象征。纵观历史长河,没有......
  • 【智能大数据分析 | 实验一】MapReduce实验:单词计数
    【作者主页】FrancekChen【专栏介绍】⌈⌈⌈智能大数据分析⌋......
  • 9月20c语言程序设计实验作业
    #include<stdio.h>#include<stdlib.h>//本程序用于统计优秀(A),及格(B),不及格(C)人数intmain(){   intA=0,B=0,C=0;   intn;//n是参与本次测试的学生人数   inthigh=0,low= 0;//划分线分数   printf("输入学生人数:\n");   scanf_s("%d......