Wireshark实验(计算机网络实验2)

2025-01-03 -

实验

数据链路层实现——熟悉的帧结构

使用任意一款抓包,熟悉帧结构,如目的MAC、源MAC、类型、字段等。

①打开并选择正确的网络接口,例如下图中我选择的是WLAN。

②打开cmd窗口,输入以下命令,同时使用它来抓包。

ping www.baidu.com

③抓包成功,但数据列表中可能有很多IP地址包,检查起来比较麻烦。您可以输入目标地址进行搜索。

ip.addr == 14.215.177.38 and icmp

ping后回复IP为14.215.177.38,所以查到的地址就是对应的地址。

具体情况如下:

从数据包详细信息中可以看到:

源Mac地址:34:e1:2d:xx:xx(具体信息未显示)

目标Mac地址:00:74:9c:xx:xx(具体信息未显示)

类型 IPv4()

场帧为:19

帧的字节长度为:(592位)

问题:您会发现向我们显示的框架中没有检查字段。请理解原因。

答:抓包之前,已经对物理层网卡进行了验证。只有正确后才会进行下一步。当我们使用该方法抓包时,我们抓到的是经过验证的数据包,所以我们看到的帧是没有校验字段的。

实现2:了解子网内外通信时的MAC地址

1. ping 旁边的计算机(同一子网),同时捕获这些数据包,并记录发出帧的目的 MAC 地址和返回帧的源 MAC 地址。

不难发现他只显示请求超时,可能是以下几种情况:

①对方已经关机,或者网络上根本不存在该地址;

② 对方与你不在同一网段,通过路由无法找到对方,但有时对方确实存在。当然,如果不存在,则会返回超时消息;

③对方确实存在,但设置了ICMP包过滤(如防火墙设置)。

2. .io(或本子网外的主机),捕获这些数据包(可以通过icmp过滤),并记录发出帧的目的MAC地址和返回帧的源MAC地址。

① ping 棋歌教学网站,输入命令。

ping qige.io

②用于抓包并使用icmp过滤查看Mac地址。

Ping(或该子网之外的主机),同时捕获这些数据包,并记录传出帧的目的 MAC 地址和返回帧的源 MAC 地址。

在此插入图片描述

✎问题:通过以上实验,你会发现:

当访问该子网上的计算机时,目标MAC属于该主机。

访问该子网外的计算机时,目的MAC属于网关。

✎原因是什么?

答:ARP代理,访问非子网计算机时,是通过路由器进行转发的。 MAC地址是连接路由器的端口的地址,然后通过路由器发送到相应的计算机。实现三:掌握ARP解析流程

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

arp -d *

2. ping 旁边的计算机(同一子网),捕获这些数据包(可用arp过滤),检查ARP请求的格式和请求内容,并注意请求的目的MAC地址。再次检查请求的响应,注意响应的源MAC和目的MAC地址。

如果显示,则可以观察到 Mac 地址:

根据搜索信息,虽然我和同学在同一个子网,但是IP不是静态IP,ping会导致连接超时等情况。

3、再次使用arp -d *命令清除arp缓存。

4. 然后 ping Qige.io(或该子网之外的主机),并捕获这些数据包(可以使用 arp 过滤)。检查 ARP 请求是什么,并注意谁响应该请求。

ping qige.io

通过上面的实验,我们发现ARP请求是采用广播方式发送的。

✎问题:

如果访问的是该子网的IP,则ARP解析会直接获取该IP对应的MAC;如果访问的是本子网以外的IP,那么ARP解析就是获取网关的MAC。为什么?

答:ARP代理,访问非子网IP时,是通过路由器访问的。然后路由器发送该信息。目标IP收到请求后,通过路由器端口IP返回,这样ARP解析就会得到网关的MAC地址。

网络层实现——熟悉IP数据包结构

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

我们可以ping一下百度,然后用它来抓包,就可以观察到相关数据。这里我用.io来观察。

✎问题:为了提高效率,我们应该使IP头尽可能精简。但在如此珍贵的 IP 标头中,您会发现标头长度字段和总长度字段。请问为什么?

答:传输时方便识别IP总长度,节省时间。当长度超过1500B时,会返回到链路层进行分段,从而提高效率。

实现两个IP数据包的分割和重组

根据规定,IP数据包的最大大小为64K字节。然而,由于帧的限制,当IP数据包的数据超过1500字节时,它会被发送方的数据链路层分段,然后在接收方的网络层重新组装。

默认情况下,ping命令只向对方发送32字节的数据。我们可以使用 ping 202.202.240.16 -l 2000 命令来指定要发送的数据长度。这时,使用抓包(使用 ip.addr == 202.202.240.16 进行过滤)来了解 IP 数据包是如何分片的,例如分片标志、偏移量以及每个数据包的大小。

ping 202.202.240.16 -l 2000

✎ 问题

分段和重组是一个消耗资源的操作,尤其是当分段是由传输路径上的节点(即路由器)完成时,因此IPv6不再允许分段。那么在IPv6中,路由器遇到大数据包该怎么办呢?

答:当遇到大数据包时,会转发到能够支持该数据报的出站链路。

练习 3:检查 TTL 事件

