Vra

Van 'n post Joel se Copilot :

  

Direct Connect! Ons het nog altyd gedoen   alles in ons vermoë om seker te maak dat   Mis Creek Copilot kan koppel in enige   netwerk situasie, maak nie saak wat   firewalls of NAT's is in plek. om   maak dit gebeur, beide partye maak   uitgaande verbindings na ons bediener,   wat relais verkeer namens hulle.   Wel, in baie gevalle, dit is nie   nodig. So weergawe 2.0 doen   iets eerder slim: dit stel   die aanvanklike verband deur middel van ons   bedieners, so kry jy verbind reg   weg met 100% betroubaarheid. Maar dan   Sodra jy al is verbind, dit rustig,   in die agtergrond, lyk na 'n manier om   maak 'n direkte verband. As dit nie kan nie,   geen big deal: jy hou net heruitzetting   deur ons bediener. As jy 'n kan maak   direkte peer-to-peer verband, dit   stilweg verskuif jou data op die   direkte verband. Jy sal nie agterkom   enigiets behalwe, waarskynlik, baie vinniger   kommunikasie.

Hoe hulle die bediener verbinding met 'n P2P verband verander?

Was dit nuttig?

Oplossing

Dit is redelik moeilike en interessant. Ek is seker ek het 'n paar besonderhede verkeerd, maar die oorsig is dit:

Die programme kan reeds met mekaar praat deur bediener Joel se, so hulle inligting kan uitruil met mekaar en bediener Joel se. Verdere, Joel het hul eksterne IP-adresse, en hulle gee Joël inligting oor hul interne IP-adresse.

Hulle besluit om te probeer hierdie gat punch tegniek. Rekenaar A inisieer 'n TCP-verbinding met die rekenaar B met behulp van B se eksterne IP-adres. Dit sal nie deurgaan nie, maar wat dit doen is vertel se A se router wat dit nodig het om inkomende pakkies van B laat op 'n gegewe hawe.

Computer B nie dieselfde ding, maar sy boodskap kry deur na 'n sedert A se router geopen en 'n hawe / IP kombinasie wat ooreenstem met wat B gestuur (daar is 'n paar hawe magie wat hier gebeur - dit is nie triviaal, maar uitvoerbaar) <. / p>

B se router onthou dat B begin met 'n verband met 'n op 'n gegewe hawe en IP, en so 'n se pakkies nou vloei in B verlede hul router korrek as well.

Dit is dus eintlik redelik reguit vorentoe, maar die implementering het besonderhede, veral met betrekking tot hoe hawens word om nuwe TCP verbindings, en hoe NAT routers tipies hanteer TCP versoeke en hoe hulle te karteer om eksterne hawens . Hierdie besonderhede is die interessante en moeilike, bietjie.

-Adam

Ander wenke

Daar is 'n tegniek genaamd " gat pons " wat goed werk met "Cone" NAT (Cone is 'n tegniese familiale van router). Dit is nie 'n 100% seker tegniek, vandag, dit werk nie goed met UDP op ongeveer 80% van die router.

Daar is 'n paar implementering van biblioteek om te besef gat pons: STUN ( Wikipedia )

Ek glo die eenvoudige weergawe is dat hulle vervolg die bediener verbinding en vervang dit met die P2P-verbinding.

Iets in die trant van:

  1. Machine1 verbind bedieners medevlieënier se.
  2. Machine1 verbind bedieners medevlieënier se.
  3. Machine1 verbind bedieners medevlieënier se.
  4. Machine2 daarna verbind, en hulle begin deel skerm.
  5. Machine2 maak 'n hawe wat bedoel is vir Machine1 aan te sluit by.
  6. Machine1 probeer om aan te sluit op die nou oop poort op Machine2.

As hierdie verbinding is vasgestel:

  1. Die verbinding met bedieners medevlieënier se verbreek.
  2. Data is in plaas oorgedra oor die direkte (P2P) verband tussen die twee masjiene.
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top