Networking
HTTP請求中的奇怪數據
我有一個 HTTP 伺服器,它為來自許多客戶端的許多短時間連接提供服務,伺服器記錄了一些無效的 HTTP 請求,所以我決定擷取網路流量。這就是我得到的:
!
$$ image $$$$ 1 $$ 由於 HTTP keep-alive,流看起來有 3 個請求,第一個(結束於
APN: m-wap.0001
)是可以的,但第二個和第三個不是。我不認為使用者發送這樣的請求,我認為這是一個網路問題(所有無效請求看起來都來自 3G 網路使用者,在 NAT 網路後面)。我們在早期使用tcp_tw_reuse
和tcp_tw_recycle
,但我現在將它們關閉以避免可能與 NAT 網路有關的問題。但是還是有一些無效的請求,你有什麼建議嗎?更新:最後我找到了答案,網路提供商通過添加最後一個標頭來更改請求,他們需要更新 SEQ/ACK 編號,但在重新傳輸的情況下他們似乎沒有正確執行。
我在問題更新中提供了答案。
您是否在數據包擷取中遺漏了此 TCP 對話的一部分?
客戶端正在發送確認並且
ACK
值在增加,這意味著數據已經從另一端接收到,但是在你的擷取中沒有這樣的數據。如果遠端端發送了一個
FIN
但在其發送緩衝區中仍有一些數據,或者已經發送的數據然後延遲並無序到達,這些可能解釋了為什麼客戶端在最後一幀重置。