我目前正在調查朋友區域網路的網路問題(再次)。網路連線速度非常慢且不可靠,有時服務根本無法運作。
我已經使用 Wireshark 監控流量一段時間了。我終於想出了一個可重現的問題,一個不起作用的git pull
問題。 ssh
Wireshark 日誌如下所示git pull
:
TCP 重傳總是在金鑰交換啟動時開始。伺服器沒有從我的機器接收資料包,或者我的機器沒有收到它的答案。我有一種感覺,這個原因也是區域網路所有其他網路問題的原因。
我想到的一件事是,1514
這裡所有壞資料包的資料包長度為 ,同時設定了不分段位,但 LAN 路由器的 MTU 配置為1492
。我無法將路由器設定為大於 的 MTU 1500
。封包是否會太大而被困在路由器上?
此外,大多數安全連線(https、ssh)似乎都會受到影響,但這些連線也可能始終需要更大的資料包大小。
你看,我在網路方面沒有太多經驗,所以我希望你們中一些有更多經驗的人能夠對此有更多的理解。
編輯: 剛才git pull
又恢復正常了。 MTU 配置不可能是問題的原因...
答案1
帶有“不分段”的大數據包是正常的。這就是作業系統執行 MTU 發現的方式 - 它不會讓網路悄悄地對資料包進行分段,而是期望返回 ICMP「需要分段」錯誤(這將具有正確的 MTU)。
如果您看到大資料包重新傳輸,則表示中間的某個路由器配置錯誤,要么阻止 ICMP 錯誤資料包,要么在需要時不發送它們。
答案2
我認為發生了重複的確認僅有的當接收方發現序號中有間隙時,這表示資料包在發送過程中被丟棄;所以問題是從192.168.0.8到遠端伺服器的方向開始的。儘管進行了多次重傳,但沒有收到任何確認(甚至沒有重複的確認),這一事實可能意味著某些東西完全被搞砸了。 (這可能意味著遠端無法發送,但這與先前的重複 ack 不一致,也與之後的 fin-ack 不一致。這意味著存在 2 個問題,而不是 1 個。)
以下是一些想法:
- 如果連線是透過糟糕的公共 WiFi 或 3G 進行的,那麼您可能會出現短暫的 100% 丟包情況。同時使用其他服務進行檢查,看看它是否也受到中斷的影響。
- 有協定感知防火牆,在決定丟棄特定連線上的資料包之前,它們可能需要一段時間才能弄清楚您在做什麼。您的朋友是否正在執行可以關閉的奇異防火牆? ISP 有一些使用規則嗎?
- 嘗試更新驅動程式或從 Linux Live CD 啟動,看看是否會發生相同的情況。嘗試變更連線的其他方面,使用其他服務,以縮小問題範圍。