प्रॉक्सी वास्तव में कैसे काम करती है?


12

यदि मैं कहने के लिए कनेक्ट करना चाहता हूं, तो आईपी 100.100.100.100, पोर्ट 80, मेरा कंप्यूटर तार में इस एड्रेस के साथ एक टीसीपी पैकेट भेजेगा।

अब यदि मैं एक प्रॉक्सी सर्वर का उपयोग करता हूं, तो 200.200.200.200 पोर्ट 8080 (इस तरह की प्रॉक्सी जिसे आप इंटरनेट एक्सप्लोरर में सेट कर सकते हैं) का उपयोग करें यह प्रक्रिया कैसे बदल जाती है?

जब मैं अभी भी उसी आईपी से कनेक्ट करना चाहता हूं, तो क्या आईपी हेडर में गंतव्य आईपी या प्रॉक्सी आईपी या दोनों शामिल होंगे?

मैं पहले ही गुगली कर चुका हूं, ऐसे सैकड़ों पृष्ठ हैं जो आपको एक प्रॉक्सी सेट करने का तरीका बताते हैं लेकिन कोई भी यह नहीं बताता है कि यह हुड के नीचे कैसे काम करता है।

जवाबों:


13

क्लाइंट से प्रॉक्सी रिक्वेस्ट को सर्वर के 8080 पोर्ट पर भेजा जाता है। प्रॉक्सी सर्वर तब गंतव्य साइट के लिए एक नया HTTP अनुरोध उत्पन्न करता है। प्रॉक्सी, कॉन्फ़िगरेशन के आधार पर, अक्सर HTTP अनुरोध में "X-फॉरवर्ड-फॉर" शीर्षक जोड़ देगा। गंतव्य वेब साइट पर लॉग फ़ाइलें प्रॉक्सी के आईपी पते को दिखाएगा, लेकिन "X-Forwarded-For" पते पर लॉग करने के लिए कॉन्फ़िगर किया जा सकता है या नहीं।

यह विशिष्ट कॉन्फ़िगरेशन है, लेकिन प्रॉक्सी सॉफ़्टवेयर आपको सभी प्रकार के अनुकूलन की अनुमति देगा।

संपादित करें: मुझे ध्यान देना चाहिए कि जब मैं मूल रूप से आपके प्रश्न को पढ़ता हूं, तो मुझे यह विचार मिला कि आप विशेष रूप से एक HTTP प्रॉक्सी के बारे में पूछ रहे थे, जैसे कि स्क्वीड या नेग्नेक्स। कई प्रकार के प्रॉक्स उपलब्ध हैं। Internet Explorer में, आप संभवतः HTTP प्रॉक्सी का उपयोग कर रहे होंगे, लेकिन साथ ही कई अन्य प्रकार भी हैं।


हाँ, यह बहुत हद तक उस सॉफ्टवेयर पर निर्भर करता है जिसका आप प्रॉक्सी सर्वर के रूप में उपयोग कर रहे हैं और यह कैसे कॉन्फ़िगर किया गया है। उदाहरण के लिए, Nginx के लिए HttpProxyModule देखें: wiki.nginx.org/HttpProxyModule
entropo

3
यदि केवल प्रॉक्सी सर्वर को भेजे गए अनुरोध में, प्रॉक्सी को कैसे पता चलता है कि मुझे कौन सा गंतव्य पता कनेक्ट करना है? क्या प्रॉक्सी http स्तर पर या tcp स्तर पर काम करता है?
कोड़ी

प्रॉक्सी से अनुरोध करने वाला ब्राउज़र पूर्ण URI का अनुरोध करता है। प्रॉक्सी सर्वर तब डीएनएस लुकअप करता है और यह लक्षित साइट के लिए स्वयं का HTTP अनुरोध उत्पन्न करता है।
इमीज

1
एक HTTP प्रॉक्सी, जैसे स्क्विड (जो मैं अपने उत्तर को आधार बना रहा हूं) एप्लिकेशन परत पर काम करता है।
ईमेज

1
@emgee: HTTP प्रोटोकॉल में एक CONNECT विधि भी है, इसलिए HTTP प्रॉक्सी के माध्यम से एक टीसीपी सर्वर से कनेक्ट करना संभव है (यदि प्रॉक्सी इसे अनुमति देता है) और टीसीपी सर्वर को HTTP बोलने वाला सर्वर नहीं होना चाहिए।
vtest

2

HTTP एक लेयर 7 प्रोटोकॉल है इसलिए भ्रमित न हों। जब आप एक HTTP प्रॉक्सी का उपयोग करते हैं और आप कहते हैं google.com, HTTP हैडर अभी भी एक ही google.com है, लेकिन गंतव्य आईपी पता प्रॉक्सी का आईपी पता होगा, स्रोत होस्ट किया जाएगा आईपी अनुकूलित पोर्ट संख्या 8080 में।


