2011-06-21 28 views
6

Zrobiłem trochę czytania i chociaż jestem nowy w sieciach iPhone'a, zastanawiałem się, czy dziurkacz TCP jest możliwy do połączenia dwóch iPhonów przez NAT. Czytałem również pomocne informacje na temat UPP i przewijania włosów, ale nie jestem w ogóle do nich zaznajomiony, więc jeśli ktoś ma jakieś pomysły, czy jest to możliwe, czy nie.Dziurkowanie TCP na iPhonie

Moim celem jest umożliwienie połączenia wielu iPhone'ów w szerokim zakresie (więc może lepiej zmienić GPSR), ale na razie pracuję tylko z dwoma iPhone'ami i 3G NAT Traversal wydaje się być najprostszym i najbardziej niezawodne w teorii.

Odpowiedz

10

Nat traversal to ogólny termin używany do łączenia dwóch węzłów bezpośrednio za pomocą serwera rendevous. Węzeł może być dowolnym komputerem, smartfonem lub innym urządzeniem. Daleko 3g jest jednym ze sposobów przesyłania danych nic więcej .

Szpilka do włosów przychodzi do obrazu, jeśli urządzenia równorzędne używające tego samego NAT używają publicznego adresu IP do łączenia się ze sobą, ponieważ niektóre routery nie obsługują nawijania włosów, np. Routera Cisco itd. Można to rozwiązać, jeśli używasz prywatnego adresu IP zamiast publicznego adresu IP. Nie mogę powiedzieć nic o przypinaniu włosów w twoim przypadku, ponieważ nie znam szczegółów technicznych na temat Twojej sieci.

Zaktualizuj swoje pytanie z danymi technicznymi, takimi jak rodzaj 3g, którego używasz. Potem tylko mogę powiedzieć o przypinaniu włosów na 3g.

Mam zaimplementowane dziurkowanie udp/tcp przy użyciu 2g. W tym celu użyłem trzech komputerów PC (jednego serwera rendevous i dwóch węzłów).

  1. opracować Rendevous program serwera, który będzie działał na jednym programie PC.The powinny być zdolne do wymiany publicznego adresu IP z dwoma urządzenia iPhone.

  2. opracować instalację programu klienckiego w iphone. Połącz iPhone'a z serwerem, który ujawni publiczny adres IP iPhone'a na serwer. Powtórz ten sam proces dla drugiego iPhone'a. Teraz serwer wymieni publiczny port ip/port na oba iphone. teraz każdy jednocześnie rozpoczyna wysyłanie pakietów do siebie w tym samym czasie, co spowoduje dziurkowanie w NAT.

szczegół o dziurkowanie można znaleźć na tej http://www.brynosaurus.com/pub/net/p2pnat/

Lepsze spróbować z otworem punchcing UDP, który jest łatwy do develop.TCP dziurkowanie jest nieco tricky.Once wdrożyć UDP dziurkowanie nie jest łatwo zaimplementować dziurkowanie TCP.

Dowiedz się o STUN, lód, typu NAT, Nat Maping

http://tools.ietf.org/html/rfc5389
http://en.wikipedia.org/wiki/Network_address_translation

+0

I faktycznie się zastanawiać, czy jest to możliwe tylko z iPhone. Domyślam się, że nie, ponieważ musiałbyś w jakiś sposób kontrolować lokalną sieć każdego iPhone'a, ale nie jestem pewien. – Skyler

+0

Sieć lokalna każdego iPhone'a to sieć Usługodawcy z przykładu British Telecom, Vodafone. Lokalny obszar zapewni adres IP każdemu iPhone'owi, a IP jest lokalny dla ich sieci. Ale jeśli chodzi o komunikację między dwoma iPhone'ami pomiędzy Sieć jak między VOdafone i British Telecom będzie używać publicznego IP. To jest moje myślenie, nie do końca pewne. Jeśli możesz wyjaśnić "jakoś kontrolować lokalną sieć każdego iPhone'a", łatwiej będzie zrozumieć twój problem. –

+0

Tak. Myślę, że problemem jest to, że każdy telefon może uzyskać tylko publiczny adres IP innego telefonu. Nie sądzę, że możliwe jest uzyskanie adresu IP ip ip za pośrednictwem sieci 3G bez znajomości sieci, w której znajduje się każdy telefon, a ponieważ Vodafone, Telecom, AT & T lub Singtel na przykład kontrolują tę sieć, nie sądzę, że jest to możliwy. Zastanawiam się, czy jest to możliwe, bez lokalnego adresu IP telefonu, lub do uzyskania dostępu do tej sieci, aby znaleźć adres IP. – Skyler