(निम्नलिखित के लिए, मैं किसी भी DNS लुकअप या दो कार्रवाई को अनदेखा करूंगा, क्योंकि यह NAT कहानी के लिए प्रासंगिक हिस्सा नहीं है।)
कोई भी टीसीपी कनेक्शन चार भागों का एक हिस्सा है:
<source IP> <source port> <destination IP> <destination port>
संक्षेप में: गंतव्य आईपी का उपयोग पैकेट को सही मशीन पर लाने के लिए किया जाता है, गंतव्य पोर्ट का उपयोग उस मशीन पर सही कार्यक्रम / सत्र के लिए पैकेट प्राप्त करने के लिए किया जाता है। स्रोत आईपी का उपयोग किसी भी उत्तर को भेजने के लिए किया जाता है। समान स्रोत पोर्ट के लिए जाता है। जब कोई उत्तर भेजा जाता है, तो स्रोत और गंतव्य बस अदला-बदली होते हैं।
आइए बिना किसी NAT के दो कंप्यूटरों से शुरुआत करें:
- कंप्यूटर में IP है
1.1.1.1
- वेबसर्वर के पास IP है
3.3.3.3
- HTTP के लिए मानक पोर्ट है
80
जब एक कंप्यूटर एक वेबपेज के लिए पूछता है, तो यह पहली बार यादृच्छिक श्रेणी (1024-65535) से एक यादृच्छिक अप्रयुक्त पोर्टनंबर का चयन करता है। चलो चुन लेते हैं 2345
। फिर निम्न अनुक्रम होगा: कंप्यूटर को इसके साथ पैकेट भेजें: स्रोत आईपी 1.1.1.1
, स्रोत बंदरगाह 2345
, गंतव्य आईपी 3.3.3.3
, गंतव्य बंदरगाह 80
। पैकेट वेबसर्वर में आते हैं, यह देखता है कि यह स्वयं का आईपी और पोर्ट है 80
, इसलिए यह जानता है कि यह एक वेबपेज के लिए एक अनुरोध है। वेबसर्वर फिर वेबपेज को पैकेट में सोर्स आईपी 3.3.3.3
, सोर्स पोर्ट 80, डेस्टिनेशन आईपी 1.1.1.1
, डेस्टिनेशन पोर्ट के साथ भेजता है 2345
। कंप्यूटर इन पैकेट्स को फिर से पढ़ता है, और जानता है कि पोर्टबुक के कारण यह अनुरोधित वेबपेज है 2345
।
ये पोर्ट संयोजन अक्सर इस तरह लिखे जाते हैं: 1.1.1.1:2345
और 3.3.3.3:80
।
अब, इंटरनेट पर कंप्यूटरों की संख्या उपलब्ध IPv4 पतों की संख्या से अधिक है। पता स्थान को संरक्षित करने के लिए, निजी पता सीमाओं का एक सेट पेश किया गया था, जिसे स्वतंत्र रूप से पता साझा करने के लिए उपयोग किया जा सकता है। इन रांगियों को RFC1918 के रूप में जाना जाता है और ये निम्नलिखित हैं:
- 192.168.0.0 - 192.168.255.255
- 172.16.0.0 - 172.31.255.255
- 10.0.0.0 - 10.255.255.255
ये पते इंटरनेट रूटिंग टेबल में कहीं नहीं हैं, इसलिए यदि आप इंटरनेट की रीढ़ पर इन श्रेणियों में एक गंतव्य के साथ एक पैकेट भेजते हैं, तो वे बस गिर जाएंगे। ऐसा इसलिए है क्योंकि लाखों लोग एक ही पते का उपयोग करते हैं। इन पतों का अनुवाद इंटरनेट के लिए उपयोगी किसी चीज़ के लिए किया जाना चाहिए। यह वह जगह है जहाँ नेटवर्क पता अनुवाद आता है:
हमारे पास दो कंप्यूटर हैं:
- ए
192.168.0.1
और बी:192.168.0.2
- उनके प्रवेश द्वार के पास एक सार्वजनिक आईपी है
1.1.1.1
।
- हम उसी वेबसर्वर को रखते हैं।
- दोनों कंप्यूटर एक ही सर्वर से एक ही वेबपेज चाहते हैं।
पहले दोनों कंप्यूटर एक यादृच्छिक पोर्ट का चयन करते हैं: मान लीजिए: 192.168.0.1:2345
और 192.168.0.2:5432
।
कंप्यूटर A इसे स्रोत 192.168.0.1:2345
और गंतव्य के साथ पैकेट भेजता है 3.3.3.3:80
। प्रवेश द्वार इस पैकेट को स्रोत 1.1.1.1:2345
गंतव्य में अनुवाद करता है 3.3.3.3:80
और याद रखता है कि इस संयोजन के किसी भी उत्तर को जाता है 192.168.0.1
। तो, जब यह स्रोत के साथ एक उत्तर प्राप्त करता है 3.3.3.3:80
और गंतव्य 1.1.1.1:2345
है, यह इसके स्रोत के लिए अनुवाद करेगा 3.3.3.3:80
और गंतव्य 192.168.0.1:2345
और पर पैकेट भेज।
कंप्यूटर B इसे स्रोत 192.168.0.2:5432
और गंतव्य के साथ पैकेट भेजता है 3.3.3.3:80
। प्रवेश द्वार इस पैकेट को स्रोत 1.1.1.1:5432
गंतव्य में अनुवाद करता है 3.3.3.3:80
और याद रखता है कि इस संयोजन के किसी भी उत्तर को जाता है 192.168.0.2
। तो, जब यह स्रोत के साथ एक उत्तर प्राप्त करता है 3.3.3.3:80
और गंतव्य 1.1.1.1:5432
है, यह इसके स्रोत के लिए अनुवाद करेगा 3.3.3.3:80
और गंतव्य 192.168.0.2:5432
और पर पैकेट भेज।
यदि दोनों कंप्यूटर एक ही स्रोत पोर्ट नंबर का चयन करने के लिए होते हैं, तो गेटवे बस एक और मुक्त यादृच्छिक स्रोत पोर्ट नंबर चुन लेगा, और पोर्ट नंबर का अनुवाद करना भी याद रखेगा। इसे कभी-कभी PAT (पोर्ट एड्रेस ट्रांसलेशन) के रूप में संदर्भित किया जाता है। यह मूल रूप से NAT का सबसेट है।
इस सब के लिए कई कार्यान्वयन हैं। गेटवे को केवल "कंप्यूटर एक्स यूज़्ड सोर्स पोर्ट वाई" याद हो सकता है और पोर्ट वाई के साथ कंप्यूटर एक्स के साथ कुछ भी अग्रेषित किया जा सकता है। यह भी याद रख सकता है कि कंप्यूटर एक्स ने सोर्स पोर्ट वाई और डेस्टिनेशन जेड का उपयोग किया है और पोर्ट जेड से पोर्ट वाई के लिए केवल कुछ भी आगे है। कंप्यूटर X. या ऐसा विकल्प है कि यह पूरे टपल को याद रखता है और केवल कंप्यूटर एक्स को ट्रैफ़िक भेजता है जो पूरे स्रोत / गंतव्य आईपी और पोर्ट से मेल खाता है।