Udp

網路遊戲如何通過網際網路發送 UDP 數據包?

  • August 8, 2021

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

例如,我最近創建了一個處理 udp 流量的伺服器。它只是回顯發件人發送的任何內容。我將它部署到網際網路上的伺服器。啟用埠轉發後,我只能將迴聲返回給發送者,但如果同一本地網路上有兩個發送者,這將不起作用。

簡短回答:NAT 連接跟踪

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

大多數 NAT 實現都進行智能跟踪,當您將 UDP 從內部客戶端發送到某個地方時,您將擁有一個目標埠和一個源埠。如果流量在埠反轉的情況下進入,那麼該流量將被路由回您的客戶端,並在大多數防火牆中被允許。

具有跟踪功能的 NAT/防火牆將這些數據包檢測為相關並將它們轉發回去。

基於UDPserver埠註釋的範例5000

  • server:5000客戶端為, 源發送一個數據包client:5001
  • 第一個 NAT 路由器將看到一個帶有源 ip 和埠client:5001以及目標的數據包server:5000
  • 路由器按它的方式發送它,並且將有NATip:NATport
  • 伺服器接收到這個並創建一個響應NATip:NATport,其來源為server:5000
  • NAT 接收到這個並有 source server:5000destination NATip:NATport,它與發出的數據包匹配(但源和目標顛倒了)
  • NAT 將其發送到client:5001仍然帶有源server:5000

源 ip+port 和目標 ip+port 創建一個可以跟踪的組合。(有更多細節,但這是基礎)

更多閱讀但我應該探勘更好的文件,而不僅僅是參考我所見經歷的軼事證據。

引用自:https://serverfault.com/questions/1073855