Puncte:1

Cum trimit jocurile online pachete UDP pe internet?

drapel ca

Cum fac jocurile online multiplayer care folosesc UDP pachetele livrate între rețele prin internet? Din câte am înțeles, clienții ar trebui să activeze redirecționarea portului pe routerele lor pentru ca pachetele să ajungă la computerul lor. Acesta este ceea ce jocurile online mari (WoW, Diablo etc.) cer jucătorilor să facă?

De exemplu, am creat recent un server care gestionează traficul udp. Pur și simplu ecou înapoi orice a trimis un expeditor. Am implementat acest lucru pe un server de pe internet. Pot primi ecourile înapoi la expeditor numai după ce am activat redirecționarea portului, dar acest lucru nu va funcționa dacă există doi expeditori în aceeași rețea locală.

Puncte:3
drapel in

Răspuns scurt: Urmărirea conexiunii NAT

Un lucru de reținut este că marea majoritate a routerelor de pe internetul IPv4 sunt routere NAT.

Majoritatea implementărilor NAT fac urmărire inteligentă, când trimiteți UDP de la un client intern undeva, veți avea un Port de destinație și un Port sursă. Dacă traficul vine cu porturile inversate, atunci traficul va fi direcționat înapoi către clientul dvs. și va fi permis în majoritatea firewall-urilor.

NAT/Firewall-urile cu urmărire detectează aceste pachete ca fiind legate și le redirecționează.

Exemplu bazat pe comentarii cu Server pe port 5000 UDP

  • Clientul trimite un pachet pentru server: 5000, sursă client:5001
  • Primul router NAT va vedea un pachet cu ip sursă și portul de client:5001, și destinație server: 5000.
  • Routerul trimite acest lucru pe drum și va avea NATtip:NATport
  • Serverul primește acest lucru și creează un răspuns la NATtip:NATport care are sursa de server: 5000
  • NAT primește acest lucru și are sursă server: 5000 destinaţie NATtip:NATport, care se potrivește cu pachetul care a fost trimis (dar are sursa și destinația inversate)
  • NAT trimite acest lucru la client:5001 inca cu sursa server: 5000

Sursa ip+port și destinație ip+port creează o combinație care poate fi urmărită. (sunt mai multe detalii, dar acestea sunt elementele de bază)

Mai multe lectură Dar ar trebui să aflu o documentație mai bună despre asta și să nu mă refer doar la dovezi anecdotice din ceea ce am văzut experimentat.

diaper avatar
drapel ca
poți explica ce vrei să spui prin „dacă traficul intră cu porturile inversate”? Înseamnă asta dacă serverul meu din afara NAT a primit un pachet pe portul 5000 de la :5001, atunci ar trebui să trimită înapoi un răspuns la :5000?
drapel in
Exemplu @scutec adăugat
user10489 avatar
drapel nc
Vezi și https://en.wikipedia.org/wiki/Hole_punching_(networking)
diaper avatar
drapel ca
@NiKiZe mulțumesc, are sens. Sună ca perforarea este practic „trimite pachetul de mai multe ori pentru că primul ar putea fi scăpat” Aș vrea să îmi dau seama de ce aplicația mea exemplu încă nu funcționează, în timp ce alte lucruri din rețea mea funcționează fără redirecționare porturi (xbox, apeluri zoom, etc) dar asta e cu totul altă întrebare
drapel in
Majoritatea routerelor NAT permit traficul, asigurați-vă că returnați date pe același port din care a venit traficul. Serverul are un număr de port static, clientul are un număr de port aleator ca sursă.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.