概述:
在平時的運維過程中,我們經常會遇到一些數據傳輸的問題,在我們平時遇到的數據傳輸問題中定位難度從難到易基本為:數據傳輸慢不符合預期、數據傳輸過程有丟包、數據傳輸被終止或網絡斷開連接。
如果要對數據流分析抓包是最直接的辦法,它可以幫助你更快的定位問題。最常用的抓包工具:wireshark(windows系統)、tcpdump(linux系統) (工具使用略)
接下來分享下我總結的幾個常見數傳異常報文:
*TCP Dup Ack(TCP Dup Ack 22#1此報文為22號報文的重發報文)
TCP報文中的Ack字段是對預期達到的下一個報文的序列號,而看到Dup Ack則說明由於某些原因Dup Ack發起方沒有收到預期序列號的報文,從而發送Dup Ack再次請求預期數據報文,直到收到預期報文,才會停止發送Dup Ack報文。
遇到此類報文很可能是因為兩台終端之間設備有丟包,可能是防火牆或者安全設備將數據包丟棄造成,建議在兩台終端之間的其他網絡設備進行抓包對比,以確定異常位置。
*TCP Retransmission
TCP retransmission報文代表重傳,重傳是指具有相同TCP序列號的報文至少兩次或多次經過,重傳報文是一種很常見的影響數據傳輸速率的異常報文。
原因分析:
1、兩台終端之間的其他網絡節點發生功能紊亂,存在丟包,造成對端未收到相應序列號的報文或本端未收到對端的回復報文。(建議檢查防火牆,網流分析、信安系統、Ddos等安全設備)
2、對端未正常發送確認報文,對端功能紊亂(多為安全軟件或網卡校驗功能造成)
3、本端收到確認報文,但沒有正常處理(建議檢查安全軟件,網卡設置等)
*TCP Out-Of-Order
TCP Out-Of-Order是一種TCP報文亂序,報文亂序是指,該報文沒有攜帶續期的序列號,即在同一個TCP連接上,相同源地址發出的后一個TCP報文序列號不等於前一個報文的序列號加上前一個報文的報文長度()Out-Of-Order的亂序主要指實際收到的報文序列號小於預期報文序列號。此報文會與Dup Ack報文匹配出現,因為接收端沒有收到預期的序列號,就會再次發送ack報文請求預期序列號報文。
可能原因:中間網絡節點之間發生功能紊亂,轉發或者發送了異常報文;對端發送了亂序報文。
*TCP Previous Segment Lost
TCP Previous Segment Lost也是一種TCP報文亂序。此亂序報文主要指實際收到的報文序列號大於預期序列號,或者說實際上在收到這個報文之前還應該收到一個或多個報文,但沒有收到。
可能原因:基本同上
*TCP Winodws Update
TCP Windows Update 表明更改滑動窗口大小,可能變大也可能變小,跟TCP連接上層應用對接收到的報文數據處理速度有關,此報文並不代表一定有異常。
*TCP Zero Windows
TCP Zero Windows 表明滑動窗口變成0。
發生場景
1、TCP連接復位或者斷開時,發送ACK消息,知名TCP窗口為0,此種情況無需多關注
2、輸出傳輸過程中出現Zero Windows,TCP連接創建時接收端會通知發送端可用的TCP接收窗口,隨着發送端不斷往接收端發送數據報文,如果接收端不能及時從TCP接收緩沖中提取報文進行處理,name接收緩沖的積累報文就會越來越多,TCP可用的滑動窗口大小也會越來越小,直到滑動接收窗口變為0。
Zero Winodws消息通常會在接收端TCP接收緩沖滿時發出,告訴發送端“數據已滿等等”,發送端收到此類通知后,會暫時停止向該接收端發送數據。對於經常出現Zero Windows的TCP連接,部分防火牆的規則會發送RST消息斷開這些慢連接。
原因:通常是接收端應用處理不及時。請檢查應用程序
*TCP Windows Full
TCP Windows Full於Zero Windows有一定的聯系。數傳過程中者兩個報文常常會一起出現。區別在於TCP Windows Full出現在發送端-》接收端的報文里,TCP Zero Windows出現在接收端->發送端的報文上。
原因:同上