实验二、Wireshark 实验

实验二、Wireshark 实验

一、数据链路层

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

	1.1.通过cmder,ping qige.io:
	![
	](https://img-blog.csdnimg.cn/b58f5b8b443a45b784647570868a7def.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Zi_6ZOtNjU5,size_19,color_FFFFFF,t_70,g_se,x_16)
	1.2.使用ip.addr == 172.67.143.53 and icmp过滤出与qige.io相关并且是icmp协议的信息:

在这里插入图片描述
1.3.目的MAC、源MAC。类型:
在这里插入图片描述
1.4.字段:
在这里插入图片描述

2. 了解子网内/外通信时的 MAC 地址

2.1.ping qige.io:
![在这里插入图片描述](https://img-blog.csdnimg.cn/f1b3b3ba84304f289e05d6f08506dde4.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6Zi_6ZOtNjU5,size_19,color_FFFFFF,t_70,g_se,x_16)抓包:

在这里插入图片描述
目的mac:00:74:9c:9f:40:13
源mac:00:23:81:2d:9f:5a
目的mac地址是网关的
2.2.ping www.cqjtu.edu.cn:
在这里插入图片描述
抓包:
在这里插入图片描述
目的mac:00:74:9c:9f:40:13
源mac:00:23:81:2d:9f:5a
目的mac地址是网关的
2.3.通过以上实验可发现:
1.访问本子网的计算机时,目的MAC就是该主机的
2.访问非本子网的计算机时,目的 MAC是网关的
原因:因为网关是出入本子网和其他子网需要到达的地方,不出入子网就不需要经过网关,所以访问本子网的计算机时目的MAC是主机的,而访问本子网外的主机目的MAC就是网关的。

3.掌握 ARP 解析过程

3.1.为防止干扰,先使用arp -d *命令清空arp 缓存:
在这里插入图片描述
3.2.Ping qige.io(或者本子网外的主机都可以),同时用 Wireshark 抓这些包(可 arp 过滤)。查看这次 ARP 请求的是什么,注意观察该请求是谁在回应:在这里插入图片描述
通过以上的实验,发现了:
①ARP 请求都是使用广播方式发送的
②如果访问的是本子网的 IP,那么 ARP 解析将直接得到该 IP 对应的 MAC;如果访问的非本子网的 IP, 那么 ARP 解析将得到网关的 MAC。

因为当访问本子网的计算机时,数据包不用离开本子网,ARP解析也在子网进行,所以APR解析目的IP得到MAC地址;而访问子网外的IP时,是通过路由访问的,所有的信息都要通过路由端口,也就是网关,所以APR解析得到网关的MAC。

二、网络层

1.熟悉ip包结构

使用 Wireshark 任意进行抓包(可用 ip 过滤),熟悉 IP 包的结构,如:版本、头部长度、总长度、TTL、协议类型等字段。
Ping www.baidu.com,再使用Wireshark进行抓包:在这里插入图片描述
在这里插入图片描述
版本:IPV4 头部长度:20bytes 总长度:60 存活时间TTL:64 协议:ICMP

问题一

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

回答:头部长度可以使得接收端计算出报头在何处结束及从何处 开始读数据,总长度字段则是为了接收端读数据,接收数据。

2. ip包的分段与重组

根据规定,一个 IP 包最大可以有 64K 字节。但由于 Ethernet 帧的限制,当 IP 包的数据超过 1500 字节时就会被发送方的数据链路层分段,然后在接收方的网络层重组。缺省的,ping 命令只会向对方发送 32 个字节的数据。我们可以使用 ping 202.202.240.16 -l 2000 命令指定要发送的数据长度。此时使用 Wireshark 抓包(用 ip.addr == 202.202.240.16 进行过滤),了解 IP 包如何进行分段,如:分段标志、偏移量以及每个包的大小等。
在这里插入图片描述
分段标志: Flags
偏移量(Fragment Offset):0

问题二

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

回答:丢掉然后通知发送端重新传送。

3.考察TTL事件

在 IP 包头中有一个 TTL 字段用来限定该包可以在 Internet上传输多少跳(hops),一般该值设置为 64、128等。在验证性实验部分我们使用了tracert命令进行路由追踪。其原理是主动设置 IP 包的 TTL 值,从 1 开始逐渐增加,直至到达最终目的主机。请使用tracert www.baidu.com命令进行追踪,此时使用 Wireshark 抓包(用icmp过滤),分析每个发送包的 TTL 是如何进行改变的,从而理解路由追踪原理。
在这里插入图片描述
在这里插入图片描述

三、传输层

1.熟悉 TCP 和 UDP 段结构

1.1.用Wireshark 任意抓包(可用 tcp 过滤),熟悉 TCP 段的结构,如:源端口、目的端口、序列号、确认号、各种标志位等字段。
Ping qige.io后,用Wireshark 抓包,tcp过滤:在这里插入图片描述
源端口:53410 目的端口:443
序列号:1 确认号:1
各种标志位:0x011(FIN,ACK)
1.2.用 Wireshark 任意抓包(可用 udp 过滤),熟悉 UDP 段的结构,如:源端口、目的端口、长度等。
在这里插入图片描述
源端口:546 目的端口:547 长度:97

问题三

源和目的端口号用来干什么?

回答:传输层实现的是端到端的通信,需要源端口号与目的端口号实现 两边的确认。

2.分析TCP建立和释放连接

2.1.打开浏览器访问 qige.io 网站,用 Wireshark 抓包(可用 tcp 过滤后再使用加上 Follow TCP Stream),不要立即停止 Wireshark 捕获,待页面显示完毕后再多等一段时间使得能够捕获释放连接的包。
在这里插入图片描述
2.2.在捕获的包中找到三次握手建立连接的包,并说明为何他们是用于建立连接的,有什么特征。

三次握手的标志位: 客户端发送数据, 序列号seq:标记数据段的顺序。
客户点请求建立连接,确认号ack:期待收到对方下一个报文段的第一个数据字节的序号。 服务端同意建立请求,回复确认。
确认ACK:占1位,仅当ACK=1时,确认号字段才有效。ACK=0时,确认号无效。 连接建立完成。 同步SYN:连接建立时用于同步序号。
终止FIN:用来释放一个连接。FIN=1表示:此报文段的发送方的数据已经发送完毕,并要求释放运输连接
第一次握手:syn=1,ack=0
第二次握手:syn=1,ack=1
第三次握手:syn=0,ack=1

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

四次挥手释放包的查找也可以用标志位进行查询,如下: FIN=1,其序列号为seq=u;
TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。
服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。
客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。
服务器发送完数据后,再次向客户端发送连接释放的确认。FIN=1,ack=u+1,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
客户端收到服务器的连接释放报文后,必须发出确认,ACK=1。 服务器只要收到了客户端发出的确认,释放连接。
建立状态:FIN=1,
seq=u 服务器确认:ACK=1,seq=u,ack=u+1
服务器询问释放连接:FIN=1, ACK=1,seq=w,ack=u+1
用户端回复:ACK=1,seq=u+1,ack=w+1

问题四

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

回答:访问qige.io的时候,不止一个端口与qige.io建立连接,而是许多端口同时与它建立连接。作用是可以同时进行加载数据,提高运行速度。

问题五

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

回答:第二次和第三次可以合并。

四、应用层

了解DNS解析

先使用ipconfig /flushdns 命令清除缓存,再使用 nslookup qige.io 命令进行解析,同时用 Wireshark 任意抓包(可用 dns 过滤)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到当前计算机使用 UDP,向默认的 DNS 服务器的 53 号端口发出了查询请求,而 DNS 服务器的 53 号端口返回了结果。

问题六

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

回答:服务器对于浏览器的第一次应答对于浏览器来说已经有了缓存,因此浏览器第二次发送请求的时候,服务器会回复浏览器上次请求的资源现在在缓存里,服务器根据浏览器传来的时间发现和当前请求资源的修改时间一致,应答304,表示不再重新传送。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值