亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

返回的UDP數據包缺少端口,無法到達

返回的UDP數據包缺少端口,無法到達

Go
藍山帝景 2023-07-26 13:33:57
帶有客戶端和服務器的 Golang 應用程序。服務器使用 net.ListenUDP - 客戶端也使用 net.ListenUDP,連接到服務器并使用 conn.WriteToUDP 和服務器地址發送數據包。服務器接收帶有 ReadFromUDP 的數據包并獲取返回地址。然后,它使用此返回地址將大量數據包發送回客戶端。當在本地計算機上運行客戶端和服務器時,這工作得很好。使用 Wireshark,我可以檢查 UDP 數據包并查看它們包含源端口和目標端口 - 在應用程序中,我可以看到它們到達,并且我的各種校驗和測試顯示數據是準確的。然后我將服務器移離現場到遠程計算機。應用程序停止工作。我可以成功地將第一條消息從客戶端發送到服務器 - 接收得很好。服務器將響應“發送回”客戶端 - 但客戶端永遠不會收到它們。使用 Wireshark,我可以看到數據包確實以正確的 IP 地址返回到本地計算機??磥砦业木W絡路由器已對傳出數據包執行了 NAT - 并已正確地將響應數據包重新尋址到內部 IP。但是沒有端口。所以我有 UDP 數據包到達正確的機器,但沒有端口 - 所以客戶端應用程序不會收到它們。應用程序在 ReadFromUDP 上超時。我不知道這是否相關,但在本地計算機上,Wireshark 將數據包標記為 BT-uTP Utorrent 數據包。當它們從遠程服務器進入時,這就是我在 Wireshark 中看到的 - 請注意缺少端口。有什么想法我可以解決這個問題。我不認為這是一個 UDP 打洞問題,因為雖然我是通過 NAT 建立連接,但它是與服務器而不是對等點建立連接。
查看完整描述

1 回答

?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

此數據包已分段,您可以在 Internet 協議版本 4 > 標志下看到這一點。

如果您查看您提供的圖片底部所示的框架,您應該會看到端口。

net.ListenUDP 似乎不支持套接字級別的碎片。

您有 PPPoe 連接嗎?您可能需要將發送的數據包大小減少 8 個字節,或者更改遠程端路由器外部接口上的 MTU。如果本地路由器位于 PPPoe 接口上,您可能還需要更改其 MTU。


查看完整回答
反對 回復 2023-07-26
  • 1 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號