2016-01-07 73 views
1

從包捕獲文件(PCAP),觀察TCP握手TCP:SYN請求接收SYN響應代替SYN-ACK

客戶端在以下發送SYN請求到服務器, 服務器與SYN分組的代替SYN響應+ ACK, 客戶端使用亂序分組消息響應, 服務器終止與RST分組的TCP握手

這種情況是隨機發生的,並非總是如此。 TCP連接確實已建立,但有時連接建立失敗,出現上述觀察模式。

客戶託管在AWS,而服務器是CDN網絡

+3

我會向CDN網絡的運營商顯示跟蹤。 –

+0

您是否看到任何其他TCP或IP標誌設置? –

+0

對不起,我沒有看到任何其他的TCP標誌設置 – anonexpr

回答

0

如果插槽是TIME_WAIT,新SYN附加內核將檢查如果SYN的序列號是大於或小於爲此使用的套接字收到的最後一個SEQ。通常https://serverfault.com/questions/297134/server-not-sending-a-syn-ack-packet-in-response-to-a-syn-packet

如果SYN發送,另一個SYN被收到沒有ACK通常只是ACK過線(特別是在你的情況下)的損失:

您可以查看這個帖子/答案。無論何時從A(客戶端)到B(服務器)的路由很短,並且從服務器到客戶端的數據包路徑特別長,並且遍歷網絡可能無法保證在遠遠更遠的距離上可靠的數據包傳輸時,這種情況非常普遍。如果你在線路上丟失了ACK,你會傾向於從客戶端發現一條RST消息,並要求服務器重新啓動。

另一種可能性是某種請求。通常在客戶端將推送PSH,ACK信號與len:xx,其中x是請求長度的數字。服務器通常會迴應一個ACK,通知客戶它已收到請求並且服務器正在處理(這個ACK通常是空的),然後它會將PSH,ACK-len:xx數據包推送給客戶端,讓客戶端知道它已經接受了它的請求,並且這個數據包中會有信息。

使用wireshark監控此信息(非惡意)通常會幫助傳達您的情況,請務必學習(如果您還不知道)如何過濾數據包,否則您將有很多(通常)挖掘信息。

我也會嘗試發送一個數據包到有問題的服務器,您可以追蹤它是否被引導離開旁路。如果你的數據包通過循環跳轉到目的地,它很可能會在返回時做同樣的事情。 如果你希望你可以嘗試使用tcpdump(linux)或tracert(windows)。

希望這會有所幫助!

相關問題