Wireshark实验

这篇具有很好参考价值的文章主要介绍了Wireshark实验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、Wireshark基本使用

  1. 选择那块网卡进行捕捉,可以看到WLAN有网络波动,并且结合本机网络,确实应该选择这个。
    wireshark实验,网络,服务器,java

  2. 开始/停止捕获

    选择WLAN,右键,选择Start capture即可开始捕捉,or双击是一样的

    wireshark实验,网络,服务器,java

    开始捕获后自动跳转到捕捉主界面:
    wireshark实验,网络,服务器,java

    可以看到工具栏中,有开始捕获、停止捕获、重新开始当前捕获这些基本功能。

    wireshark实验,网络,服务器,java

  3. 了解Wireshark主要窗口区域

    tips:在wireshark的抓包界面,基本分为菜单栏、工具栏、过滤栏、数据列表区、数据详细区、数据字节区和数据统计区等等

    wireshark实验,网络,服务器,java

    • 开始/停止捕获: 这两个可以通过菜单栏中的捕获一项进行控制,同样也可以通过工具栏中的图标进行控制。

    • 过滤栏则是快速对捕获的包进行过滤

    • 在数据列表区选择某条数据的时候,下方数据详细区则会显示对应包的详细信息,同样数据字节区则会显示该包实际传递到数据字节,数据统计区会对其进行统计分析,在数据列表区右键还可以进行数据流的追踪。

  4. 设置数据包的过滤

    tips:在过滤栏简单输入需要保留特征,回车即可快速过滤

    wireshark实验,网络,服务器,java

    在其中输入tcp后,协议只保留了所有TCP的协议。

    同时我们还可以通过过滤,之查看与某ip相关的包。

    下面列举各种过滤方法:

    (1)协议过滤

    直接输入协议名tcp/http/icmp(注:需要小写)

    (2)IP过滤

    ip.src==x.x.x.x 显示原地址为x.x.x.x的数据包列表

    ip.dst==x.x.x.x 显示目标地址为x.x.x.x的数据包列表

    ip.addr==x.x.x.x 显示原地址或者目标地址为x.x.x.x的数据包列表

    (3)端口过滤

    tcp.port==x 显示源主机或者目的主机端口为x的数据包列表

    tcp.srcport==x 显示TCP协议的源主机端口为x的数据包列表

    tcp.dstport==x 显示TCP协议的目的主机端口为x的数据包列表

    (4)Http模式过滤

    http.request.method==“GET” 显示HTTP GET方法。

    (5)按照数据包内容过滤

    找到数据包select contains“xxx"

  5. 跟踪数据流

    假设我们现在希望分析其中一个包,对其进行数据流追踪。

    故我们可以选择一个右键->追踪流->TCP流

    wireshark实验,网络,服务器,java

wireshark实验,网络,服务器,java

同时我们可以看到双方整个对话,或者选择单方,然后可以把展示数据改为原始数据,然后另存到本地,通过二进制的存储,然后利用WinHex等工具对原始资源进行还原。

二、数据链路层

实作一 熟悉 Ethernet 帧结构

使用 Wireshark 任意进行抓包,熟悉 Ethernet 帧的结构,如:目的 MAC、源 MAC、类型、字段等。

wireshark实验,网络,服务器,java

双击任意一个包,即可弹出详细信息界面,在这里选择数据链路层的Ethernet帧,下方即可展开该帧结构,包括目的MAC,源MAC、类型,下方还会高亮对应的数据字节。甚至还会根据MAC地址特点分析出设备厂家等。

问题

你会发现 Wireshark 展现给我们的帧中没有校验字段,请了解一下原因。

答:因为校验字段不会进行校验,因此Wireshark将它丢弃了

实作二 了解子网内/外通信时的 MAC 地址

ping 192.168.31.165子网内通信

wireshark实验,网络,服务器,java
wireshark实验,网络,服务器,java

无论是发出的目的mac还是返回的源mac都为:7c-2a-db-6a-52-cd,对应设备的mac实际地址。

