網路遊戲如何透過網路傳送UDP封包?

網路遊戲如何透過網路傳送UDP封包?

使用 UDP 的線上多人遊戲如何取得透過網路在網路之間傳遞的資料包?據我了解,客戶端必須在其路由器上啟用連接埠轉送才能使封包到達其電腦。這是大型網路遊戲(魔獸世界、暗黑破壞神等)要求玩家做的事情嗎?

例如,我最近建立了一個處理 udp 流量的伺服器。它只是回顯寄件者發送的任何內容。我將其部署到互聯網上的伺服器。我只能在啟用連接埠轉送後才能將回顯傳回給發送者,但是如果同一本機網路上有兩個傳送者,則這將不起作用。

答案1

簡短回答:NAT 連線跟踪

要記住的一件事是 IPv4 網路上的絕大多數路由器都是 NAT 路由器。

大多數 NAT 實作都會進行智慧追蹤,當您從內部用戶端發送 UDP 到某個地方時,您將擁有目標連接埠和來源連接埠。如果流量傳入的連接埠相反,則該流量將被路由回您的用戶端,並在大多數防火牆中被允許。

具有追蹤功能的 NAT/防火牆會偵測到這些相關資料包並將其轉送回來。

server基於連接埠5000UDP註解的範例

  • 客戶端發送資料包server:5000,來源client:5001
  • 第一個 NAT 路由器將看到一個包含來源 IP、連接埠client:5001和目標的封包server:5000
  • 路由器將其發送出去,並且將有NATip:NATport
  • 伺服器收到此訊息並建立一個回應,NATip:NATport其來源為server:5000
  • NAT 接收此資料並具有來源server:5000目標NATip:NATport,該來源目標與發出的資料包相符(但來源和目標相反)
  • NAT 將其發送到client:5001仍然帶有來源的server:5000

來源 ip+連接埠和目標 ip+連接埠建立可追蹤的組合。 (還有更多細節,但這是基礎)

多讀一些書但我應該挖掘更多關於此的文檔,而不僅僅是參考我所看到的經驗中的軼事證據。

相關內容