簡體   English   中英

UDP數據包丟失(LAN-Netcat),交換服務器客戶端數據包都可以

[英]UDP packets lost (LAN-Netcat) , switching server-client sides packets are OK

我試圖運行一個在LAN上使用UDP套接字的游戲,但看不到網絡中的另一台計算機,因此我嘗試了一些措施來查看可能引起此問題的原因。 正在運行的操作系統是:

PC1: Linux Ubuntu
PC2: Windows 10

問題在於,當PC2正在偵聽時,PC1可以發送和接收數據包:

$PC2> ncat -ul 8888
$PC1> ncat -u PC2 8888
OK

發送和接收正常,但是當客戶端/服務器切換時,數據包丟失。

$PC1> ncat -ul 8888
$PC2> ncat -u PC1 8888

附帶說明一下,在PC2上,當嘗試使用Pythons socket.sendto函數發送數據包時,返回值不是-1 ,它是數據包的大小。 同樣,在PC2上打開防火牆也無濟於事。

這是一個奇怪的問題,因為單向工作正常,但是切換客戶端/服務器會丟失數據包。

其中一台主機( PC1 )可能位於NAT之后 ,而另一台主機PC2 )在公共網絡中。 如果提供主機的ip地址,則應明確情況。 NAT的存在將解釋為什么切換客戶端和服務器中斷的原因。

當數據包從PC1發送到PC2時NAT將添加以下格式的IP轉換記錄: (PC1內部IP地址,端口1)-(PC1公共IP地址,端口2) ,並在需要時將內部地址轉換為公共地址,反之亦然。

PC1成為服務器時,無法通過NATPC2到達服務器。 除非您配置NAT的端口轉發或使用某些第三方NAT發現服務。

NAT端口轉發以下列方式工作。 如果指定了端口轉發規則(PC1公共IP地址,端口2)-(PC1內部IP地址,端口1),則發送到(PC1公共IP地址,端口2)的所有數據包都將轉發到(PC1內部IP地址,端口1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM