Java DatagramSocket და SOCKS5 UDP რელე
გაიგეთ, რატომ სჭირდება Java UDP სოკეტს SOCKS5 UDP იმპლემენტაცია მაშინაც, როცა TCP კავშირები უკვე იყენებენ SOCKS-ს.
თქვენი Java HTTP მოთხოვნა SOCKS-ის გავლით მუშაობს, მაგრამ UDP ფუნქცია კვლავ პირდაპირ აგზავნის ტრაფიკს ან ვერ მუშაობს. JVM-ის SOCKS თვისებების დაყენება DatagramSocket-ს SOCKS5 UDP იმპლემენტაციას არ აძლევს.
DatagramSocket API აგზავნის და იღებს ქსელური ბოლო წერტილებისთვის მისამართიან დატაგრამებს. მისი connect() მეთოდი ირჩევს წყვილს ამ სოკეტისთვის. ის არ აწარმოებს SOCKS მოლაპარაკებას წყვილთან.
SOCKS5 UDP მარშრუტი დამატებით სამუშაოს მოითხოვს
SOCKS5 განსაზღვრავს UDP ასოციაციას, რომელიც TCP კონტროლის კავშირზე მყარდება. შემდეგ კლიენტი ცვლის შეფუთულ დატაგრამებს პროქსის მიერ მოწოდებულ რელეს მისამართთან. ყოველი შეფუთული შეტყობინება თავის დანიშნულებას მიუთითებს. კლიენტის იმპლემენტაციამ უნდა მართოს ეს ჩარჩოება და კონტროლის კავშირის სიცოცხლის ხანგრძლივობა.
ჩვეულებრივი UDP სოკეტის პროქსის TCP მოსმენის პორტზე მიმართვა ამ ნაბიჯებს გამოტოვებს. თქვენი აპლიკაციის ნედლი დატაგრამების ამ მისამართზე გაგზავნა ასოციაციის შემცვლელი არ არის.
აირჩიეთ ბიბლიოთეკა ან აპლიკაციის ფუნქცია, რომელიც ცალსახად მხარს უჭერს SOCKS5 UDP რელეს, და დაადასტურეთ, რომ სერვერიც მხარს უჭერს მას. ბიბლიოთეკა, რომელიც SOCKS მხარდაჭერას რეკლამირებს, შეიძლება მხოლოდ TCP CONNECT-ს ახორციელებდეს. პროტოკოლის სპეციფიკაცია ამ ბრძანებებს განასხვავებს.
UDP რელესაც სჭირდება გამოსადეგი გზა
პროქსისთან წარმატებული TCP კავშირი მხოლოდ კონტროლის გზას ამყარებს. ქსელური ფარები ან NAT-ის ქცევა კვლავ შეიძლება ხელს უშლიდეს რელესთვის გაგზავნილ დატაგრამებს. შეაგროვეთ დაბრუნებული რელეს ბოლო წერტილი და ნებისმიერი რელეს შეცდომა, სანამ დაასკვნით, რომ აპლიკაციის დანიშნულება ოფლაინშია.
დაბოლოს, SOCKS ტრანსპორტის მხარდაჭერა UDP-ს მიწოდების გარანტიებს არ უმატებს. თქვენი აპლიკაციის საკუთარი დროის ლიმიტები, დანაკარგების დამუშავება და შეტყობინების ზომის შეზღუდვები მარშრუტის შეცვლის შემდეგაც მოქმედებს.