Wiem o przechodzeniu NAT i o STUN, TURN i ICE i jego wykorzystaniu. Chcę wiedzieć, czy są one wdrożone w aplikacji do wymiany plików peer to peer, jak bittorrent. Niezależnie od tego, czy moduły śledzące ułatwiają komunikację za NAT-ami, aby komunikować się ze sobą, pomagając w tworzeniu bezpośredniego połączenia za pomocą STUN lub przekazując przez TURN. W przypadku Distributed Hash Table (DHT), w jaki sposób jeden peer komunikowałby się z innym peer za NAT?Jak działa translacja NAT w przypadku protokołów peer-to-peer, takich jak bittorrent.
Odpowiedz
BitTorrent nie musi łączyć się z żadnym konkretnym członkiem w roju, nie jest to protokół czatu p2p, w którym dwa konkretne punkty końcowe chcą ze sobą rozmawiać. Wszystko, o co się troszczy, to to, że wykres połączenia roju ma wystarczająco wysoki stopień łączności.
Innymi słowy, pozyskanie klientów za NAT, aby rozmawiać ze sobą, jest dość pożądane, ale nie do momentu, w którym główne zasoby, takie jak przekazywanie ruchu, zostaną wydatkowane na ten cel. Niepowodzenie jest opcją.
Tak więc nie używa sip/turn/etc.
Różne klienci używają jakąś kombinację następujących metod, aby poprawić łączność za większość połączeń transportowych:
- NAT-PMP/negocjacji PCP z bramą portów
- opcje gniazda ponowne wykorzystanie punktu końcowego niezależnej (EIM) Mapowania NAT
- w dużym stopniu nieudokumentowane rozszerzenie
ut_holepunch
, które używa wzajemnie osiągalnych członków roju zamiast serwerów oszałamiających. - Opcjonalny protokół transportowy oparty na protokole UDP (μTP), który może być używany w połączeniu z poprzednimi punktami. ogólnie nat traversal jest łatwiejsze do osiągnięcia dzięki udp
- sygnalizacji możliwości IPv6, co w zasadzie pozwala klientom uaktualnić swoje połączenia, a następnie plotkować o równorzędnych wersjach v6 za pośrednictwem PEX/DHT.
W przypadku DHT używane są tylko pierwsze dwa punkty (negocjacja bramki i ponowne użycie portu). Nakład próby przejścia nat dla pojedynczego cyklu żądanie-odpowiedź będzie> 100% i nie jest tego wart.