IP 标头中有一个 TTL 字段,用于限制数据包可以传输的跳数。一般设置为64、128等。

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

使用命令进行跟踪。这时,利用抓包(利用icmp过滤)来分析每个发送的数据包的TTL如何变化,从而了解路由追踪的原理。

tracert www.baidu.com

捕获数据包并观察每个数据包的TTL,即生存时间。

✎ 问题

在IPv4中,虽然TTL被定义为生存时间,但实际上我们都是根据跳数/节点数来设置它的。如果您收到一个 TTL 值为 50 的数据包,您可以推断出从源到您有多少跳?

答:TTL为50,可以推断该数据包从源到我有50跳。

传输层实现——熟悉TCP和UDP段结构

1、使用任何数据包捕获(可用tcp过滤),并熟悉TCP报文段的结构,如:源端口、目标端口、序列号、确认号、各种标志等字段。

2. 使用任何数据包捕获(可用udp过滤)并熟悉UDP段的结构,例如源端口、目标端口、长度等。

✎ 问题

从上面可以看出,UDP的报头比TCP简单很多,但是都有源端口号和目的端口号。源端口号和目标端口号有何用途?

答:我们知道一个进程对应一个端口,端口是用来唯一标识进程的。在传输层,源端口标识发起通信的进程,目的端口标识接收通信的进程。收到的消息根据端口号发送到目的进程。

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

1.打开浏览器访问qige.io网站,使用抓包(可以使用tcp过滤然后使用TCP),不要立即停止。捕获,页面显示后等待一段时间捕获释放连接的数据包。

2. 请在你抓到的数据包中找出建立连接的三向握手数据包,并解释为什么用它们来建立连接,以及它们有什么特点。

SYN同步序列号,用于发起TCP连接

3. 请在你捕获的数据包中找出四次挥手释放连接的数据包,并解释它们为什么用来释放连接以及它们有什么特点。

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

分析:你可以看到我只挥了三次,那是因为第二次和第三次合并了。如果对方没有数据要发送给本端,那么对方也会向本端发送FIN,关闭对方到本端的连接。此时,ACK和FIN可以结合起来。

✎问题1

去掉TCP,即不跟踪一个TCP流,你可能会看到我们在访问qige.io时建立了多个连接。请想一下为什么会有多个连接?功能是什么?

答:有时抓包经过rtsp过滤后,会出现多个tcp连接。然后找到正确的连接并使用tcp功能。

✎问题2

我们上面提到需要四次挥手才能释放连接,有时您可能只捕获三次挥手。原因是什么?

答:因为第二次和第三次合并,如果对方没有数据发送给本端,也会向本端发送FIN,关闭对方到本端的连接。此时,ACK和FIN可以结合起来。情况。

应用层

应用层有很多协议。我们只分析 DNS 和 HTTP。

实施一:了解DNS解析

1、首先使用/命令清除缓存,然后使用qige.io命令解析,使用任意抓包(dns过滤可用)。

2、可以看到当前计算机使用UDP向默认的DNS服务器53端口发送查询请求,DNS服务器53端口返回结果。

3.您可以了解DNS查询和响应中相关字段的含义。

DNS是一个分布式域名服务系统。每个DNS服务器都存储了大量的机器名和IP地址映射,并且是动态更新的。许多网络客户端程序使用DNS协议向DNS服务器查询目标主机的IP地址。

16位标识字段用于标记一对DNS查询和响应,以区分DNS响应是哪条DNS查询。

16位标志字段用于协商具体的通信方式并反馈通信状态。

1.QR:查询/响应标记。 0 表示这是一条查询消息,1 表示这是一条响应消息。

2.、定义查询和响应的类型。 0代表标准查询,1代表反向查询(从IP地址获取主机域名),2代表请求服务器状态。

AA,授权响应标志,仅用于响应消息。 1表示域名服务器为授权服务器。

3.TC,截断标志,仅在DNS报文使用UDP服务时使用。由于 UDP 数据报有长度限制,太长的 DNS 消息将被截断。 1 表示 DNS 消息超过 512 字节并被截断。

4.RD,递归查询标志。 1表示执行递归查询,即如果目标DNS服务器无法解析某个主机名,则会继续递归查询其他DNS服务器,以此类推,直到获得结果并返回给客户端。 0表示进行迭代查询,即如果目标DNS服务器无法解析某个主机名,则将其所知的其他DNS服务器的IP地址返回给客户端,供客户端参考。

5.RA,允许递归标志。仅用于响应消息,1表示DNS服务器支持递归查询。

6.zero,这3位未使用,必须设置为0。

7.rcode,4位返回码,表示响应的状态。常见值为0(无错误)和3(域名不存在)。

✎ 问题

您可能会发现我们对同一站点发出多个 DNS 解析请求。想想原因?

答:对于部署在服务器上的应用程序,无需修改任何代码就可以实现不同机器上的应用程序访问。一个网站有很多台计算机,每台计算机都运行相同的服务器软件。当然,这些计算机的IP地址不同,但是它们的域名是相同的。访问该网站的人会获得一台计算机的 IP 地址,而另一位访问者会获得另一台计算机的 IP 地址。

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权本站发表,未经许可,不得转载。

扫一扫在手机阅读、分享本文