一、验证性实验

1.ipconfig

(一) 使用 ipconfig/all 查看自己计算机的网络配置

输入 ipconfig/all 后会出现许多配置信息,结果如下图,应该根据自己电脑的网络接入方式去寻找对应的配置,比如我的电脑使用的是网线,就应该到以太网配置器处查看本机网络信息。

wireshark 如何检测网络风暴 wireshark排查网络风暴_网络


其中物理地址也就是MAC地址,IPv4地址也就是我们常说的ip地址,对应的子网掩码也就是Subnet Mask,网关就是Gateway,这些信息都清楚的在配置信息中显示,也可以推断出网络号为192.168.1.0,这是一个内部网络号。

由于做实验时只有一台电脑所以无法查看旁边电脑的网络配置,不过根据推测应该是处于同一子网中的,ip地址不同,子网掩码和默认网关应该是相同的。

问题一

问:你的计算机和旁边的计算机是否处于同一子网,为什么?

答:一般来说是的,因为很大可能连接的都是同一个路由器,而连接同一个路由器肯定属于同一子网当中。

2.ping

测试到重庆交通大学Web服务器的联通性

输入 ping www.cqjtu.edu.cn 命令来测试是否联通,结果如下图。

wireshark 如何检测网络风暴 wireshark排查网络风暴_网络_02


可以看出本机向其Web服务器总共发送了四次信息,也收到了四次回复,从回复信息可以看出该服务器的ip地址为218.70.34.236,回复信息数据大小均为32个字节,发送接收信息总耗时在7、8毫秒左右,而TTL(Time To Live)是指该条信息的生存时间,每经过一个路由器的传递它的值就会减少,若该值变为0此条数据就会被丢弃。

使用并了解ping /?命令

输入 ping /? 命令就会显示ping命令对应后面可以添加的参数,并且也会显示不同参数对应的功能。

wireshark 如何检测网络风暴 wireshark排查网络风暴_网络_03


以 -t 参数为例,添加该参数后可以一直ping对应的主机,直到我们手动停止,我这次ping的就是百度的地址,可以看出不止四次,如果不是我手动停止,它会一直ping下去。

wireshark 如何检测网络风暴 wireshark排查网络风暴_Wireshark_04

问题一

问:假设你不能 ping 通某计算机或 IP,但你确定该计算机和你之间的网络是连通的,那么可能的原因是什么?该如何处理能保证 ping 通?

答:有可能ping的ip地址并不是公网ip,而是内网ip,且并不与ping的计算机处于同一子网中。

问题二

问:假设在秘籍中进行的网络排查中,ping 百度的 IP 即 ping 14.215.177.39 没问题,但 ping 百度的域名即 ping www.baidu.com 不行,那么可能的原因是什么?如何进行验证和解决?

另外,经常有同学问到的:“能上 QQ,但不能上网” 跟这个问题的原因是相似的。

答:说明到百度的网络服务器的链路是通的,但是域名解析出了问题,可以ping一下其他的域名例如bilibili测试一下,解决方法:可以先刷新本机dns,输入命令ipconfig/flushdns,然后手动设置本机dns服务器地址,例如8.8.8.8和114.114.114.114等。

3.tracert

(一) 查看本机到www.baidu.com中间经过的节点,并查看相关节点信息

输入命令 tracert www.baidu.com 即可追踪到百度服务器的中间节点,显示结果如下图

wireshark 如何检测网络风暴 wireshark排查网络风暴_服务器_05


可以看出总共经过了10个节点,但是其中有四个节点都是请求超时,并且中间的节点我们可能不太熟悉,但是最开始的节点和最后的节点我们是认识的,第一个节点就是上方所提到的网关地址,而最后一个节点就是百度服务器的地址,通过网站 ip.cn 我们可以查看服务器的大致位于何处,这里以百度服务器为例,查询结果如下图。

wireshark 如何检测网络风暴 wireshark排查网络风暴_Wireshark_06

(二) 了解 ping.pe 网站探测从全球主要的ISP到qige.io的线路情况

打开 http://ping.pe/qige.io 即可查看对应线路情况,结果如下图。

wireshark 如何检测网络风暴 wireshark排查网络风暴_缓存_07

问题一

问:tracert 能告诉我们路径上的节点以及大致的延迟等信息,那么它背后的原理是什么?本问题可结合第二部分的 Wireshark 实验进行验证

