![Wireshark网络分析就这么简单](https://wfqqreader-1252317822.image.myqcloud.com/cover/216/729216/b_729216.jpg)
Excel文件的保存过程
当我们在Notepad等文本编辑器上单击File-->Save的时候,底层的操作非常简单—编辑器上的内容被直接写入文件了(见图1)。假如这个文件是被保存到了网络盘上,我们就可以从Wireshark抓包上看到这个过程(见图2)。
![](https://epubservercos.yuewen.com/01D976/3731471403551701/epubprivate/OEBPS/Images/figure_0027_0001.jpg?sign=1738951971-acClfVGIwo1oZYb7g4GaiLMisHSTvhbW-0-ec4e260d043c6bd2254daefbc9c42385)
图1
![](https://epubservercos.yuewen.com/01D976/3731471403551701/epubprivate/OEBPS/Images/figure_0027_0002.jpg?sign=1738951971-Xk2Qk9YRvdpuD5b6H8oI4ulckUrALXV3-0-03a040494efc8264ef1d1d049bb43e88)
图2
包号58:
客户端:“我要写6个字节到/Temp/wireshark.txt中”。
包号59:
服务器:“写好了。”
相比之下,微软Office 保存文件的过程就没有这么简单了,所以微软的老用户都或多或少经历过保存文件时发生的问题。比如图3中的Excel提示信息就很常见,它说明该文件被占用,暂时保存不了。这样的问题在Notepad上是不会发生的。
![](https://epubservercos.yuewen.com/01D976/3731471403551701/epubprivate/OEBPS/Images/figure_0027_0003.jpg?sign=1738951971-tbJ4lEfydQlv4k7RaIAO9mWXNUMjiaSd-0-183b5e01ed7d9c3892d13730c5b73f14)
图3
那么,Excel究竟是如何保存文件的呢?虽然我的手头没有微软的文档,但只要把文件保存到网络盘上,就可以借助 Wireshark 看到整个过程了。我在实验室中编辑了Excel 文件“wireshark.xlsx”,然后在保存时抓了个包,我们一起来分析其中比较关键的几个步骤(见图4):
![](https://epubservercos.yuewen.com/01D976/3731471403551701/epubprivate/OEBPS/Images/figure_0028_0001.jpg?sign=1738951971-LqMdyU1NjGjwnQrdBpFSPkzyIFB21voQ-0-8befa9bdcaf37bc181969f8798d32fb4)
图4
这几个包可以解析为下述过程。
24号包:
客户端:“/Temp目录中存在一个叫DCD652B.tmp的文件吗?”
25号包:
服务器:“不存在。”
26号包:
客户端:“那我要创建一个叫DCD652B.tmp的文件。”
27号包:
服务器:“建好了。”
38号包:
客户端:“把Excel里的内容写到DCD652B.tmp里。”
42号包:
服务器:“写好了。”
从以上过程可见,Excel并没有直接把文件内容存到wireshark.xlsx上,而是存到一个叫DCD652B.tmp的临时文件上了。接下来再看(见图5)。
![](https://epubservercos.yuewen.com/01D976/3731471403551701/epubprivate/OEBPS/Images/figure_0029_0001.jpg?sign=1738951971-eFhTlLt8A9zJCXO1iEDyfj5yUkL0Mj5h-0-f8312f9c1067d2b5d6bc229889f433f1)
图5
47号包:
客户端:“/Temp目录里存在一个叫6AF04530.tmp的文件吗?”
48号包:
服务器:“不存在。”
97号包:
客户端:“那好,把原来的wireshark.xlsx重命名成6AF04530.tmp。”
98号包:
服务器:“重命名完毕。”
103号包:
客户端:“再把一开始那个临时文件DCD652B.tmp重命名成wiresahrk.xlsx。”
104号包:
服务器:“重命名完毕。”
从以上过程可知,原来的 wireshark.xlsx 被重命名成一个临时文件,叫6AF04530.tmp。而之前创建的那个临时文件 DCD652B.tmp 又被重命名成wireshark.xlsx。经过以上步骤之后,我们拥有一个包含新内容的 wireshark.xlsx,还有一个临时文件6AF04530.tmp(也就是原来那个wireshark.xlsx)。接着往下看,就发现6AF04530.tmp被删除了(见图6)。
![](https://epubservercos.yuewen.com/01D976/3731471403551701/epubprivate/OEBPS/Images/figure_0030_0001.jpg?sign=1738951971-ARd6Qqm5CMfWI5zDgG4DPllmbt1r2AKV-0-d34fceb059e408599fd960b02f5b17f2)
图6
微软把保存过程设计得如此复杂,自然是有很多好处的。不过复杂的设计往往伴随着更多出问题的概率,因为其中一步出错就意味着保存失败。比如上文提到的报错信息“…is currently in use.Try again later”,大多数时候的确是文件被占用才触发的,但也有时候是Excel bug或者杀毒软件导致的。无论出于何种原因,我们只有理解了保存时发生的细节,才可能探究到真相。
Wireshark正是获得这些细节的通用法宝,任何经过网络所完成的操作,我们都可以从Wireshark中看到。有了这样的利器,还有多少问题能难住你?