《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中看到。有了这样的利器,还有多少问题能难住你?

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

相关文章
|
17天前
|
数据格式 Python
【Python】已解决:Excel无法打开文件test.xIsx“,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配。
【Python】已解决:Excel无法打开文件test.xIsx“,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配。
59 0
|
1月前
|
JSON 前端开发 JavaScript
在JavaScript中,异步编程是一种处理非阻塞操作(如网络请求、文件读写等)的重要技术
【6月更文挑战第12天】JavaScript中的异步编程通过Promise和async/await处理非阻塞操作。Promise管理异步操作的三种状态,防止回调地狱,支持链式调用和并行处理。async/await是ES8引入的语法糖,使异步代码更像同步代码,提高可读性。两者结合使用能更高效地处理复杂异步场景。
29 3
|
1月前
|
Java 数据库 数据安全/隐私保护
Java操作Excel文件导入导出【内含有 jxl.jar 】
Java操作Excel文件导入导出【内含有 jxl.jar 】
38 0
|
13天前
|
存储 对象存储 Python
`openpyxl`是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它不需要Microsoft Excel,也不需要.NET或COM组件。
`openpyxl`是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它不需要Microsoft Excel,也不需要.NET或COM组件。
|
29天前
|
存储 编解码 API
视觉智能开放平台产品使用合集之如何处理本地文件或网络文件链接
视觉智能开放平台是指提供一系列基于视觉识别技术的API和服务的平台,这些服务通常包括图像识别、人脸识别、物体检测、文字识别、场景理解等。企业或开发者可以通过调用这些API,快速将视觉智能功能集成到自己的应用或服务中,而无需从零开始研发相关算法和技术。以下是一些常见的视觉智能开放平台产品及其应用场景的概览。
|
15天前
|
前端开发 JavaScript PHP
技术心得:前端点击按钮,导入excel文件,上传到后台,excel接收和更新数据
技术心得:前端点击按钮,导入excel文件,上传到后台,excel接收和更新数据
17 0
|
1月前
|
API Python
Python库`openpyxl`是一个用于读取和写入Excel 2010 xlsx/xlsm/xltx/xltm文件的库。
【6月更文挑战第19天】`openpyxl`是Python处理xlsx文件的库,支持读写Excel 2010格式。使用`pip install openpyxl`安装。基本操作包括加载文件、读写单元格、操作行和列。例如,加载Excel后,可以读取单元格`A1`的值,或将“Hello, World!”写入`A1`。还可修改单元格内容,如加1后保存到新文件。更多功能,如样式和公式,见官方文档[1]。 [1]: <https://openpyxl.readthedocs.io/en/stable/>
46 1
网络请求和下载,ping baidu Ctrl + C停掉,wegt命令可以在命令行内下载网络文件
网络请求和下载,ping baidu Ctrl + C停掉,wegt命令可以在命令行内下载网络文件
|
1月前
|
XML Java 测试技术
《手把手教你》系列技巧篇(六十七)-java+ selenium自动化测试 - 读写excel文件 - 中篇(详细教程)
【6月更文挑战第8天】本文介绍了Java中操作Excel的工具,包括POI和JXL。POI支持处理Office 2003及以下的OLE2格式(.xls)和2007以上的OOXML格式(.xlsx)。而JXL只能处理2003版本的Excel文件。文章详细讲解了如何下载和使用JXL库,并给出了一个简单的Java代码示例,展示如何读取2003版Excel文件中的数据。在实际项目中,由于JXL对新版本Excel的支持限制,通常推荐使用POI。
49 5
|
1月前
|
Java 测试技术 Apache
《手把手教你》系列技巧篇(六十八)-java+ selenium自动化测试 - 读写excel文件 - 下篇(详细教程)
【6月更文挑战第9天】本文介绍了如何使用Java处理Excel文件中的不同数据类型,包括日期、数字、布尔值和标签(常规字符串)。文章提供了两个示例,分别使用JXL库和Apache POI库来读取Excel文件。
31 1