《Wireshark网络分析就这么简单》—Excel文件的保存过程

简介:

本节书摘来自异步社区《Wireshark网络分析就这么简单》一书中的Excel文件的保存过程,作者林沛满,更多章节内容可以访问云栖社区“异步社区”公众号查看。

*Excel文件的保存过程
Wireshark网络分析就这么简单
当我们在Notepad等文本编辑器上单击File-->Save的时候,底层的操作非常简单—编辑器上的内容被直接写入文件了(见图1)。假如这个文件是被保存到了网络盘上,我们就可以从Wireshark抓包上看到这个过程(见图2)。


e719995dcd145ac7ff52f8ad27457174b451166d

包号58:

客户端:“我要写6个字节到/Temp/wireshark.txt中”。

包号59:

服务器:“写好了。”

相比之下,微软Office保存文件的过程就没有这么简单了,所以微软的老用户都或多或少经历过保存文件时发生的问题。比如图3中的Excel提示信息就很常见,它说明该文件被占用,暂时保存不了。这样的问题在Notepad上是不会发生的。


f1ec680d3e590a12a1a51b6f0dcef1c184020c9f

那么,Excel究竟是如何保存文件的呢?虽然我的手头没有微软的文档,但只要把文件保存到网络盘上,就可以借助Wireshark看到整个过程了。我在实验室中编辑了Excel文件“wireshark.xlsx”,然后在保存时抓了个包,我们一起来分析其中比较关键的几个步骤(见图4):


e48d0af1a00bcf947fdeb4917ecf50649d3424e4

这几个包可以解析为下述过程。

24号包:

客户端:“/Temp目录中存在一个叫DCD652B.tmp的文件吗?”

25号包:

服务器:“不存在。”

26号包:

客户端:“那我要创建一个叫DCD652B.tmp的文件。”

27号包:

服务器:“建好了。”

38号包:

客户端:“把Excel里的内容写到DCD652B.tmp里。”

42号包:

服务器:“写好了。”

从以上过程可见,Excel并没有直接把文件内容存到wireshark.xlsx上,而是存到一个叫DCD652B.tmp的临时文件上了。接下来再看(见图5)。


b84269997df9a45643fabfd2942ed8da282c87af

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)。


983c85339c386eef12d191c8e0c1ab1944996b47

微软把保存过程设计得如此复杂,自然是有很多好处的。不过复杂的设计往往伴随着更多出问题的概率,因为其中一步出错就意味着保存失败。比如上文提到的报错信息“…is currently in use. Try again later”,大多数时候的确是文件被占用才触发的,但也有时候是Excel bug或者杀毒软件导致的。无论出于何种原因,我们只有理解了保存时发生的细节,才可能探究到真相。

Wireshark正是获得这些细节的通用法宝,任何经过网络所完成的操作,我们都可以从Wireshark中看到。有了这样的利器,还有多少问题能难住你?

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
1月前
|
监控 数据处理 索引
使用Python批量实现文件夹下所有Excel文件的第二张表合并
使用Python和pandas批量合并文件夹中所有Excel文件的第二张表,通过os库遍历文件,pandas的read_excel读取表,concat函数合并数据。主要步骤包括:1) 遍历获取Excel文件,2) 读取第二张表,3) 合并所有表格,最后将结果保存为新的Excel文件。注意文件路径、表格结构一致性及异常处理。可扩展为动态指定合并表、优化性能、日志记录等功能。适合数据处理初学者提升自动化处理技能。
22 1
|
1月前
|
安全 Java 数据库连接
jdbc解析excel文件,批量插入数据至库中
jdbc解析excel文件,批量插入数据至库中
21 0
|
1月前
|
存储 数据可视化 数据处理
Python中读取Excel文件的方法
【2月更文挑战第18天】
66 4
Python中读取Excel文件的方法
|
1月前
|
前端开发 UED
前端解析Excel文件
前端解析Excel文件
33 0
|
2月前
|
Go API
一文搞懂Go读写Excel文件
一文搞懂Go读写Excel文件
52 0
|
1月前
|
Shell Linux C语言
【Shell 命令集合 网络通讯 】Linux 查看系统中的UUCP日志文件 uulog命令 使用指南
【Shell 命令集合 网络通讯 】Linux 查看系统中的UUCP日志文件 uulog命令 使用指南
29 0
|
2月前
|
XML Java 数据格式
使用Freemarker模版导出xls文件使用excel打开提示文件损坏
使用Freemarker模版导出xls文件使用excel打开提示文件损坏
58 0
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
【办公自动化】使用Python批量处理Excel文件并转为csv文件
【办公自动化】使用Python批量处理Excel文件并转为csv文件
48 0
|
1月前
|
SQL 数据可视化 数据处理
使用SQL和Python处理Excel文件数据
使用SQL和Python处理Excel文件数据
54 0
|
5天前
|
数据库
开发指南009-从list导出excel文件
从数据库返回一般是对象的列表,平台底层提供了从list转为excel文件的方法