2010-06-04 18 views
6

मेरे पास मेरे क्लाइंट और वास्तविक वीडियो सर्वर (सी ++ में बने) के बीच चल रहे प्रॉक्सी सर्वर (जावा में लिखा गया) जैसा कुछ है। क्लाइंट जो कुछ भी भेजता है वह इस प्रॉक्सी के माध्यम से जाता है और उसके बाद सर्वर पर रीडायरेक्ट किया जाता है।एक टीसीपी कनेक्शन रीडायरेक्ट करें

यह ठीक काम कर रहा है, लेकिन मेरे पास कुछ समस्याएं हैं और मुझे लगता है कि यह बेहतर होगा अगर मैं केवल क्लाइंट अनुरोधों को सुनने के लिए यह प्रॉक्सी सर्वर बना सकता हूं और फिर किसी भी तरह सर्वर को बताता हूं कि ग्राहक पक्ष से अनुरोध किया गया है , और यह क्लाइंट के साथ सीधे कनेक्शन बनाना है।

1- जब भी एक ग्राहक मेरे प्रॉक्सी के लिए एक SYN भेजता है, प्रॉक्सी सिर्फ आईपी और बंदरगाह कह वास्तविक सर्वर को संदेश भेजता है:

टीसीपी स्तर मैं क्या चाहते हो में

मूल रूप से कुछ इस तरह है ग्राहक का

2- सर्वर क्लाइंट और सर्वर के बीच सीधा कनेक्शन बनाने वाले निर्दिष्ट क्लाइंट को संबंधित SYN-ACK भेज देगा।

प्रॉक्सी वास्तविक सर्वर पर प्रारंभिक अनुरोध (लेकिन बाद में डेटा स्थानांतरण नहीं) को फिर से रिले करेगा। मुझे नहीं पता कि यह संभव है या नहीं।

आपको बहुत बहुत धन्यवाद

नेल्सन आर पेरेस

उत्तर

1

पर "टीसीपी छेद पंचिंग सहकर्मी सहकर्मी" के इस अच्छा वर्णन पाया आप उस तरह userland में टीसीपी हाथ मिलाना का नियंत्रण नहीं है। फ़ायरवॉल/राउटर क्या करते हैं लेकिन यह कर्नेल में होता है। अपने प्लेटफ़ॉर्म के लिए फ़ायरवॉलिंग सॉफ़्टवेयर पर नज़र डालें - आपको कुछ भी कोड भी नहीं करना पड़ेगा।

2

बहुत तरह से कुछ खेल (और कोहरा क्रीक CoPilot) यह करना है कि है, लेकिन यह दोनों सर्वर और ग्राहक पर समर्थन की आवश्यकता है। असल में प्रॉक्सी को क्लाइंट और सर्वर से कहना है "सीधे इस आईपी और इस बंदरगाह पर संचार करने का प्रयास करें" और यदि वे नहीं जा सकते हैं (क्योंकि एक या दोनों एनएटी या फ़ायरवॉल के पीछे हैं), तो वे वापस जाने के लिए वापस आते हैं प्रॉक्सी के माध्यम से।

मैं http://www.brynosaurus.com/pub/net/p2pnat/

+0

ठीक है, मैं इसे वापस लेता हूं - ऐसा लगता है कि कोपिलोट ऐसा नहीं करता है, या अगर उन्होंने किया, तो वे रुक गए। Https://www.copilot.com/tech/ देखें –

2

क्या प्रॉक्सी और सर्वर एक ही मशीन पर रहता है? यदि ऐसा है, तो आप सॉकेट ट्रांसफर या फ़ाइल डिस्क्रिप्टर पासिंग का उपयोग कर सर्वर से कनेक्शन पास कर सकते हैं। आप, सी यहाँ उदाहरण मिल सकते हैं

http://www.wsinnovations.com/softeng/articles/uds.html

वे विभिन्न मशीनों पर हैं, वहाँ सर्वर से कनेक्शन पारित करने के लिए कोई रास्ता नहीं है। हालांकि, वीआईपी (वर्चुअल आईपी) का उपयोग कर आईपी पैकेट को सर्वर पर प्रॉक्सी करना संभव है। यह सॉकेट से नीचे है इसलिए आपको DLPI जैसे लिंक लेयर इंटरफ़ेस का उपयोग करना होगा।

संबंधित मुद्दे