"हाय, अमीगो!"
"हाय, बिलाबो!"
"आज आप मुझे कौन सी नई बात बताएंगे?"
"कई चीजें। लेकिन शुरू करने के लिए, मुझे लगता है कि हम एक नेटवर्क और इंटरनेट के साथ काम करने पर चर्चा करेंगे। इच्छुक हैं?"
"हाँ। गांगेय इंटरनेट बहुत अच्छा है।"
"ठीक है, लेकिन कुछ इतिहास से शुरू करते हैं। 21वीं सदी की शुरुआत में, स्थिति यह थी..."
"इंटरनेट से जुड़े हर कंप्यूटर का एक विशिष्ट नंबर होता है। यह एक साधारण 4-बाइट नंबर था। इसे आईपी एड्रेस कहा जाता है।"
"लेकिन मनुष्यों की याददाश्त कमजोर होती है और उन्हें 2108458776 जैसी किसी चीज़ को याद रखने में परेशानी होती है, इसलिए वे अक्सर प्रत्येक बाइट को अलग-अलग लिखते हैं।"
"यदि हम चार-बाइट संख्या 2108458776 को अलग-अलग बाइट्स में विभाजित करते हैं, तो हमें 125.172.135.24 मिलता है। जैसा कि आपको याद होगा, प्रत्येक बाइट में 8 बिट्स होते हैं और इसमें 0 से 255 तक की संख्याएँ हो सकती हैं।"
"तो, इस तरह हम नंबर लिख रहे हैं?"
"हाँ। यह (मनुष्यों के लिए) चार-बाइट संख्याओं को याद रखना आसान है जब उन्हें इस तरह लिखा जाता है।"
"जैसा कि हुआ, केवल 4 बाइट्स का उपयोग करने के विकल्प ने जल्द ही उन पर एक क्रूर चाल चली। इंटरनेट से जुड़े उपकरणों की संख्या इतनी तेज़ी से बढ़ी कि वे जल्द ही संख्या से बाहर हो गए।"
"वे इसके आसपास कैसे पहुंचे?"
"उन्होंने वही किया जो आम तौर पर इंसान करते हैं।"
"वे IP पतों के लिए एक नए मानक के साथ आए और गर्व से इसे IPv6 नाम दिया।"
"एक सामान्य आईपी पते के विपरीत (जिसे आईपीवी 4 कहा जाता है) जो एक अद्वितीय संख्या बनाने के लिए 4 बाइट्स का उपयोग करता है, नया मानक 16 का उपयोग करता है।"
"बस इसके बारे में सोचो, मनुष्य एक सामान्य संख्या (जैसे 2108458776) में 10 अंकों को याद नहीं रख सकते थे, इसलिए उन्हें उन्हें 4 भागों में विभाजित करना पड़ा, लेकिन फिर उन्होंने 16 बाइट्स वाली संख्याओं का उपयोग करने के बारे में सोचा। "
"हाँ, कभी-कभी इंसान अजीब होते हैं।"
"हाँ। इंसान इंसान हैं।"
"उसने कहा, वे अपनी दुर्दशा से बाहर निकले।"
"वे संख्याओं को याद करते-करते थक गए और उन्हें शब्दों से बदलने का फैसला किया।"
"वह कैसे है? क्या आप मुझे एक उदाहरण दे सकते हैं?"
"बिल्कुल, web.mail.com , google.com , new.books.amazon.com , …"
"इस तरह के नाम को डोमेन कहा जाता है।"
"इस इंटरनेट के ठीक से काम करने के लिए, उन्होंने डोमेन नेम सिस्टम (डीएनएस) नामक एक विशेष तालिका बनाई जो प्रत्येक डोमेन नाम के आईपी पते को स्टोर करती है।"
"यह ऐसे काम करता है।"
1) एक उपयोगकर्ता ब्राउज़र में एक पता दर्ज करता है, उदाहरण के लिए, web.mail.com ।
2) ब्राउज़र DNS तक पहुँचता है और IP पता प्राप्त करने के लिए डोमेन नाम का उपयोग करता है।
3) आवश्यक यूआरएल के साथ एक अनुरोध इस आईपी पते पर भेजा जाता है।
"यह बहुत आसान नहीं लगता है।"
"लेकिन इस दृष्टिकोण के कई फायदे हैं:"
" 1) मनुष्यों को उन नामों को याद रखना आसान लगता है जिन्हें मौखिक रूप से व्यक्त किया जा सकता है।"
" 2) डोमेन नामों को एक नाम की शुरुआत में सबडोमेन जोड़कर श्रेणीबद्ध रूप से बनाया जा सकता है। बिल्कुल जावा में एक पैकेज नाम की तरह।"
" 3) यदि आपको वेब सर्वर का आईपी पता बदलने की आवश्यकता है, तो आपको केवल डीएनएस रिकॉर्ड बदलने की आवश्यकता है, और सब कुछ पहले की तरह काम करेगा - उपयोगकर्ताओं को एक नया पता याद रखने की आवश्यकता नहीं है।"
"डीएनएस कुछ इस तरह दिखता है:"
डोमेन नाम | आईपी पता |
---|---|
mail.com | 128.35.36.189 |
web.mail.com | 145.12.17.13 |
new.mail.com | 192.155.15.3 |
Google.com | 92.117.151.100 |
Google.com | 193.168.0.1 |
docs.google.com | 217.12.222.1 |
… |
"समझ में आता है।"
"वैसे भी, एक डोमेन एक कंप्यूटर का नाम है, लेकिन हमें कंप्यूटर की आवश्यकता नहीं है - हमें वह चाहिए जो कंप्यूटर पर है। URL इसी के लिए हैं।"
"प्रारंभ में, URL वास्तव में किसी अन्य कंप्यूटर पर फ़ाइल का लिंक था। उदाहरण के लिए:"
उदाहरण |
---|
http : // info.codegym.cc / user/info/profile.html |
विवरण |
http क्लाइंट-सर्वर संचार के लिए प्रोटोकॉल है info.codegym.cc कंप्यूटर का डोमेन नाम है user/info/profile.html कंप्यूटर पर फ़ाइल का पथ है |
"नेटवर्क के विकास की शुरुआत में, एक वेब सर्वर केवल उन फ़ाइलों की सेवा के लिए एक URL का उपयोग करने में सक्षम था जो वह कहीं संग्रहीत कर रहा था। URL वास्तव में फ़ाइल का एक वैश्विक पथ था: कंप्यूटर का नाम + पथ।"
"बाद में, जब वेब सर्वर ने स्वयं फ़ाइलें उत्पन्न करना शुरू किया, URL थोड़े बदल गए और वेब सर्वर के लिए एक अनुरोध बन गए। अनुरोध पैरामीटर भी जोड़े गए।"
"आज यूआरएल के अंत में फ़ाइल एक्सटेंशन देखना दुर्लभ है।" एक आधुनिक यूआरएल पैरामीटर के साथ एक अद्वितीय लिंक है। वैश्विक फ़ाइल पथ की बजाय विधि कॉल की तरह अधिक।"
"एक उत्कृष्ट आधुनिक URL ऐसा दिखाई देता है:"
यूआरएल पार्सिंग |
---|
http : // codegym.cc / alpha/api/contacts ? उपयोगकर्ता आईडी = 13 और फ़िल्टर = कोई नहीं और पृष्ठ = 3 |
URL के भागों का विवरण |
codegym.cc डोमेन नाम है — इंटरनेट पर एक कंप्यूटर का अद्वितीय नाम (पता)। |
http क्लाइंट-सर्वर संचार के लिए प्रोटोकॉल है |
अल्फा/एपीआई/संपर्क वेब सर्वर अनुरोध या सर्वर पर वेबपृष्ठ के लिए अनुरोध है |
userid=13 और फ़िल्टर=कोई नहीं और पेज=3 अनुरोध पैरामीटर के साथ एक स्ट्रिंग है |
"हाँ, मुझे याद है। आपने मुझे हाल ही में URL के बारे में बताया था।"
"और बंदरगाहों के बारे में भी। आपने एक अपार्टमेंट बिल्डिंग का उदाहरण दिया।"
"मुझे यह बताना बेहतर होगा कि 'http' क्या है। मुझे 'प्रोटोकॉल' हर जगह लिखा हुआ दिखाई देता है, लेकिन मैं स्पष्ट नहीं हूं कि यह क्या है।"
"ठीक है। मैं आपको आगे की हलचल के बिना बताता हूँ।"
" HTTP का मतलब Hyper T ext T ट्रांसपोर्ट P रोटोकॉल है और हाइपरटेक्स्ट ट्रांसफर करने के लिए है। "
"हाइपरटेक्स्ट क्या है?"
"यह एचटीएमएल है।"
"मोटे तौर पर, एक प्रोटोकॉल संचार के लिए नियमों का एक सेट है। यह उन अनुरोधों का वर्णन करता है जिन्हें वेब सर्वर पर भेजा जा सकता है, और किस प्रारूप में, साथ ही वेब सर्वर को कैसे प्रतिक्रिया देनी चाहिए।"
"संक्षेप में, स्थिति यह है। साधारण पाठ फ़ाइलें या, यदि आप चाहें, तो क्लाइंट और सर्वर के बीच बड़ी मात्रा में पाठ भेजे जाते हैं। "
"एक अनुरोध सर्वर पर आता है, और सर्वर प्रत्येक अनुरोध का जवाब देता है।"
"यहां इस तरह के अनुरोध और प्रतिक्रिया के उदाहरण हैं:"
GET alpha/api/contacts HTTP/1.1
Host: codegym.cc
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5
Accept: text/html
Connection: close
GET – request subtype
alpha/api/contacts – request to the web server
HTTP/1.1 – protocol version – HTTP/1.1
Host: codegym.cc – domain name
User-Agent: Mozilla/5… – unique browser name
Accept: text/html – requested document type: HTML
Connection: close – close the server connection after processing the request.
"पहली पंक्ति वास्तविक अनुरोध है। निम्नलिखित अतिरिक्त अनुरोध पैरामीटर हैं, जिन्हें 'हेडर फ़ील्ड' भी कहा जाता है।"
"और यहाँ एक प्रतिक्रिया का एक उदाहरण है:"
HTTP/1.1 200 OK
Date: Wed, 11 Feb 2009 11:20:59 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5wm1
Last-Modified: Wed, 11 Feb 2009 11:20:59 GMT
Content-Language: en
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close
<html><body><a href="http://ample.com/about.html#contacts">Click here</a></body></html>
HTTP/1.1 200 OK - «200 OK» means everything is okay.
Date: Wed, 11 Feb 2009 - Date on which the request was processed
Server: Apache - Name of the web server
X-Powered-By: PHP - The server uses PHP
Last-Modified: Wed, 11 Feb 2009 - The time of the last update of the requested file
Content-Language: en - The language of the file
Content-Type: text/html; charset=utf-8 – This is an HTML-file with UTF-8 encoding
Content-Length: 1234 - The response is 1234 bytes long
Connection: close - The connection will be closed after the request is handled
<html><body><a href="http://ample - The HTML file itself.
"मैं आपका ध्यान दो बातों की ओर आकर्षित करना चाहता हूं:"
"सबसे पहले, कोई फर्क नहीं पड़ता कि आप क्या अनुरोध करते हैं, यह सर्वर के लिए फ़ाइल अनुरोध जैसा दिखता है। इससे कोई फर्क नहीं पड़ता कि फ़ाइल सर्वर पर है या सर्वर अनुरोध के जवाब में इसे उत्पन्न करता है।"
"दूसरा, फ़ाइल स्वयं HTTP प्रतिक्रिया के हिस्से के रूप में भेजी जाती है । दूसरे शब्दों में, हम सर्वर की प्रतिक्रिया की शुरुआत में कुछ अतिरिक्त डेटा देखते हैं, और फिर फ़ाइल का मुख्य भाग परोसा जा रहा है। "
"कितना दिलचस्प है! मुझे यकीन नहीं है कि मैं सब कुछ समझ गया हूं। मैं इसे बाद में फिर से पढ़ूंगा।"
"ओह, मैं आपको एक और छोटी, लेकिन दिलचस्प चीज़ के बारे में बताना चाहता हूँ: कुकीज़।"
"वे क्या हैं?"
"HTTP प्रोटोकॉल के अनुसार, कुकीज़ जानकारी के छोटे टुकड़े हैं जो सर्वर क्लाइंट को क्लाइंट पर स्टोरेज के लिए भेजता है। और बाद के अनुरोधों के हिस्से के रूप में उन्हें सर्वर पर वापस भेज दिया जाता है। "
"और इसका क्या मतलब है?"
"मान लें कि कोई उपयोगकर्ता किसी वेबसाइट के होम पेज पर साइन इन करता है। सर्वर इस उपयोगकर्ता के लिए सर्वर पर एक सत्र वस्तु बनाता है, और एक अद्वितीय सत्र संख्या क्लाइंट को कुकी के रूप में भेजी जाती है। क्लाइंट से अगले अनुरोध के दौरान सर्वर, यह सत्र संख्या, अन्य कुकीज़ के साथ, सर्वर पर वापस भेजी जाएगी। इसका मतलब है कि सर्वर उस उपयोगकर्ता को पहचान सकता है जिसने नया अनुरोध भेजा है।"
"बहुत दिलचस्प!"
"हाँ। जब आप अपने स्वयं के सर्वलेट्स लिखते हैं, तो हम इस विषय पर करीब से नज़र डालेंगे। लेकिन अभी के लिए, आइए एक विराम लेते हैं।"
"आप जो भी कहते हैं।"
GO TO FULL VERSION