■山東 孟慶杰 何鈺
HTTP 是屬于應用層面向對象的協議,由于其簡捷、快速的方式,適用于分布式超媒體信息系統。HTTP 協議的特點之一就是簡單快速,那么客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD 以及POST。
GET 主要指請求獲取Request-URI 所標識的資源。本文就結合一個手機APP 的使用中遇到的圖片打不開的情況,利用抓包軟件并結合GET 方法分析出該APP 的圖片服務器,然后通過路由指向將服務器地址進行優化,從而達到了解決問題的目的。
近日,有互聯網用戶報修某手機APP 軟件在使用過程中出現圖片打不開的情況。
根據這一信息,我們首先了解到手機APP 的軟件名稱,然后在手機上進行了測試,果然出現部分圖片加載慢,甚至加載不上的情況。
基于這種情況,我們首先對接入網絡進行了排查并沒有發現異常,這樣就排除了接入網絡的問題。
在完成接入網的排除后,我們嘗試使用本地互寬帶出口對該APP 的圖片進行查看,經過反復測試均沒有發現問題,但是使用用戶寬帶網絡(區別于本地寬帶出口)就會出現圖片加載異常的情況,由此可以分析出是出口資源的不同導致了手機APP 的體驗差異。
既然找到了故障原因就需要立刻解決,對于該類故障,通常需要使用抓包軟件準確定位該軟件的圖片服務器IP。
為了準確定位圖片服務器IP 地址,我們需要搭建抓包環境,即使用筆記本有線網卡連接用戶寬帶網絡,使用筆記本共享熱點,模擬用戶家中寬帶路由器,最后使用手機操作APP 軟件,通過在筆記本電腦上安裝抓包軟件進行同步抓包。
按照這個思路將手機連接到筆記本的WiFi 熱點上,在筆記本上開啟抓包軟件。在抓包軟件開啟選擇網卡時一定要選中“無線網絡連接2”即共享熱點虛擬出來的網卡,通過對該網卡的抓包,可以浮現手機操作APP 軟件時的網絡全過程。
開啟抓包軟件后,因為報文很多,不容易查找到對自己有用的信息,這樣的話需要使用規則進行篩選。剛才我們談到過圖片打不開,說明用戶到圖片服務器通信有問題,這時候就要找到圖片服務器的IP 地址。
由于是打不開圖片,可以確認是下載的過程出現問題,而下載的方法就是GET。即在抓包軟件的上使用“http.request.method=="GET"”命令可以進行過濾,過濾后的抓包情況如圖1所示。
根據圖1 中的抓取的報文,首先要做的是查詢一下該APP 軟件,可以找到這個網站的域名,然后將該域名和報文進行比對,則帶有該域名的報文的就是和它有關的。
然后再尋找報文中有image 開頭的域名,域名這一行對應的IP 地址即圖片服務器即120.192.**.168。通過抓包軟件的結果得知該圖片服務器的IP 地址,那么接下來就需要將該IP 地址進行路由優化,
具體的操作是在兩臺核心路由器上將該IP 地址指向流控設備,具體的配置命令是:


圖1 過濾規則后的抓包情況示意圖

圖2 跟蹤120.192.**.168 的路由
將該IP 地址指向流控設備后,接下來需要在流控上使用策略路由指向本地出口即可,具體是使用基于目的地址訪問120.192.**.168的數據報文指向本地出口,完成路由指向后可以使用trace 命令對路徑進行下跟蹤即:

通過最多30 個躍點跟蹤到120.192.**.168 的路由,如圖2 所示。
根 據trace 的 結果,可以清晰地看到訪問120.192.**.168 的路由準確使用的本地出口,然后我們再一次使用手機體驗圖片加載情況,經過反復測試,一切正常。
根據以上故障排查過程,我們從得知故障現象開始入手,即某手機APP 軟件圖片加載失敗,該故障不同于網頁打不開,因為網頁打不開可以使用nslookup 對域名進行解析,從而得到網站的IP 地址進而進行優化。而軟件不方便使用該命令。
本文通過對接入層網絡的排查,使用不同的互聯網出口進行比較,并使用抓包軟件對HTTP 協議的GET 請求過程進行抓包,抓取到了故障軟件的圖片服務器IP地址,然后通過路由優化的方式實現了故障的排除。
通過此次故障的排查我們學習到,作為網絡運維人員,熟練使用抓包軟件對故障的處理至關重要,這就要求我們要熟悉網絡協議的使用,多學習多積累進而才能維護好網絡。