ping qige.io子网外通信

wireshark实验,网络,服务器,java

wireshark实验,网络,服务器,java

发出帧的目的 MAC 地址以及返回帧的源 MAC 地址是8c-de-f9-31-c5-3d,这个MAC地址是本机的网关MAC地址

利用arp -a查看此时的网关mac:8c-de-f9-31-c5-3d

wireshark实验,网络,服务器,java

ping www.cqjtu.edu.cn 同样是子网外通信

wireshark实验,网络,服务器,java

wireshark实验,网络,服务器,java

发现目的的mac以及返回帧的源 MAC 同样是网关地址:8c-de-f9-31-c5-3d

问题

通过以上的实验,你会发现:

  1. 访问本子网的计算机时,目的 MAC 就是该主机的
  2. 访问非本子网的计算机时,目的 MAC 是网关的

请问原因是什么?

因为要访问本子网外的计算机时,必定先经过网关,在本子网内就不需要到达网关,直接到该计算机。

实作三 掌握 ARP 解析过程

  1. 为防止干扰,先使用 arp -d * 命令清空 arp 缓存

    wireshark实验,网络,服务器,java

  2. ping 你旁边的计算机(同一子网),同时用 Wireshark 抓这些包(可 arp 过滤),查看 ARP 请求的格式以及请求的内容,注意观察该请求的目的 MAC 地址是什么。再查看一下该请求的回应,注意观察该回应的源 MAC 和目的 MAC 地址是什么。

    ping 192.168.31.165

    wireshark实验,网络,服务器,java

    源MAC是本机的MAC地址,目的MAC地址是该IP的MAC地址

  3. 再次使用 arp -d * 命令清空 arp 缓存

  4. 然后 ping qige.io (或者本子网外的主机都可以),同时用 Wireshark 抓这些包(可 arp 过滤)。查看这次 ARP 请求的是什么,注意观察该请求是谁在回应。

wireshark实验,网络,服务器,java

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O81o513j-1671602490773)(C:\Users\shuoshuo\Desktop\书\计算机网络\实验\Wireshark\Wireshark实验.assets\arp.png)]
wireshark实验,网络,服务器,java

回复为本机的MAC地址

问题

通过以上的实验,你应该会发现,

  1. ARP 请求都是使用广播方式发送的
  2. 如果访问的是本子网的 IP,那么 ARP 解析将直接得到该 IP 对应的 MAC;如果访问的非本子网的 IP, 那么 ARP 解析将得到网关的 MAC。

请问为什么?

如果访问的是本子网的 IP ,如果 ARP 缓存中没有该 IP的mac 地址,那么就广播在子网中寻找这个ip ,然后再得到该ip的mac地址;如果访问的是非子网的 IP ,那么 APR 将会解析得到网关的 mac,因为发送数据到外网都是通过网关这个端口,所以得到的是网关的 mac。

三、网络层

实作一 熟悉 IP 包结构

使用 Wireshark 任意进行抓包(可用 ip 过滤),熟悉 IP 包的结构,如:版本、头部长度、总长度、TTL、协议类型等字段。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CCpX4soE-1671602492740)(null)]

问题

为提高效率,我们应该让 IP 的头部尽可能的精简。但在如此珍贵的 IP 头部你会发现既有头部长度字段,也有总长度字段。请问为什么?

答:为了在此基础上更加提高效率,有头部长度字段和总长度字段是为了方便上层将 IP 包中的数据提取出来,当数据长度超过1500B时就会被返回链路层进行分段,这样能帮助传输时的识别IP总长度,提高传输效率。

实作二 IP 包的分段与重组

根据规定,一个 IP 包最大可以有 64K 字节。但由于 Ethernet 帧的限制,当 IP 包的数据超过 1500 字节时就会被发送方的数据链路层分段,然后在接收方的网络层重组。