答:tracert主要利用的就是发送IP包中的TTL字段,它会从TTL为1开始发送IP数据包到目的地,然后不断增加TTL的值直到某个数据包抵达目的地,TTL在发送过程中减为0时会向本机发送消息,从而就能直到路径中经过的节点了。

问题二

问:在以上两个实作中,如果你留意路径中的节点,你会发现无论是访问百度还是棋歌教学网,路径中的第一跳都是相同的,甚至你应该发现似乎前几个节点都是相同的,你的解释是什么?

答:因为一开始的路径都是相同的,比如先到默认网关处也就是第一个节点,然后到达小区集中路由器处转发出去。

问题三

问:在追踪过程中,你可能会看到路径中某些节点显示为 * 号,这是发生了什么?

答:可能是防火墙封掉了到某处后返回的ICMP消息,此时也会显示请求超时。

4.ARP

(一) 运行arp -a命令查看缓存内容

输入 arp -a 命令,会出现一张表,表的内容是ip-mac地址-类型,表中缓存了一些ip地址所对应的物理地址,以及该条信息的类型,如下图。

wireshark 如何检测网络风暴 wireshark排查网络风暴_wireshark 如何检测网络风暴_08


若一个ip一开始并没有出现在arp缓存中时,此时在ping一下这个ip,然后在查看该缓存表,会发现此时又会出现该ip以及对应的物理地址,这是因为与其通信前,会查看该arp表中是否缓存有其mac地址,如果没有,则会通过arp协议获取对应ip的mac地址,并将其缓存到arp表中。

(二) 使用并了解arp /?命令

使用 arp /? 命令会显示arp命令的各种选项以及对应的功能,如下图

wireshark 如何检测网络风暴 wireshark排查网络风暴_服务器_09


以 -d 为例,使用 arp -d 192.168.1.2 命令后,再次使用命令 arp -a查看缓存表,可以发现该ip已经没有出现在表中了。

wireshark 如何检测网络风暴 wireshark排查网络风暴_wireshark 如何检测网络风暴_10

(三) 将网关对应ip在缓存表中设置为静态

使用命令 arp -s 192.168.1.1 10-dc-4a-1d-f2-01,成功设置结果如下图。

wireshark 如何检测网络风暴 wireshark排查网络风暴_服务器_11

问题一

问:你可能会在实作三的操作中得到 “ARP 项添加失败: 请求的操作需要提升” 这样的信息,表示命令没能执行成功,你该如何解决?

答:首先输入命令 netsh i i show in找到连接的网络对应Idx,然后输入命令 netsh -c “i i” add neighbors [idx] [ip] [mac] 来修改指定ip的mac。

问题二

问:在实作三中,为何缓存中常常有网关的信息?

我们将网关或其它计算机的 arp 信息设置为静态有什么优缺点

答:因为我们发送数据都要通过网关发送出去,所以缓存中一般都会有网关的信息。设置为静态的优点是管理方便,可以有效防止局域网中的ARP欺骗,缺点则是仍然存在病毒攻击的危险,且如果绑定错误ARP信息的话,修改起来十分麻烦。

5.DHCP

(一) 使用ipconfig/[release|renew]命令并了解DHCP工作原理

使用 ipconfig/release 命令后,会自动重新显示网络情况,如下图

wireshark 如何检测网络风暴 wireshark排查网络风暴_服务器_12


从网络情况中发现以太网处基本网络配置都清空了,而使用 ipconfig/renew 命令后,又会重新发现有了网络配置,如下图所示。

wireshark 如何检测网络风暴 wireshark排查网络风暴_缓存_13

可以发现DHCP可以使计算机自动释放/获取网络配置。

问题一

问:如果你没能成功的释放,请思考有哪些可能的原因并着手进行解决?

答:有可能是网络连接出错,可以尝试修复网络。

问题二

问:在Windows系统下,如果由于某种原因计算机不能获取 DHCP 服务器的配置数据,那么Windows将会根据某种算法自动配置为 169.254.x.x 这样的 IP 地址。显然,这样的 IP 以及相关的配置信息是不能让我们真正接入 Internet 的,为什么?既然不能接入 Internet,那么Winodws系统采用这样的方案有什么意义?