1

HTTP प्रॉक्सी का उपयोग करने के लिए, क्लाइंट से गंतव्य सर्वर के बजाय प्रॉक्सी सर्वर के आईपी पते पर अनुरोध भेजा जाता है। प्रॉक्सी को अनुरोध-यूआरआई निकालने के लिए HTTP हेडर पढ़ना चाहिए । अनुरोध-URI में गंतव्य सर्वर का नाम या IP शामिल है, और प्रॉक्सी सर्वर अनुरोध को अग्रेषित करने के लिए उस जानकारी का उपयोग करता है।

HTTP विनिर्देशन सर्वर नाम और पोर्ट जब एक प्रॉक्सी नहीं किया जाता है (के बाद से इन अनावश्यक हो सकता है अगर अनुरोध है कि सर्वर के लिए सीधे भेजा गया था) को बाहर करने का अनुरोध लाइन की अनुमति देता है। लेकिन, कल्पना के अनुसार ...

जब अनुरोध प्रॉक्सी के लिए किया जा रहा हो तो निरपेक्ष रूप आवश्यक है।

तो जब एक प्रॉक्सी का उपयोग नहीं कर रहा है, अनुरोध लाइन की तरह लग सकता है:

GET /robots.txt HTTP/1.1

लेकिन प्रॉक्सी का उपयोग करने के लिए, लाइन में सर्वर नाम (और पोर्ट यदि 80 नहीं) शामिल होना चाहिए:

GET http://httpbin.org:80/robots.txt HTTP/1.1

यदि प्रॉक्सी सर्वर केवल पूर्व-स्थापित अनुरोध सॉकेट के माध्यम से शब्दशः प्रतिक्रिया को रिले कर सकता है, तो प्रतिक्रिया पक्ष यदि ऑपरेशन सरल हो सकता है।


"HTTP द डेफिनेटिव गाइड" से, स्नातकोत्तर। 145: "HTTP / 1.1 को अब प्रॉक्सी और सर्वर अनुरोधों के लिए पूर्ण यूआरआई को संभालने के लिए सर्वरों की आवश्यकता है, लेकिन व्यवहार में, कई तैनात सर्वर अभी भी केवल आंशिक यूआरआई स्वीकार करते हैं।"
नोबार

यह मानक दृष्टिकोण नहीं है, लेकिन एक प्रॉक्सी भी Hostआंशिक URI को पूरा करने के लिए हेडर का उपयोग करने में सक्षम हो सकता है यदि अनुरोध पंक्ति में एक पूर्ण URI प्रदान नहीं किया गया है।
नोबार

यदि कनेक्शन एंड-टू-एंड एन्क्रिप्टेड (HTTPS) है तो यह दृष्टिकोण काम नहीं कर सकता है। Security.stackexchange.com/questions/101721/…
nobar

-7

"Tcp पैकेट" जैसी कोई चीज नहीं है। टीसीपी डेटा धाराओं के साथ काम करता है। आईपी ​​पैकेट हैं।

आपको नेटवर्किंग के बारे में कुछ बुनियादी ज्ञान की कमी है, मेरा सुझाव है कि आप टीसीपी / आईपी के बारे में एक अच्छी पुस्तक प्राप्त करें। डब्ल्यू। रिचर्ड स्टीवंस द्वारा सभी का पसंदीदा "टीसीपी / आईपी सचित्र" प्रतीत होता है।

अपने सवाल पर वापस।

एक प्रॉक्सी एक बिचौलिया है:

[आप] - [प्रॉक्सी] - [सर्वर जिसे आप कनेक्ट करना चाहते हैं]

अब दो अलग-अलग कनेक्शन हैं:

[you] - (प्रॉक्सी से आपका कनेक्शन) - [प्रॉक्सी] - (प्रॉक्सी का सर्वर से कनेक्शन) - [सर्वर जिसे आप कनेक्ट करना चाहते हैं]

जब आपको लगता है कि आप प्रॉक्सी के माध्यम से सर्वर से जुड़ रहे हैं, तो आप वास्तव में प्रॉक्सी से जुड़ रहे हैं और बताएं कि आप एक निश्चित सर्वर तक पहुंचना चाहते हैं। तब प्रॉक्सी उस सर्वर से खुद के लिए दूसरा कनेक्शन खोलता है और दोनों दिशाओं में बिचौलिया पासिंग डेटा के रूप में कार्य करता है।


13
टीसीपी पैकेट एक आईपी पैकेट है जिसमें टीसीपी हेडर की जानकारी होती है। यह सामान्य समानता है। कृपया कृपालु अशिष्टता मत करो; यह केवल आप पर बुरी तरह से प्रतिबिंबित कर रहा है, क्योंकि आप एक ही समय में गलत भी हैं।
फिल पी।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.