Direkte TCP / IP-verbindings in P2P programme
-
09-06-2019 - |
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?
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
Ek glo die eenvoudige weergawe is dat hulle vervolg die bediener verbinding en vervang dit met die P2P-verbinding.
Iets in die trant van:
- Machine1 verbind bedieners medevlieënier se.
- Machine1 verbind bedieners medevlieënier se.
- Machine1 verbind bedieners medevlieënier se.
- Machine2 daarna verbind, en hulle begin deel skerm.
- Machine2 maak 'n hawe wat bedoel is vir Machine1 aan te sluit by.
- Machine1 probeer om aan te sluit op die nou oop poort op Machine2.
As hierdie verbinding is vasgestel:
- Die verbinding met bedieners medevlieënier se verbreek.
- Data is in plaas oorgedra oor die direkte (P2P) verband tussen die twee masjiene.