A. wireshark抓包,異常數據分析常見RST介紹
Wireshark(前稱Ethereal)是一個網路封包分析軟體,可分析網路狀態,丟包率等。
下面介紹常見的TCP層的常用FLAGS。
一般地,只是單個的一個SYN,它表示的只是建立連接。當出現SYN和ACK可能同時為1,我們認為客戶端與伺服器建立了一個連接。而當出現FIN包或RST包時,我們便認為客戶端與伺服器端斷開了連接;而RST一般是在FIN之後才會出現為1的情況,表示的是連接重置。
注意:理論上,Syn 應該初始值是個隨機數的,後面的要根據初始值增加 ,wireshark為了好區分從0開始的,可以自行設置顯示原始Syn
在TCP傳輸過程中,同一台高慧缺主機發出的數據段應該是連續的,即後一個包的Seq號等於前一個包的Seq + Len(三次握手和四次揮手是例
外)當後Seq>前Seq +Len,就知道中間缺失了一段數據。
[TCP Out-of-Order] 亂序
Wireshark在獲取包序號26時發現seq=18981,而包序號25的數據包seq = 20441,所以wireshark認為數據包順序錯了
當亂序或者丟包發生時,接收方會收到一些Seq號比期望值大的包。此時就會Ack就說我想獲取seq=28852的數據包而你給了我其他包。
當發送方收到3個或以上[TCP Dup ACK],就意識到之前發的包可能丟了,於是快速重傳它(這是RFC的規定)。
如果一個包真的丟了,又沒有後續包可以在接收方觸戚辯發[Dup Ack],就不會快速重傳,只能超時重傳。
1.埠未打開
伺服器程序埠未打開而客戶端來連接。這種情況是最為常見和好理解的一種了。去telnet一個未打開的TCP的埠可能會出現這種錯誤碧寬。
2. 請求超時
查看2次包的時間間隔
3. 服務端關閉的socket
4. 防護牆拒絕了請求
5. 移動鏈路
移動網路下,國內是有5分鍾後就回收信令,也就是IM產品,如果心跳>5分鍾後伺服器再給客戶端發消息,就會收到rst。也要查移動網路下IM 保持<5min 心跳。
6. 負載等設備
負載設備需要維護連接轉發策略,長時間無流量,連接也會被清除,而且很多都不告訴兩層機器,新的包過來時才通告rst。
Apple push 服務也有這個問題,而且是不可預期的偶發性連接被rst;rst 前第一個消息write 是成功的,而第二條寫才會告訴你連接被重置
7. 超過超時重傳次數、網路暫時不可達
B. 蘋果stream抓包網路連接異常
蘋果stream抓包網路連接異常原因如下。
1、stream設備使用時間過長。
2、有些APK抓包加了殼,需要先進行脫殼處理。
3、是網路連接錯誤導致的問題。