缺省的,ping 命令只会向对方发送 32 个字节的数据。我们可以使用 ping 202.202.240.16 -l 2000 命令指定要发送的数据长度。此时使用 Wireshark 抓包(用 ip.addr == 202.202.240.16 进行过滤),了解 IP 包如何进行分段,如:分段标志、偏移量以及每个包的大小等

wireshark实验,网络,服务器,java

wireshark实验,网络,服务器,java

由图知,一共分成了两个包,其中:

wireshark实验,网络,服务器,java

包总长为1500,偏移量为0,分段标志置1

wireshark实验,网络,服务器,java

包总长为548,偏移量为1480,分段标志置0

问题

分段与重组是一个耗费资源的操作,特别是当分段由传送路径上的节点即路由器来完成的时候,所以 IPv6 已经不允许分段了。那么 IPv6 中,如果路由器遇到了一个大数据包该怎么办?

答:会将其直接丢弃。

实作三 考察 TTL 事件

在 IP 包头中有一个 TTL 字段用来限定该包可以在 Internet上传输多少跳(hops),一般该值设置为 64、128等。

在验证性实验部分我们使用了 tracert 命令进行路由追踪。其原理是主动设置 IP 包的 TTL 值,从 1 开始逐渐增加,直至到达最终目的主机。

请使用 tracert www.baidu.com 命令进行追踪,此时使用 Wireshark 抓包(用 icmp 过滤),分析每个发送包的 TTL 是如何进行改变的,从而理解路由追踪原理。

wireshark实验,网络,服务器,java

  1. 第一跳

    wireshark实验,网络,服务器,java

    TTL设置为1

  2. 第二跳

    wireshark实验,网络,服务器,java

    TTL设置为2

  3. 第三跳

wireshark实验,网络,服务器,java

​ TTL设置为3

​ …

​ Tracert 先发送 TTL 为 1 的回应数据包,并随后的每次发送过程将 TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。

问题

在 IPv4 中,TTL 虽然定义为生命期即 Time To Live,但现实中我们都以跳数/节点数进行设置。如果你收到一个包,其 TTL 的值为 50,那么可以推断这个包从源点到你之间有多少跳?

答:比50大且最接近的2的n次方为:64,即

​ 64-50=14跳

四、传输层

实作一 熟悉 TCP 和 UDP 段结构

  1. 用 Wireshark 任意抓包(可用 tcp 过滤),熟悉 TCP 段的结构,如:源端口、目的端口、序列号、确认号、各种标志位等字段。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JCvfhBpc-1671602492317)(null)]

  2. 用 Wireshark 任意抓包(可用 udp 过滤),熟悉 UDP 段的结构,如:源端口、目的端口、长度等。

wireshark实验,网络,服务器,java

问题

由上大家可以看到 UDP 的头部比 TCP 简单得多,但两者都有源和目的端口号。请问源和目的端口号用来干什么?

端口和目的端口是用来确认某一个应用程序,IP 只能到达子网网关,MAC 地址到达子网下的指定主机,而端口号是达到主机上的某个应用程序。

实作二 分析 TCP 建立和释放连接

  1. 打开浏览器访问 qige.io 网站,用 Wireshark 抓包(可用 tcp 过滤后再使用加上 Follow TCP Stream),不要立即停止 Wireshark 捕获,待页面显示完毕后再多等一段时间使得能够捕获释放连接的包。

  2. 请在你捕获的包中找到三次握手建立连接的包,并说明为何它们是用于建立连接的,有什么特征。

    wireshark实验,网络,服务器,java

    第一次握手,SYN为1,ACK为0

wireshark实验,网络,服务器,java

第二次握手,SYN为1,ACK为1

wireshark实验,网络,服务器,java

第三次握手,SYN为0,ACK为1

wireshark实验,网络,服务器,java