答:这是一个微软保留地址,当无法从DHCP服务器获得ip时,就会临时分配一个此类地址,这样局域网内的电脑就可以通过该ip来通讯。

6.netstat

(一) 查看常用端口和服务文件

windows系统中该文件通常位于 C:\WINDOWS\system32\drivers\etc\services 文件中,通过notepad++打开该文件,如下图。

wireshark 如何检测网络风暴 wireshark排查网络风暴_服务器_14

(二) 使用netstat -an查看计算机网络连接状况

输入命令 netstat -an 会显示很长的一张活动连接表,其中一部分如下图

wireshark 如何检测网络风暴 wireshark排查网络风暴_wireshark 如何检测网络风暴_15

7.DNS

(一) 查看存在部分固定的/静态的 DNS 信息记录文件

windows系统中该文件通常位于 C:\WINDOWS\system32\drivers\etc\hosts,打开后如下图所示。

wireshark 如何检测网络风暴 wireshark排查网络风暴_服务器_16

(二) 使用命令查看和清除DNS缓存

输入命令 ipconfig/displaydns 可以查看解析过的dns记录,由于该记录十分的长,部分显示结果下图。

wireshark 如何检测网络风暴 wireshark排查网络风暴_Wireshark_17


而输入命令 ipconfig/flushdns 可以清除缓存。

(三) 使用DNS服务器查询域名信息

输入命令 nslookup qige.io 可以查看域名的相关信息,查询结果如下图。

wireshark 如何检测网络风暴 wireshark排查网络风暴_服务器_18

问题一

问:上面秘籍中我们提到了使用插件或自己修改 hosts 文件来屏蔽广告,思考一下这种方式为何能过滤广告?如果某些广告拦截失效,那么是什么原因?你应该怎样进行分析从而能够成功屏蔽它?

答:原理之一是阻止URL(链接)的请求,因为我们访问的网页中通常是有广告链接的,而我们修改hosts文件可以通过更改广告链接对应的ip地址,比如修改为本机地址,这样浏览器解析广告链接时优先hosts文件,可以使该链接失效。

8.cache

(一) 操作一

打开qige.io,然后打开开发者工具台,选择网络,再次刷新可以看到本次加载页面是时间为2.78秒。

wireshark 如何检测网络风暴 wireshark排查网络风暴_缓存_19

(二) 操作二

点击禁用缓存后,再次刷新页面会发现页面加载时间长了不少,此次网页加载用时35.97秒,将近慢了快十倍,可以看出网页cache的重要。

wireshark 如何检测网络风暴 wireshark排查网络风暴_服务器_20

二、Wireshark实验

1.数据链路层

(一) 熟悉 Ethernet 帧的结构

使用Wireshark软件开始抓包后,随机选择选择了一条记录,如下图所示。

wireshark 如何检测网络风暴 wireshark排查网络风暴_Wireshark_21


从抓取到的信息中可以看到Ethernet的大致结构,有源mac和目的mac以及类型。

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

答:传输的数据在物理网卡处已经通过校验了,去掉了校验字段,所以Wireshark抓取到的帧中没有校验字段。

(二) 了解子网内/外通信时的 MAC 地址

由于在家无法ping旁边的电脑,所以只能ping子网外的地址,这里以百度为例,输入命令 ping baidu.com后,通过Wireshark抓取后,结果如下图。

wireshark 如何检测网络风暴 wireshark排查网络风暴_缓存_22


在抓取结果中我们可以看到发出帧的目的mac就是我们的网关mac地址,接收帧的,网关mac地址可以先通过命令 ipconfig/all 查看默认网关ip,再使用命令arp -a中查看对应ip的mac地址。

(三) 掌握 ARP 解析过程

首先用命令 arp -d * 清空arp缓存后,然后使用Wireshark抓取arp包,抓取结果如下。

wireshark 如何检测网络风暴 wireshark排查网络风暴_wireshark 如何检测网络风暴_23


可以看出请求都是Broadcast也就是广播方式发出的。

2.网络层

(一) 熟悉 IP 包结构

使用Wireshark抓取ip包后,结果如下。

wireshark 如何检测网络风暴 wireshark排查网络风暴_Wireshark_24


随机选择一条打开后,能看见其详细信息,该信息从上到下可以依次看出版本为4,头部长度为20B,总长度为52B,TTL为128,协议为tcp协议等等。

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

