天天看點

《Wireshark網絡分析就這麼簡單》—Excel檔案的儲存過程

本節書摘來自異步社群《wireshark網絡分析就這麼簡單》一書中的excel檔案的儲存過程,作者林沛滿,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

*excel檔案的儲存過程

wireshark網絡分析就這麼簡單

當我們在notepad等文本編輯器上單擊file-->save的時候,底層的操作非常簡單—編輯器上的内容被直接寫入檔案了(見圖1)。假如這個檔案是被儲存到了網絡盤上,我們就可以從wireshark抓包上看到這個過程(見圖2)。

《Wireshark網絡分析就這麼簡單》—Excel檔案的儲存過程

包号58:

用戶端:“我要寫6個位元組到/temp/wireshark.txt中”。

包号59:

伺服器:“寫好了。”

相比之下,微軟office儲存檔案的過程就沒有這麼簡單了,是以微軟的老使用者都或多或少經曆過儲存檔案時發生的問題。比如圖3中的excel提示資訊就很常見,它說明該檔案被占用,暫時儲存不了。這樣的問題在notepad上是不會發生的。

《Wireshark網絡分析就這麼簡單》—Excel檔案的儲存過程

那麼,excel究竟是如何儲存檔案的呢?雖然我的手頭沒有微軟的文檔,但隻要把檔案儲存到網絡盤上,就可以借助wireshark看到整個過程了。我在實驗室中編輯了excel檔案“wireshark.xlsx”,然後在儲存時抓了個包,我們一起來分析其中比較關鍵的幾個步驟(見圖4):

《Wireshark網絡分析就這麼簡單》—Excel檔案的儲存過程

這幾個包可以解析為下述過程。

24号包:

用戶端:“/temp目錄中存在一個叫dcd652b.tmp的檔案嗎?”

25号包:

伺服器:“不存在。”

26号包:

用戶端:“那我要建立一個叫dcd652b.tmp的檔案。”

27号包:

伺服器:“建好了。”

38号包:

用戶端:“把excel裡的内容寫到dcd652b.tmp裡。”

42号包:

從以上過程可見,excel并沒有直接把檔案内容存到wireshark.xlsx上,而是存到一個叫dcd652b.tmp的臨時檔案上了。接下來再看(見圖5)。

《Wireshark網絡分析就這麼簡單》—Excel檔案的儲存過程

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

《Wireshark網絡分析就這麼簡單》—Excel檔案的儲存過程

微軟把儲存過程設計得如此複雜,自然是有很多好處的。不過複雜的設計往往伴随着更多出問題的機率,因為其中一步出錯就意味着儲存失敗。比如上文提到的報錯資訊“…is currently in use. try again later”,大多數時候的确是檔案被占用才觸發的,但也有時候是excel bug或者防毒軟體導緻的。無論出于何種原因,我們隻有了解了儲存時發生的細節,才可能探究到真相。

wireshark正是獲得這些細節的通用法寶,任何經過網絡所完成的操作,我們都可以從wireshark中看到。有了這樣的利器,還有多少問題能難住你?

本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。