Avatar billede Slettet bruger
11. marts 2011 - 16:12 Der er 31 kommentarer og
1 løsning

P2P kommunikation?

Hej alle jer eksperter!

Jeg har planer om at lave et system hvor næsten alt data forgår via P2P trafik, men er det muligt at lave det uden at skulle åbne en port i routeren? Jeg vil helst ikke have en central server, men en masse P2P servere der kan styre sig selv og så kan man connecte til en ip addresse.

Ergo, er det muligt at sende sockets/beskeder til en computer uden at skulle åbne en port i routeren?

- N
Avatar billede arne_v Ekspert
11. marts 2011 - 16:18 #1
Nej - du kan ikke send til en computer uden at der er lukket op i firewall/NAT router.

Hvordan vil du have at dine P2P boxe skal finde hinanden?
Avatar billede Slettet bruger
11. marts 2011 - 16:36 #2
Det ved jeg endnu ikke, men jeg kender nogle apps som formoder at gøre det. Der taler vi f.eks. om Skype (Har læst at de har P2P nogle steder). Jeg har en centralserver, men den kan ikke klare særlig meget og derfor vil jeg gerne kunne gøre det udenom en server.

Måske ved at App A indtaster en IP og Port og så connecter den på den måde med App B?

- N
Avatar billede arne_v Ekspert
11. marts 2011 - 16:42 #3
Skype har en central server.

Hvis man skal indtaste adresse og port på mindst en anden node, så er det nemt.
Avatar billede Slettet bruger
11. marts 2011 - 16:43 #4
Tak for det.

Er der mulighed for at man kan opsætte en P2P forbindelse UDEN at skulle ændre nogle advanceret indstillinger og skulle uden en central?
Avatar billede arne_v Ekspert
11. marts 2011 - 16:48 #5
Nu er det vel ikke så advanceret at skulle indtaste adressen på en enkelt node.

Men på en eller anden måde skal man vide hvor de andre noder er.

Muligheder:
- central server
- indtastning
- multicast [virker kun på LAN]

At forsøge på alle adresser port kombinationer er ikek muligt - der er 280000 milliarder kombinationer.
Avatar billede Slettet bruger
11. marts 2011 - 16:54 #6
Kan du definére indtastning?
Avatar billede Syska Mester
11. marts 2011 - 17:23 #7
Det er vel:
192.168.0.1 port 8000 ... ( ja, det er en private ip )

Du kan også kigge på:
http://en.wikipedia.org/wiki/UDP_hole_punching
http://www.h-online.com/security/features/How-Skype-Co-get-round-firewalls-747314.html

mvh
Avatar billede arne_v Ekspert
11. marts 2011 - 18:59 #8
Indtastning er når en levende person indtaster noget via tastatur.

Det kan være i en GUI config eller i editor modifying a config file etc..
Avatar billede Slettet bruger
11. marts 2011 - 19:15 #9
Ja.. Det var planen at bruge den metode.

Men denne UDP Hole punching.. Kan det fungere?
Avatar billede Syska Mester
11. marts 2011 - 20:03 #10
Skype kan ... men mon ikke de har lidt mere viden, resourcer, etc. så jeg ville nok generelt ikke gå efter det.

Der er også nogen firewall's hvor det ikke er muligt gennem.

Det kan virke ... buts its a living hell, men mange edge cases som jeg lige har forstået det.

Jeg ville ikke gå efter det med mindre du har et par millioner i baglommen.

mvh
Avatar billede arne_v Ekspert
11. marts 2011 - 21:40 #11
Han har vel ikke Skypes resourcer.

Men problemet er vel heller ikke helt så stort hvis en af hans brugere får problemer som hvis Skype har en million brugere med et problem.
Avatar billede Syska Mester
11. marts 2011 - 22:10 #12
Nej, det har han ikke, og derfor jeg synes han skal gå din vej ( med en server i midten ), men synes han skulle vide at det kan lade sig gøre.

Helt klart ... der er stor forskel som jeg også skriver, og igen af den grund, ville jeg også vælge den nemme løsning.

mvh
Avatar billede Slettet bruger
11. marts 2011 - 22:18 #13
Hvordan gør jeg så med server? Jeg har ingen server i hjemmet der kan køre 24-7 og min Linux server i København har jeg ikke kontrol over og kan kun køre php.
Avatar billede arne_v Ekspert
11. marts 2011 - 22:26 #14
Selv med UDP hole punching har man brug for en måde at finde de andre servere på.
Avatar billede arne_v Ekspert
11. marts 2011 - 22:28 #15
En PHP kan godt tage imod client registrering og returnere adresser på andre servere.
Avatar billede Slettet bruger
11. marts 2011 - 22:33 #16
Ja.. Men i længden holder det jo ikke når jeg har begrænset bredbånd.. 30GB om måneden!
Avatar billede arne_v Ekspert
11. marts 2011 - 22:36 #17
Client sender en tom request op og får en liste med IP adresser tilbage.