SYN 同步序列号,用来发起一个TCP连接

  1. 请在你捕获的包中找到四次挥手释放连接的包,并说明为何它们是用于释放连接的,有什么特征。

    wireshark实验,网络,服务器,java

    第一次挥手,FIN为1,ACK为1

    wireshark实验,网络,服务器,java

    第二次挥手,FIN为0, ACK为1

    wireshark实验,网络,服务器,java

    第三次挥手,FIN为1,ACK为1

    wireshark实验,网络,服务器,java

第四次挥手,FIN为0, ACK为1

wireshark实验,网络,服务器,java

TCP断开连接是通过发送FIN报文,来告诉对方数据已经发送完毕,可以释放连接了。

问题一

去掉 Follow TCP Stream,即不跟踪一个 TCP 流,你可能会看到访问 qige.io 时我们建立的连接有多个。请思考为什么会有多个连接?作用是什么?

这属于短连接,这为了实现多个用户进行访问,对业务频率不高的场合,不让其长期占用通道。一个网页由多个部分组成,在头部的link标签中可能也有很多链接来寻找一些css或者js文件等其他文件。并行查找,加快网页展示速度。

问题二

我们上面提到了释放连接需要四次挥手,有时你可能会抓到只有三次挥手。原因是什么?

服务器向客户端发送断开连接和回复同意断开连接合成一次挥手。

五、应用层

实作一 了解 DNS 解析

  1. 先使用 ipconfig /flushdns 命令清除缓存,再使用 nslookup qige.io 命令进行解析,同时用 Wireshark 任意抓包(可用 dns 过滤)。

    wireshark实验,网络,服务器,java

  2. 你应该可以看到当前计算机使用 UDP,向默认的 DNS 服务器的 53 号端口发出了查询请求,而 DNS 服务器的 53 号端口返回了结果。

    查询

    wireshark实验,网络,服务器,java

    应答
    wireshark实验,网络,服务器,java

  3. 可了解一下 DNS 查询和应答的相关字段的含义

wireshark实验,网络,服务器,java

wireshark实验,网络,服务器,java

QR:查询/应答标志。0表示这是一个查询报文,1表示这是一个应答报文
opcode,定义查询和应答的类型。0表示标准查询,1表示反向查询(由IP地址获得主机域名),2表示请求服务器状态
AA,授权应答标志,仅由应答报文使用。1表示域名服务器是授权服务器
TC,截断标志,仅当DNS报文使用UDP服务时使用。因为UDP数据报有长度限制,所以过长的DNS报文将被截断。1表示DNS报文超过512字节,并被截断
RD,递归查询标志。1表示执行递归查询,即如果目标DNS服务器无法解析某个主机名,则它将向其他DNS服务器继续查询,如此递归,直到获得结果并把该结果返回给客户端。0表示执行迭代查询,即如果目标DNS服务器无法解析某个主机名,则它将自己知道的其他DNS服务器的IP地址返回给客户端,以供客户端参考
RA,允许递归标志。仅由应答报文使用,1表示DNS服务器支持递归查询
zero,这3位未用,必须设置为0
rcode,4位返回码,表示应答的状态。常用值有0(无错误)和3(域名不存在)

问题

你可能会发现对同一个站点,我们发出的 DNS 解析请求不止一个,思考一下是什么原因?

DNS不止一个的原因可能是DNS解析过程是先从浏览器的DNS缓存中检查是否有这个网址的映射关系,如果有,就返回IP,完成域名解析;如果没有,操作系统会先检查自己本地的hosts文件是否有这个网址的映射关系,如果有,就返回IP,完成域名解析;如果还没有,电脑就要向本地DNS服务器发起请求查询域名;本地DNS服务器拿到请求后,先检查一下自己的缓存中有没有这个地址,有的话直接返回;没有的话本地DNS服务器会从配置文件中读取根DNS服务器的地址,然后向其中一台发起请求;直到获得对应的IP为止。

