Udp
網路遊戲如何通過網際網路發送 UDP 數據包?
使用 UDP 的線上多人遊戲如何通過 Internet 在網路之間傳遞數據包?據我了解,客戶端必須在其路由器上啟用埠轉發才能使數據包到達他們的電腦。這是大型網路遊戲(魔獸世界、暗黑破壞神等)要求玩家做的嗎?
例如,我最近創建了一個處理 udp 流量的伺服器。它只是回顯發件人發送的任何內容。我將它部署到網際網路上的伺服器。啟用埠轉發後,我只能將迴聲返回給發送者,但如果同一本地網路上有兩個發送者,這將不起作用。
簡短回答:NAT 連接跟踪
要記住的一件事是,IPv4 網際網路上的絕大多數路由器都是 NAT 路由器。
大多數 NAT 實現都進行智能跟踪,當您將 UDP 從內部客戶端發送到某個地方時,您將擁有一個目標埠和一個源埠。如果流量在埠反轉的情況下進入,那麼該流量將被路由回您的客戶端,並在大多數防火牆中被允許。
具有跟踪功能的 NAT/防火牆將這些數據包檢測為相關並將它們轉發回去。
基於UDP
server
埠註釋的範例5000
server:5000
客戶端為, 源發送一個數據包client:5001
- 第一個 NAT 路由器將看到一個帶有源 ip 和埠
client:5001
以及目標的數據包server:5000
。- 路由器按它的方式發送它,並且將有
NATip:NATport
- 伺服器接收到這個並創建一個響應
NATip:NATport
,其來源為server:5000
- NAT 接收到這個並有 source
server:5000
destinationNATip:NATport
,它與發出的數據包匹配(但源和目標顛倒了)- NAT 將其發送到
client:5001
仍然帶有源server:5000
源 ip+port 和目標 ip+port 創建一個可以跟踪的組合。(有更多細節,但這是基礎)
更多閱讀但我應該探勘更好的文件,而不僅僅是參考我所見經歷的軼事證據。