Wireshark 实验
本博客是主要是用来记录学习内容和收获,如有错误敬请斧正! 参考博客:琪哥教学网等博客
数据链路层
实作一熟悉 Ethernet 帧结构
使用 Wireshark 任意进行抓包,熟悉 Ethernet 帧的结构,如:目的 MAC、源 MAC、类型、字段等。
-
ping 百度 在命令行里ping www.baidu.com -
wireshark 抓包,过滤(只看ping百度) -
查看Ethernet 目的Mac:(进行一些网络活动即接入Internet)下一跳物理地址(网关的Mac地址)即00:74:9c:9f:40:13 源Mac:本机物理地址即80:2b:f9:8d:2f:ab 类型:ipv4(0800) 字段:ip包其中包中是ICMP
实作二 了解子网内/外通信时的 MAC 地址
1.ping 你旁边的计算机(同一子网),同时用 Wireshark 抓这些包(可使用 icmp 关键字进行过滤以利于分析),记录一下发出帧的目的 MAC 地址以及返回帧的源 MAC 地址是多少?这个 MAC 地址是谁的?
2.然后 ping qige.io (或者本子网外的主机都可以),同时用 Wireshark 抓这些包(可 icmp 过滤),记录一下发出帧的目的 MAC 地址以及返回帧的源 MAC 地址是多少?这个 MAC 地址是谁的?
3.再次 ping www.cqjtu.edu.cn (或者本子网外的主机都可以),同时用 Wireshark 抓这些包(可 icmp 过滤),记录一下发出帧的目的 MAC 地址以及返回帧的源 MAC 地址又是多少?这个 MAC 地址又是谁的?
实作三 掌握 ARP 解析过程
-
为防止干扰,先使用 arp -d * 命令清空 arp 缓存 权限不够 管理员权限 -
ping 你旁边的计算机(同一子网),同时用 Wireshark 抓这些包(可 arp 过滤),查看 ARP 请求的格式以及请求的内容,注意观察该请求的目的 MAC 地址是什么。再查看一下该请求的回应,注意观察该回应的源 MAC 和目的 MAC 地址是什么。 -
再次使用 arp -d * 命令清空 arp 缓存 -
然后 ping qige.io (或者本子网外的主机都可以),同时用 Wireshark 抓这些包(可 arp 过滤)。查看这次 ARP 请求的是什么,注意观察该请求是谁在回应。 arp发送广播帧的请求 Who has 10.160.255.254? Tell 10.160.89.59 回复是本机所在子网的的网关
问题&&解答
- 你会发现 Wireshark 展现给我们的帧中没有校验字段,请了解一下原因。
答: Wireshark 抓包前,在物理层网卡已经去掉了一些之前几层加的东西,比如前导同步码,FCS等等,之后利用校验码CRC校验,正确时才会进行下一步操作,因此,抓包软件抓到的是去掉前导同步码、FCS之外的数据,没有校验字段。 - 通过实作二的实验,你会发现:
访问本子网的计算机时,目的 MAC 就是该主机的 访问非本子网的计算机时,目的 MAC 是网关的 请问原因是什么? 答: 如果访问本子网的计算机不需要进入通信子网(即不需要连入wan),在同一子网中不需要经过网关可以直接跳到目的主机,所以帧中的Mac地址是就是目的主机的Mac地址。 如果访问非本子网的计算机,需要通过网关出本子网,其中大概率要通过通信子网,找到所访问的主机所在的子网,故下一跳的Mac地址是网关的Mac地址。 - 通过以上的实验,你应该会发现,
ARP 请求都是使用广播方式发送的 如果访问的是本子网的 IP,那么 ARP 解析将直接得到该 IP 对应的 MAC;如果访问的非本子网的 IP, 那么 ARP 解析将得到网关的 MAC。 请问为什么? 答: 当访问的是本子网的ip时,网络的活动范围是本子网(lan),不会穿过通信子网,可以通过arp广播直接在子网内部得到对应的ip的Mac地址。 当访问的是非同一子网的ip时,网络的活动的范围就是广域网(wan),大概率会穿过通信子网,需要通过网关来传播出去,通过是通过路由器传播。
网络层
实作一 熟悉 IP 包结构
使用 Wireshark 任意进行抓包(可用 ip 过滤),熟悉 IP 包的结构,如:版本、头部长度、总长度、TTL、协议类型等字段。
-
ping 百度 -
wireshark抓包分析 重要分析:
实作二 IP 包的分段与重组
根据规定,一个 IP 包最大可以有 64K 字节。但由于 Ethernet 帧的限制,当 IP 包的数据超过 1500 字节时就会被发送方的数据链路层分段,然后在接收方的网络层重组。 缺省的,ping 命令只会向对方发送 32 个字节的数据。我们可以使用 ping 202.202.240.16 -l 2000 命令指定要发送的数据长度。此时使用 Wireshark 抓包(用 ip.addr == 202.202.240.16 进行过滤),了解 IP 包如何进行分段,如:分段标志、偏移量以及每个包的大小等
1.ping 202.202.240.16 -l 2000 2. wireshark进行抓包
实作三 考察 TTL 事件
在 IP 包头中有一个 TTL 字段用来限定该包可以在 Internet上传输多少跳(hops),一般该值设置为 64、128等。 在验证性实验部分我们使用了 tracert 命令进行路由追踪。其原理是主动设置 IP 包的 TTL 值,从 1 开始逐渐增加,直至到达最终目的主机。 请使用 tracert www.baidu.com 命令进行追踪,此时使用 Wireshark 抓包(用 icmp 过滤),分析每个发送包的 TTL 是如何进行改变的,从而理解路由追踪原理。
-
tracert 百度 -
wireshark 抓包分析 通过抓包分析可知: 通过抓包知:TTL由1开始,通过一个路由,TTL递增1
问题&&解答
- 实作一中你会发现,为提高效率,我们应该让 IP 的头部尽可能的精简。但在如此珍贵的 IP 头部你会发现既有头部长度字段,也有总长度字段。请问为什么?
答: 在传输时便于识别ip总长度,便于分段,当长度超过1500B时,会进一步分段。 - 实作二中你会发现,分段与重组是一个耗费资源的操作,特别是当分段由传送路径上的节点即路由器来完成的时候,所以 IPv6 已经不允许分段了。那么 IPv6 中,如果路由器遇到了一个大数据包该怎么办?
答: 发给可以处理的路由或者直接丢弃并返回给发送方一个ip包太大的消息 - 在 IPv4 中,TTL 虽然定义为生命期即 Time To Live,但现实中我们都以跳数/节点数进行设置。如果你收到一个包,其 TTL 的值为 50,那么可以推断这个包从源点到你之间有多少跳?
答: TTL为50,其最接近的二进制数为64,故可推断有14跳。
传输层
实作一 熟悉 TCP 和 UDP 段结构
实作二分析 TCP 建立和释放连接
问题&&解答
应用层
实作一 了解 DNS 解析
实作二 了解 HTTP 的请求和应答
问题&&解答
总结
更新中。。。。
|