答:因为如果没有头长度的话,无法分辨数据是从哪里开始的,而总长度又是必须有的,所以既有头部长度也有总长度。

(二) IP 包的分段与重组

一个ip的大小当超过1500字节时,就会进行分段,然后在接收方处进行重组,这里使用ping命令控制发送数据长度为2000字节时,利用Wireshark抓包,抓取结果如下。

wireshark 如何检测网络风暴 wireshark排查网络风暴_Wireshark_25


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

答:此时路由器会查看周围是否存在可以转发该大数据的路由器,若有则将其转发,否则直接丢弃。

(三) 考察 TTL 事件

使用tracert命令追踪 www.baidu.com,并用Wireshark抓取后,部分结果如下图。

wireshark 如何检测网络风暴 wireshark排查网络风暴_wireshark 如何检测网络风暴_26


从抓取的包来看,发送的包TTL的值从1开始是逐渐增加的,一直到到达目的才停止。

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

答:一般TTL的值都是设置为64或者128,距离50最近的是64,所以该包刚发送时TTL应该为64,现在为50说明源点到本机之间有15跳。

3.传输层

(一) 熟悉 TCP 和 UDP 段结构

用Wireshark分别抓取tcp包和udp包,抓取结果如下

wireshark 如何检测网络风暴 wireshark排查网络风暴_Wireshark_27

wireshark 如何检测网络风暴 wireshark排查网络风暴_Wireshark_28

分别点开了tcp包和udp包的段结构,其结构中的源端口、目的端口等信息都十分清晰。

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

答:端口用来标识不同的应用程序,可以进行程序之间的通信。

三、Cisco Packet Tracer 实验

1.直接连接两台 PC 构建 LAN

只需要点两台pc出来,然后将其连接,最后在进行基本网络配置即可相互ping通,其中pc0的ip为192.168.1.2,pc2的ip地址为192.168.1.3,如下图。

wireshark 如何检测网络风暴 wireshark排查网络风暴_wireshark 如何检测网络风暴_29


pc0 ping pc1

wireshark 如何检测网络风暴 wireshark排查网络风暴_服务器_30


pc1 ping pc0

wireshark 如何检测网络风暴 wireshark排查网络风暴_缓存_31

2.用交换机构建 LAN

按照要求构建好了以下拓补结构的局域网,并且按照要求四台pc都配置好了ip和掩码。

wireshark 如何检测网络风暴 wireshark排查网络风暴_Wireshark_32

1.问:PC0 能否 ping 通 PC1、PC2、PC3 ?

答:可以ping通pc1,但无法ping通pc2和pc3。

wireshark 如何检测网络风暴 wireshark排查网络风暴_Wireshark_33

2.问:PC3 能否 ping 通 PC0、PC1、PC2 ?为什么?

答:可以ping通pc2,但无法ping通pc0和pc1。因为pc0和pc1处于一个子网192.168.1.0,pc2和pc3处于另一个子网192.168.2.0,且只存在交换机,没有路由器,故不能ping通。

3.问:将 4 台 PC 的掩码都改为 255.255.0.0 ,它们相互能 ping 通吗?为什么?

答:此时可以,因为这下都处于同一个子网中。

4.问:使用二层交换机连接的网络需要配置网关吗?为什么?

答:不需要,因为二层交换机连接的网络仅在子网内部传输数据,只需将对应pc配置在同一网段即可。

3.交换机接口地址列表

ping过另外三台pc过后,左侧交换机已经有了完整的mac表。当所有的交换机都有了完整的mac表后,交换机的交换速度就是最快的。

wireshark 如何检测网络风暴 wireshark排查网络风暴_服务器_34

4.生成树协议(Spanning Tree Protocol)

初始时由于交换机之间的回路,如果存在广播帧会形成广播风暴,严重影响网络性能,但由于交换机存在生成树协议,后面会自动堵塞一些线路使得回路被破坏,此时不会再形成广播风暴,如下图所示,橘色的就是根据生成树协议堵塞的线路。

wireshark 如何检测网络风暴 wireshark排查网络风暴_Wireshark_35


该协议是动态的,如下图所示,如果手动形成新的回路,交换机又会自动做出调整。

wireshark 如何检测网络风暴 wireshark排查网络风暴_服务器_36