Det er ca. 1 KB med HTTP headere.

10 GB er 1 million klient opstart.

Efter dette kan klienterne snakke direkte sammen.
Avatar billede Slettet bruger
11. marts 2011 - 22:40 #18
Hvordan kan de snakke direkte sammen?
Avatar billede arne_v Ekspert
11. marts 2011 - 22:55 #19
TCP eller UDP.

Åben port i firewall eller UDP hole punching.
Avatar billede Slettet bruger
11. marts 2011 - 22:59 #20
Ja.. Men er det ikke helvedes svært og besværligt? Det skulle gerne være noget Hr. og Fru Danmark skulle kunne finde ud af og det skulle gerne virke hver gang for min app (Hole punching).
Avatar billede arne_v Ekspert
11. marts 2011 - 23:02 #21
Hvorvidt det er nemt eller ej afhænger primært af ham der laver programmet.

Du vil aldrig kunne lave en løsning som vil virke i meget restrictede netværk.
Avatar billede Syska Mester
11. marts 2011 - 23:06 #22
Hr. og Fru danmark kan jo have en stict søn som synes de skal igennem en Proxy ... og så er du lidt på den.

Men hvad er det Hr og Fru danmark skal tilgå? Der er jo mange forskellige måder det hele skal laves på, alt efter hvad det er for data det er som skal gennem wiren.

mvh
Avatar billede Slettet bruger
11. marts 2011 - 23:12 #23
Det er der hoveddelen i det er at der skal sendes strings (Max 255 tegn) afsted til en computer fra en anden. Dette vil nok ske et par gange pr. 10. minut.

Det er ikke vigtigt at det virker hver gang, men at det virker for en gennemsnitsbruger uden mere beskyttelse end en router og en firewall.

Hvis i kender Hamachi, vil i vide at de kan bruge porte på andres computere uden om router og det er derhen jeg gerne vil. At computerne kan kommunikere uden at blive blokeret.

Som sagt skal det bare virke for en gennemsnitsbruger.
Avatar billede Slettet bruger
11. marts 2011 - 23:15 #24
Rettelse - Det er ikke vigtigt at det virker for alle, men for en gennemsnitsbruger.

Istedet for:

"Det er ikke vigtigt at det virker hver gang, men at det virker for en gennemsnitsbruger uden mere beskyttelse end en router og en firewall."
Avatar billede Syska Mester
11. marts 2011 - 23:24 #25
Ved Hamachi eller ( LogMeIn som det vist hedder i dag ) gør også brug af 3 parts server for at oprette den forbindelse mellem 2 eller flere brugere.

De laver sikkert også Hole Punching og måske andre smarte tricks for at de ikke skal route alt trafik gennem deres server.

mvh
Avatar billede Slettet bruger
11. marts 2011 - 23:28 #26
Ja. Det kan være. Men ifølge Hamachi app'en er der "direkte" forbindelse og "server" forbindelse.. "Direkte" må da næsten være P2P?
Avatar billede Syska Mester
11. marts 2011 - 23:47 #27
Ja, men her er der også nogle ting der skal virke. Jeg kan fortælle dig at det ikke virker gennem en OpenBSD firewall der kører med pf. ( Mener jeg det var ).

Men hvis det var nemt at lave, så var der helt sikkert også noget mere om det på nettet, og så havde enten Arne eller jeg allerede givet dig et link :-)

Jeg ville løbe langt væk fra det og bruge tiden på at lave en long poling request til din "host", og der igennem signalere når der er ny data klienten skal hente.

mvh
Avatar billede Slettet bruger
11. marts 2011 - 23:53 #28
Hvordan skulle min host signalere? Skulle Appen så tjekke op hvert 10. minut om der var opdateringer?
Avatar billede Syska Mester
12. marts 2011 - 00:18 #29
http://en.wikipedia.org/wiki/Push_technology

Nu har du ikke præcist skrevet hvad for type app du laver, men du kan læse lidt om forskellige puch teknologier på overstående link.

mvh
Avatar billede Slettet bruger
12. marts 2011 - 00:23 #30
Tak! Den vil jeg lige tage et kig på!
Avatar billede Slettet bruger
12. marts 2011 - 20:10 #31
Hvordan kan man sætte long polling op i C# og PHP?
Avatar billede Slettet bruger
03. maj 2011 - 15:40 #32
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester