2012-01-24 19 views
6

मैं टीसीपी और यूडीपी प्रोटोकॉल की मेरी समझ को सोचता था, हालांकि सीमित, सही है। हालांकि हाल ही में, जब मुझे एहसास हुआ कि एक सामान्य धार साझा करने वाले सहकर्मी पोर्ट अग्रेषण की वास्तविक आवश्यकता के बिना एक टीसीपी या यूडीपी प्रोटोकॉल के माध्यम से एक-दूसरे से जुड़ सकते हैं, तो मुझे उलझन में आया। राउटर कैसे जानता है कि स्थानीय नेटवर्क में कौन सी मशीन पैकेट को आगे बढ़ाने के लिए है? इसे साफ़ करने में कोई मदद की सराहना की जाएगी। इंटरनेट पर धार प्रोटोकॉल आरेख और लेख बहुत सरल हैं, और इसलिए ऐसी कोई जानकारी नहीं है जो मदद करेगी।टोरेंट पीयर-टू-पीयर कनेक्शन

+0

एफवाईआई: 90% अधिकांश रूटर/फायरवॉल ब्लॉक यूडीपी! –

+1

और आप उस आंकड़े कहां प्राप्त करते हैं? मुझे अपने यूडीपी अनुप्रयोगों (कॉफ़ीशॉप या कार्यालयों से कई एसओएचओ पर घर पर कभी भी कोई समस्या नहीं थी), चाहे वह tftp, गेम्स, या कुछ कस्टम हो। –

+0

अधिकांश राउटर डिफ़ॉल्ट रूप से यूडीपी * प्रसारण * को अवरुद्ध करते हैं। –

उत्तर

6

राउटर (चल रहा एनएटी) सभी आउटगोइंग पैकेट ट्रैक करता है और फिर उन आने वाले पैकेट को अनुमति देता है जो उन आउटगोइंग पैकेट्स के जवाब हैं।

तो यदि आप google.com:80 पर आउटगोइंग टीसीपी कनेक्शन बनाते हैं तो यह google.com:80 से पैकेट को (प्रतिक्रिया में) अनुमति देगा। यदि दो आंतरिक मेजबान एक ही बंदरगाह से कनेक्शन बनाते हैं तो यह उन्हें अलग कर सकता है क्योंकि स्थानीय बंदरगाह अलग है, उदाहरण के लिए:

1) होस्ट ए Google से कनेक्शन बनाता है और राउटर टीसीपी के लिए अपने स्थानीय पोर्ट 10001 का उपयोग करता है कनेक्शन

2) होस्ट बी एक समान संबंध बनाता है और एक पैकेट google.com:80 से आती है और उसके पर पोर्ट 10001 के लिए संबोधित किया तो रूटर TCP कनेक्शन

के लिए अपने स्वयं के स्थानीय बंदरगाह 10002 का उपयोग करता है राउटर के वैन आईपी तो राउटर इसे होस्ट ए को भेजने के लिए जानता है। अगर पोर्ट 10002 के लिए संबोधित किया गया है तो राउटर इसे होस्ट बी

पर भेजना जानता है

यदि आपके पास राउटर (दो एनएटी) के पीछे सहकर्मी मेजबान के दो सहकर्मी हैं तो कनेक्शन स्थापित करने का कोई तरीका नहीं है सिवाय इसके कि यदि एक दूसरे के आईपी के बारे में जानकारी स्थानांतरित करने के लिए कुछ है (यानी। एक सर्वर वे दोनों जानकारी का आदान-प्रदान करने के लिए उपयोग कर सकते हैं) वे यह अनुमान लगाने का प्रयास कर सकते हैं कि राउटर स्थानीय बंदरगाह के रूप में कौन सा बंदरगाह चुनता है और उसके बाद राउटर वैन आईपी पर उस पोर्ट पर एक दूसरे डेटा भेजना शुरू कर देता है। चूंकि दोनों रूटर डेटा देख रहे हैं, फिर वे डेटा को अनुमति देने के लिए एक नियम स्थापित करते हैं। अगर बंदरगाहों का सही ढंग से अनुमान लगाया जाता है तो प्रत्येक पक्ष के पैकेट से गुज़रना पड़ सकता है क्योंकि दोनों राउटर के पास नियम स्थापित होता है। इसे यूडीपी/टीसीपी होल पंचिंग कहा जाता है।

http://en.wikipedia.org/wiki/UDP_hole_punching

मेरा मानना ​​है कि स्काइप जो यूडीपी का उपयोग करता है और छेद पंचिंग करता है एक अनुप्रयोग का एक उदाहरण है।

+0

एक अंतर्दृष्टि प्रतिक्रिया के लिए धन्यवाद! मेरा मानना ​​है कि अब मैं इस विषय को पर्याप्त रूप से समझने के लिए अपने दिमाग को आराम करने देता हूं ... अभी के लिए। वैसे, स्काइप एक चालाक जानवर है। मुझे लगता है कि यह पता लगा सकता है कि जब आप अपने स्थानीय नेटवर्क से किसी व्यक्ति के साथ बातचीत कर रहे हों (मैं एक बार अपनी बहन से बात कर सकता था, जबकि राउटर रीबूट के बाद भी इंटरनेट से कनेक्ट हो रहा था) – Neob91

1

कड़ाई से बोलते हुए, चूंकि आपने अपने शब्द राउटर को 'एनएटी' के साथ योग्यता प्राप्त नहीं की है, तो जवाब यह है कि राउटर लक्ष्य होस्ट के मैक पते को निर्धारित करने के लिए एआरपी का उपयोग करता है और फिर उस मैक पते के साथ फ्रेम भेजता है और ईथरनेट फ्रेम भेजता है लक्ष्य पता

लेकिन मुझे लगता है कि आपका मतलब यह नहीं था।

आपका मतलब है कि नेटिंग राउटर को कैसे पता चलता है कि इनबाउंड पैकेट को आगे बढ़ाने के लिए कहां है?

उत्तर यह है कि राउटर सक्रिय "कनेक्शन" की एक सूची बनाए रखता है ताकि यह पता अनुवाद करने में सक्षम हो सके। यह बाहरी होस्ट नंबर और पोर्ट नंबर पर मैप करने के लिए बाहरी पोर्ट नंबर का उपयोग करता है। टीसीपी के मामले में, "कनेक्शन" की अवधारणा बस यह है कि कोई टीसीपी कनेक्शन है (हालांकि आमतौर पर रिसाव रोकने के लिए टाइमआउट के साथ)। यूडीपी के मामले में यह कठिन है क्योंकि कोई यूडीपी कनेक्शन प्रति से है, इसलिए आम तौर पर इसे अकेले टाइमआउट द्वारा ट्रैक करने का मामला होता है।

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