实作二 了解 HTTP 的请求和应答

  1. 打开浏览器访问 qige.io 网站,用 Wireshark 抓包(可用http 过滤再加上 Follow TCP Stream),不要立即停止 Wireshark 捕获,待页面显示完毕后再多等一段时间以将释放连接的包捕获。

    选择qige.io使用的是https,使用http过滤已经无法抓取信息,换了个url进行抓取。

  2. 请在你捕获的包中找到 HTTP 请求包,查看请求使用的什么命令,如:GET, POST。并仔细了解请求的头部有哪些字段及其意义。

    下面是我抓其他网站的get

wireshark实验,网络,服务器,java

字段:
User-Agent:在请求中使用,表示客户端的情况。
Host:在请求中使用,用于表示请求URL的主机和端口信息。当端口为当前url使用的协议http/https的默认端口时,浏览器会省略端口部分。
Content-Type:在请求和响应中都可使用,用于表示体部数据的类型。
Cookie:在请求中使用,只能有一个该字段,用于携带cookie的值对。name和value之间使用=连接,键值对之间使用;分隔。
Set-Cookie:在响应中使用,可以有多个该字段,用于cookie设置。
Content-Length:在请求或响应中使用,按字节计数,仅限请求或响应的体部。
Date:在响应中使用,表示当前时间,为GMT格式。
Origin:在请求中使用,用于表示发起该请求的页面。

  1. 请在你捕获的包中找到 HTTP 应答包,查看应答的代码是什么,如:200, 304, 404 等。并仔细了解应答的头部有哪些字段及其意义。

wireshark实验,网络,服务器,java

1xx:表示收到请求。
2xx:成功,请求成功被接受。
3xx:重定向。
4xx:客户端错误。
5xx:服务器错误。

✍ 建议:

HTTP 请求和应答的头部字段值得大家认真的学习,因为基于 Web 的编程中我们将会大量使用。如:将用户认证的令牌信息放到头部,或者把 cookie 放到头部等。

问题

刷新一次 qige.io 网站的页面同时进行抓包,你会发现不少的 304 代码的应答,这是所请求的对象没有更改的意思,让浏览器使用本地缓存的内容即可。那么服务器为什么会回答 304 应答而不是常见的 200 应答?

HTTP 状态代码 304 表示所请求的资源未被修改,可以使用缓存的内容。浏览器会检查请求中的附带的头信息,如果这些头信息与缓存的内容相匹配,服务器就会返回 304 应答。这个状态代码的目的是减少网络流量,让浏览器使用本地缓存的内容而不是重新下载资源。

如果服务器返回了 200 应答,则意味着资源已被修改,浏览器必须重新下载资源。

当浏览器向服务器发送请求时,会附带一些头信息,其中包含了浏览器当前所使用的缓存的信息。服务器会使用这些头信息来判断浏览器当前缓存的内容是否已过期。如果缓存的内容过期了,服务器就会返回 200 应答,同时附带最新的资源内容。如果缓存的内容没有过期,服务器就会返回 304 应答,告诉浏览器使用本地缓存的内容。文章来源地址https://www.toymoban.com/news/detail-758173.html

