A Java HTTP-kérésed SOCKS-on keresztül működik, de egy UDP-funkció továbbra is közvetlenül küld forgalmat, vagy meghiúsul. A JVM SOCKS-tulajdonságainak beállítása nem ad DatagramSocket számára SOCKS5 UDP-megvalósítást.

DatagramSocket API hálózati végpontokra címzett adatgramokat küld és fogad. A connect() metódusa partneret választ ehhez a csockethez. Nem folytat SOCKS-tárgyalást a partnerrel.

A SOCKS5 UDP-útvonal extra munkát igényel

A SOCKS5 UDP-társítást definiál, amely TCP-vezérlőkapcsolat fölött jön létre. Ezután a kliens a proxy által megadott továbbítási címmel cserél beágyazott adatgramokat. Minden beágyazott üzenet megjelöli a célját. A kliensmegvalósításnak kezelnie kell ezt a keretezést és a vezérlőkapcsolat élettartamát.

Egy közönséges UDP-csocket proxy TCP-figyelőportjára irányítása kihagyja ezeket a lépéseket. Az alkalmazás nyers adatgramjainak arra a címre küldése nem helyettesíti a társítást.

Válasszon olyan könyvtárat vagy alkalmazásfunkciót, amely kifejezetten támogatja a SOCKS5 UDP-továbbítást, és győződjön meg arról, hogy a kiszolgáló is támogatja. Előfordulhat, hogy a SOCKS-támogatást hirdető könyvtár csak a TCP CONNECT-et valósítja meg. A protokollspecifikáció megkülönbözteti a parancsokat.

Az UDP-továbbításnak is használható útvonal kell

A proxyhoz létesített sikeres TCP-kapcsolat csak a vezérlőútvonalat hozza létre. A tűzfalak vagy a NAT viselkedése továbbra is zavarhatja a továbbítóhoz küldött adatgramokat. Gyűjtse össze a visszakapott továbbítási végpontot és az esetleges továbbítási hibát, mielőtt arra jutna, hogy az alkalmazás célja offline.

Végül a SOCKS szállítási támogatás nem ad kézbesítési garanciákat az UDP-hez. Az alkalmazás saját időtúllépései, veszteségkezelése és üzenetméret-korlátai továbbra is érvényesek az útvonal megváltozása után.

Kapcsolódó cikkek