到了这里,关于Wireshark实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 计算机网络实验(二):Wireshark网络协议分析

    HTTP协议分析   1.超文本传输协议(Hypertext Transfer Protocol, HTTP)是万维网(World Wide Web)的传输机制,允许浏览器通过连接Web服务器浏览网页。目前在大多数组织中,HTTP流量在网络中所占的比率是最高的。每一次使用Google搜索、连接Twitter、发一条微博,或者在ESPN上查看肯塔基

    2024年01月15日
    浏览(51)
  • 计算机网络 wireshark TCP抓包实验

    1. 你的客户端电脑传送文件到 192.168.1.70 的 IP 地址和端口是什么?从192.168.1.70 接收文件的 IP 地址和端口是什么? 可以看出 传送文件的地址是192.168.8.90 端口是61588 接受文件的地址是192.168.1.70 端口是80 2. 用来初始化客户端电脑和 192.168.1.70 的 TCP 连接的 TCP SYN 报文段的序号

    2024年02月07日
    浏览(45)
  • 【计算机网络实验/wireshark】tcp建立和释放

    wireshark开始捕获后,浏览器打开xg.swjtu.edu.cn,网页传输完成后,关闭浏览器,然后停止报文捕获。 若捕获不到dns报文,先运行ipconfig/flushdns命令清空dns缓存 设置了筛选条件:dns 查询报文目的端口:53,目标ip地址:202.115.64.33  找到DNS相关部分,可以看到事务id,以及queries(问

    2024年01月17日
    浏览(43)
  • Wireshark TCP实验—Wireshark Lab: TCP v7.0(计算机网络自顶向下第七版)

    What is the IP address and TCP port number used by the client computer (source) that is transferring the file to gaia.cs.umass.edu? 根据数据包中的 tcp-ethereal-trace-1 ,其源 IP 地址为 192.168.1.102 192.168.1.102 192.168.1.102 ,端口号为 1162 1162 1162 。 What is the IP address of gaia.cs.umass.edu? On what port number is it sending and re

    2023年04月09日
    浏览(45)
  • Wireshark HTTP实验—Wireshark Lab: HTTP v7.0(计算机网络自顶向下第七版)

    Is your browser running HTTP version 1.0 or 1.1? What version of HTTP is the server running? 浏览器与服务器的版本均为 H T T P / 1.1 HTTP/1.1 H TTP /1.1 。 What languages (if any) does your browser indicate that it can accept to the server? 能接受简体中文以及英文。 What is the IP address of your computer? Of the gaia.cs.umass.edu serv

    2024年02月08日
    浏览(39)
  • Wireshark IP实验—Wireshark Lab: IP v7.0(计算机网络自顶向下第七版)

    修改发送数据包的大小 跟踪的地址为 www.ustc.edu.cn text{www.ustc.edu.cn} www.ustc.edu.cn 由于自己抓的包比较凌乱,分析起来比较复杂,所以使用作者的数据包进行分析 Select the first ICMP Echo Request message sent by your computer, and expand the Internet Protocol part of the packet in the packet details window.Wh

    2024年02月04日
    浏览(37)
  • 计算机网络自顶向下WireShark实验:TCP

    计算机网络 WireShark 实验记录可供参考 1:What is the IP address and TCP port number used by the client computer (source) that is transferring the file to gaia.cs.umass.edu? To answer this question, it’s probably easiest to select an HTTP message and explore the details of the TCP packet used to carry this HTTP message, using the “details of

    2023年04月15日
    浏览(62)
  • HNU-计算机网络-实验1-应用协议与数据包分析实验(Wireshark)

    计科210X 甘晴void 202108010XXX 通过本实验,熟练掌握Wireshark的操作和使用,学习对HTTP协议进行分析。 2.1 HTTP 协议简介 HTTP 是超文本传输协议 (Hyper Text Transfer Protocol)的缩写,用于WWW 服务。 (1)HTTP 的工作原理 HTTP 是一个面向事务的客户服务器协议。尽管HTTP 使用TCP 作为底层

    2024年02月06日
    浏览(49)
  • 计算机网络-应用协议与数据包分析实验(使用Wireshark)

            通过本实验,熟练掌握Wireshark的操作和使用,学习对HTTP协议进行分析。         学习http协议,使用Wireshark截获http报文,对http请求报文和响应报文进行分析。 1.截获报文 打开Wireshark开始截获报文,从浏览器访问:http://kczx.hnu.edu.cn/G2S/Template/View.aspx?courseId=124

    2024年02月02日
    浏览(51)
  • 《计算机网络-自顶向下》wireShark实验-第二章:http

    我们开始探索HTTP,方法是 下载一个非常简单的HTML文件 。非常短,并且 不包含嵌入的对象 。执行以下操作: 启动您的浏览器。 启动Wireshark数据包嗅探器,如Wireshark实验-入门所述(还没开始数据包捕获)。 在display-filter-specification窗口中输入“http”(只是字母,不含引号标

    2024年02月19日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包