Monday, December 31, 2018

HTTP Request Response Model

HTTP Request Response Model


HTTP Request Response Model – HTTP Specification के अनुसार HTTP एक Stateless Request/Response Protocol है जिसके Basic Operations व उन Operations के Execution का क्रम निम्नानुसार होता है-
  1. Web Browser जैसा कोई Client Application, Web Server के HTTP Port जो कि Default रूप से Port 80 होता है, पर एक Socket Open करता है। इसी HTTPPort 80 द्वारा Client Web Browser व Web Server के बीच Connection स्थापित होता है।
  1. फिर इस Connection द्वारा Client Web Browser, 0 या अधिक HTTP Headers, एक Empty Line व किसी Data के साथ एक ASCII Text Request Line को HTTP Port 80 पर Write करता है। Request Writing की इस प्रक्रिया को ही Request Send करना कहते हैं।
  1. फिर Client Web Browser द्वारा HTTP Port 80 पर Opened Socket पर पिछले Step के दौरान Write किए गए HTTP Request को Web Server द्वारा Parse किया जाता है, जिसके अन्तर्गत Request में Specified Resource को Web Server द्वारा Server Computer पर Locate किया जाता है।
  1. यदि Web Server को Request Object में Specified Resource प्राप्त हो जाता है, तो Web Server उस Resource को फिर से Socket पर Write कर देता है तथा एक Status Code के माध्‍यम से Web Browser को इस बात का Instruction देता है कि उसके द्वारा Perform की गई Request का Response क्या रहा।
  1. Web Server द्वारा Opened Socket पर Response के Write करते ही Web Browser उस Response को प्राप्त कर लेता है और जैसे ही Web Browser उस Response को प्राप्त करता है, Web Server उस Opened Server Connection को Close कर देता है।
HTTP Request Model की इस पूरी प्रक्रिया को निम्नानुसार चित्र द्वारा भी Represent किया जा सकता है-
HTTP Request Response Model - Core JSP in Hindi - BccFalna.com
HTTP Request Response Model
इस HTTP Request Model की सबसे महत्वपूर्ण बात ये है कि ये पूरी तरह से Stateless Model होता है। यानी Web Server जब Current Request को Handle करता है, तो उस समय उसे समान Client द्वारा Perform की गई पिछली Request का कोई भी ज्ञान नहीं होता।
ये Protocol मूलत: एक Request व Response तकनीक पर आधारित Protocol है, जहां Request के रूप में Web Browser, Web Server को कहता है कि
      “मुझे xyz.html नाम का Document दे दो।
और Web Server Response के रूप में वह Document Web Browser को Provide करते हुए Status Code के रूप में कहता है कि
      “ठीक है। ये लो“ यानी-
      Web Browser Request   =>  “Please! Give me this document.”
      Web Server Response   => “OK! Here it is.”

Connecting to Web Server

Web Server विभिन्न Client Requests को एक Particular Port Number 80 पर Listen करता है, जो कि HTTP Protocol के लिए Setup किया गया Default Port Number होता है।
हालांकि किसी अन्‍य Port Number पर भी HTTP Protocol को Web Server द्वारा Listen किया जा सकता है, जहां यदि Web Server, Port 80 के अलावा किसी Different Port Number पर HTTP Requests को Listen कर रहा होता है, तो उस स्थिति में Web Server पर Send होने वाले URL में Server Name के बाद एक Colon के साथ Port Number को Specify करना भी जरूरी होता है। जैसे-
      https://www.bccfalna.com/index.php
इस URL द्वारा Web Browser, Web Server से उसindex.php नाम के Document की Request कर रहा है, जो कि www.bccfalna.com नाम के Web Server पर Default HTTP Port 80 के माध्‍यम से उपलब्ध है।
लेकिन यदि यही Web Server, विभिन्न HTTP Request को HTTP Port 8080 पर Listen करता हो, तो उस स्थिति में index.php Document को HTTP Port 8080 से Access करने के लिए Web Browser में Specify किया जाने वाला URL निम्नानुसार होगा-
      https://www.bccfalna.com:8080/index.php
सवाल ये है कि जब Web Server विभिन्न HTTP Requests को Default Port 80 पर Listen कर सकता है, तो किसी अन्‍य Port को Specify करते हुए अलग Port Number पर HTTP Request को क्‍यों Listen करवाया जाए जबकि किसी अन्‍य Port पर Listen करवाने के लिए Web Browser को Colon के साथ Port Number को Specify करना भी जरूरी हो जाता है, जिससे Web Browser के Address Bar में Specify किया जाने वाला URL भी काफी जटिल हो जाता है।
तो इस सवाल का जवाब ये है कि अलग-अलग HTTP Ports का प्रयोग करके हम एक ही Server Computer यानी Host पर Multiple Web Servers Run कर सकते हैं।
उदाहरण के लिए सामान्यत: Windows Operating System पर IIS (Internet Information Service) Web Server Install करने पर Default Port 80, IIS Web Server के लिए Reserve हो जाता है। उस स्थिति में यदि हमें उसी Windows Based Host Computer पर Linux आधारित Web Technologies (PHP, Python, Perl, etc…) के लिए AMPPS, XAMPP या WAMP Server को Run करना हो अथवा JSP/Servlet Development के लिए Apache Tomcat, JBoss, WebLogic Server या कोई अन्‍य Web Server Run करना हो, तो समान Host Machine पर Multiple Web Servers को केवल एक ही स्थिति में Successfully Run किया जा सकता है, जबकि सभी Installed Web Servers, Different Port Number पर Listen करते हों।
सामान्यत: जब Web Browser जैसा कोई Client, Web Server से किसी Service को Access करना चाहता है, तब वह Web Server पर एक HTTP Request Initiate करते हुए किसी Specific Web Server Port पर एक TCP/IP SocketOpen करता है और इसी Socket पर Input व Output Stream Open करता है, जिसके माध्‍यम से Client Web Browser व Web Server के बीच Data का Transaction होता है। इस पूरी प्रक्रिया को हम निम्नानुसार Java Codes द्वारा ज्यादा सरल तरीके से Represent कर सकते हैं-
Socket sock = new Socket ( “www.bccfalna.com”, 80 );
InputStream istream = sock.getInputStream();
OutputStream ostream = sock.getOutputStream();
Web Server पर Socket Open करने के लिए URL व Port Number के रूप में दो Parameters की जरूरत होती है, जिसे या तो Permanently Specify किया जा सकता है अथवा Web Browser जैसे Client से आने वाले Request URL से Extract करके Use किया जा सकता है।
जबकि Output Stream का प्रयोग Web Server पर HTTP Commands Send करने के लिए तथा Input Stream का प्रयोग Web Server द्वारा Returned Response को Read करने के लिए किया जाता है।

Sending HTTP Request to Web Server

जब एक बार Web Server पर Socket Connection Open हो जाता है, उसके बाद Web Browser किसी Document की Request करने के लिए इस Socket पर HTTP Command Write करता है। इस Request के मूलत: चार भाग होते हैं, जहां पहले भाग के अन्तर्गत एक Request Line होती है और इस Request Line के तीन Tokens (Request Method, Request URI, HTTP Version) होते है जो कि आपस में एक Space द्वारा Separated रहते हैं। जैसे-
   GET /index.php HTTP/1.0
इस Request Line Example के तीनों Tokens निम्नानुसार हैं-
Request Method     :       GET
Request URI            :       /index.php
HTTP Version         :       HTTP/1.0
हालांकि HTTP Specification के अन्तर्गत कुल 8 Possible Request Methods को Specify किया गया है, लेकिन मूल रूप से GET व POST को ही सर्वाधिक Use किया जाता है।
दूसरे Token Request URI के रूप में उस Document की Information होती है, जिसके लिए Web Server से Request किया जा रहा है, जो कि हमारे उदाहरण में index.php नाम का Document है।
जबकि तीसरे व अन्तिम Token के रूप में HTTP Specification के उस Highest Level HTTP Version की जानकारी होती है, जिसे Client Web Browser समझता है। सामान्यत: इस Token के अन्तर्गत HTTP/1.0 या HTTP1.1 होता है।
इस Request Line के Just बाद में विभिन्न HTTP Request Headers की जानकारी होती है, जहां प्रत्येक Header एक Key/Value Pair होता है और हर Request Header एक Separate Line में Write होता है, जबकि प्रत्येक Header केKey व Value के बीच Separator के रूप में एक Colon का प्रयोग किया जाता है। अन्तिम Request Header Write करने के बाद अन्त में एक Empty Line Write करना होता है, जिसमें एक Carriage Return व एक Line Feed Instruction मात्र होता है।
यद्धपि यदि HTTP Request में एक भी Request Header न हो, तब भी इस Empty Line को Write करना जरूरी होता है क्‍योंकि ये Empty Line ही Web Server के लिए इस बात का Instruction होता है कि Socket पर Write होने वाले Request में अब कोई Header Information नहीं है।
HTTP Specification में Request व Response दोनों के लिए बहुत सारे Headers को Specify किया गया है, जिनमें से कुछ सर्वाधिक Use होने वाले Headers के बारे में अगले Chapter में काफी विस्तार से Discuss किया गया है तथा जरूरत के अनुसार जब जिस Header को Use करने की जरूरत होगी, उस Header Information को तभी विस्तार से Discuss किया जाएगा।

Accepting HTTP Request by Web Server

जब कोई Client Web Browser, किसी Web Server के Listening Port पर Socket Open करते हुए उसके साथ Connection स्थापित करता है, तो Web Server उसी Listening Port पर Web Browser से आने वाले Request को Accept करते हुए उसे Handle करता है।
ज्यादातर परिस्थितियों में Web Browser से आने वाली Request को Handle करने के लिए Web Server, Host Computer पर एक नया Thread Create करता है, ताकि वह अन्‍य Users द्वारा आने वाली अन्‍य Requests को भी Handle कर सके और Different Users द्वारा Requested Different Documents को समान समय पर Serve कर सके।
यदि आने वाली Request किसी Static Document के लिए हो, तो उस स्थिति में Web Server, Host Computer पर उस Document को Search करके Open करता है और उसके Content को फिर से Client को Response के रूप में Send करने हेतु Opened Socket के Port पर Copy करने की तैयारी करता है।
जबकि यदि आने वाली Request किसी CGI, ASP, PHP, JSP Script या किसी Server Side Program के Execution के लिए हो और Web Server इस तरह की Requests को Process करने हेतु Configured हो, तो उस स्थिति में Web Server इस Request को Fulfill करते हुए Appropriate Server Program को Invoke कर देता है, जो कि उस Request को Response करने के लिए जिम्मेदार होता है।

HTTP Response from Web Server

Web Server, Client Web Browser द्वारा अपने वाली Request को चाहे जिस तरह से Process करे, लेकिन अन्तिम Result के रूप में Web Browser को HTTP Response ही Return होता है और Request की तरह ही Response के भी चार (Status Line, Response Headers, Empty Line and Data) हिस्से होते हैं जहां Status Line स्वयं निम्नानुसार तीन Tokens का बना होता है-
HTTP Version
Client Web Browser द्वारा Supported Highest Version Level की तरह ही ये भी इस बात को Indicate करता है कि Web Server द्वारा HTTP का कौनसा Highest Level Version Supported है।
Response Code
ये एक 3-Digit Numerical Code होता है हो इस बात को Indicate करता है कि Request Successful रहा या Fail हो गया और यदि Fail हो गया तो Fail होने का कारण क्या था।
विभिन्न प्रकार के Most Used Status Codes को अगले Chapter में विस्तार से Discuss किया गया है। जैसे 200एक Status Code है जो Request के Successful होने को Represent करता है।
Optional Response Description
ये Response Code का ही Human Readable Easy Explanation होता है। जैसे OK एक Response Description है जो Request के Successful होने को Represent करता है।
उदाहरण के लिए-
ये Status Line इस बात को Indicate करता है कि User ने जिस Document के लिए Client Web Browser द्वारा Request Perform किया था, वह Request Successful रहा और Requested Document को HTTP/1.0 Version के Protocol के माध्‍यम से Web Browser को Response के रूप में Return कर दिया गया है।
इस Status Line के Just बाद में विभिन्न Response Headers की Information होती है और सभी Headers के बाद अन्त में एक Empty Line होती है, जो कि Headers के अन्त को Indicate करती है। इस Empty Line के बाद वह Response Data होता है, जिसके लिए Web Browser द्वारा Request Perform किया गया था।
ये Response Data सामान्यत: HTML Document या Image Stream होता है और जैसे ही ये Data, Web Browser को Response के रूप में पूरी तरह से Send कर दिया जाता है, Web Server उस Socket Connection को Close कर देता है, जिसे Request Send करते समय Web Browser द्वारा Open किया गया था।

Tuesday, December 11, 2018

Working of HTTP Protocol – Evolution of Web Applications

Working of HTTP Protocol – Evolution of Web Applications


Working of HTTP Protocol – Java आधारित Web Applications Develop करने के बारे में विस्तार से जानने से पहले इस बात को समझना कि तकनीकी रूप से Web किस तरह से काम करता है, एक Web Developer के रूप में हमारे लिए काफी जरूरी व महत्वपूर्ण होता है क्‍योंकि जब तक हम Web की Working यानी कार्यप्रणाली को ठीक से नहीं समझते, तब तक हम उपयोगी व Robust Web Applications Develop नहीं कर सकते। इसलिए इस Chapter में हम Web व उससे सम्बंधित विभिन्न Technologies की कार्यप्रणाली को ही बेहतर तरीके से समझने की कोशिश करेंगे।

Evolution of Web Applications

World Wide Web के सन्दर्भ में एक सबसे महत्वपूर्ण बात ये रही है कि इसे कभी भी Application Environment की तरह विकसित करने के बारे में सोंचा ही नहीं गया था। यानी Web को विकसित करते समय कभी इस बात की कल्पना भी नहीं की गई थी कि कभी इस पर आधारित Applications भी Develop किए जाऐंगे। लेकिन वर्तमान समय में इसे मूलत: E-Commerce Use हेतु ही सर्वाधिक Use किया जाता है जो कि एक प्रकार का Web आधारित Application ही होता है और पुस्तक के इस Section में हम Web के विकास व उसकी कार्यप्रणाली के बारे में ही कुछ Basic ज्ञान प्राप्त करेंगे, ताकि हम Web Applications व उसके Development की प्रक्रिया को ज्यादा बेहतर तरीके से समझ सकें।
World Wide Web जिसे वर्तमान समय में सामान्यत: केवल Web के नाम से ही Refer किया जाता है तथा HTTP (HyperText Transfer Protocol), इन दोनों को 1990 के दौरान CERN नाम की European Laboratory में Tim Berners-Lee नाम के Physicist द्वारा विकसित किया गया था और इस System को मूल रूप से CERN के अन्दर ही विभिन्न वैज्ञानिकों द्वारा एक-दूसरे के Research Work Documents की Sharing करने के लिए Use किया जाता था।
लेकिन 1993 के दौरान जब Internet को Public Use के लिए पूरी तरह से Available करवा दिया गया, तो Mosaic नाम के Web Browser के विकास के साथ ही Web का Commercial Use होना सम्भव हो गया, जिसकी वजह से Web आम लोगों के लिए उपयोगी साबित हो सका और आम लोगों की जरूरतों को पूरा करने के लिए Different प्रकार के Web Applications बनाए जाने की जरूरत पैदा हुई ताकि जो Business पहले पूरी तरह से Offline हुआ करते थे, उन्हें Online किया जा सके और Internet व Web के माध्‍यम से ज्यादा से ज्यादा लोगों तक पहुंचाया जा सके।
Web को Application Environment की तरह Develop करने का विचार समय के साथ लोगों की विभिन्न प्रकार की जरूरतों को पूरा करने की जरूरत के कारण विकसित हुआ क्‍योंकि Internet व Web तक जैसे-जैसे लोगों की पहुंच बढ़ने लगी, लोगों की Internet व Web से सम्बंधित मांग भी बढ़ने लगी। इस मांग को पूरा करने के लिए विभिन्न प्रकार की तकनीकों को विकसित किया जाना जरूरी होता गया और इस मांग की पूर्ति के रूप में Web Server के रूप में सबसे पहली तकनीक विकसित हुई।
इस तकनीक के अन्तर्गत एक ऐसा Environment विकसित किया गया था, जिसकी वजह से User Web Browser जैसे किसी Client Application के माध्‍यम से किसी Static Document के लिए Request Perform करता था और Web Server उस Static Document को Response के रूप में Client Web Browser को Serve कर देता था। इस तरह से Serve किए जाने वाले Document का Content तब तक Change नहीं होता था, जब तक कि कोई Human Author उस Document के Content को Manually Modify करके उसका एक नया Version Create नहीं कर देता था।
Client Web Browser व Web Server के बीच के Static Documents के Transaction से सम्बंधित इस Environment या Architecture को Client-Server Architecture के नाम से जाना जाता है और इस Model को हम निम्नानुसार भी Describe कर सकते हैं-
Working of HTTP Protocol - Evolution of Web Applications - Core JSP in Hindi
Working of HTTP Protocol – Evolution of Web Applications – Core JSP in Hindi
इस Client/Server Architecture में HTTP ही वह Protocol होता था जो Client व Server के बीच Request/Response Cycle को Maintain करते हुए Webpages व विभिन्न प्रकार के अन्‍य Resources जैसे कि Image, Sound, Audio, Video आदि को Client व Server के बीच Transfer करता था और इसीलिए इस HTTP Protocol को सामान्यत:Request/Response Protocol भी कहा जाता था।
Request/Response Cycle के दौरान Web Browser के माध्‍यम से User किसी Document के लिए Web Server से (GET या POST Method के माध्‍यम से) Request करता था और Web Server उस Requested Document को अपने Server Computer पर Search करता था। यदि वह Requested Document, Server Computer पर Physically Exist होता था, तो उस Request के Response के रूप में उस Physical Document को एक Success Status Code के साथ Send करते हुए Client Web Browser की Request को Fulfill कर दिया जाता था।
लेकिन यदि Client Web Browser द्वारा Requested Document, Web Server को Server Computer पर Physically प्राप्‍त नहीं होता था, तो उस स्थिति में भी Web Server, Client Web Browser को Response के रूप में एकFailure Status Code के साथ Error Message Return कर देता था।
चूंकि, HTTP Protocol के माध्‍यम से Response के रूप में Web Server, Client Web Browser को जो Response Send करता था, वह Response सामान्यत: एक HTML Document ही होता था, इसलिए Web Browser की Request को Fulfill करने के लिए Web Server उसे Response के रूप में Server Computer पर पहले से Physically Exist Static Document Send कर रहा था अथवा उस Document के HTML Markups को Dynamically Generate करके Send कर रहा था, इस बात का न तो Web Browser को पता चलता था न ही उसे इस बात की जानकारी रखने की जरूरत होती थी, बल्कि Web Browser को तो केवल इस बात से मतलब होता था कि जिस HTML Document के लिए उसने Web Server पर Request Send किया था, उसके बदले में उसे प्राप्त होने वाला Response Success Status Code के साथ आ रहा था या Failure Status Code के साथ और इस Status Code के आधार पर ही Web Browser, Response के रूप में Web Server से आने वाले HTML Markup Stream को Treat करता था।
हालांकि HTTP Protocol के माध्‍यम से Client/Server Architecture के काम करने का तरीका आज भी यही है। लेकिन HTTP Protocol के Request/Response Cycle की इस प्रकार की Working से उस समय के Developers के दिमाग में ये विचार आया कि जब इस बात से कोई फर्क ही नहीं पडता कि User ने Client Web Browser के माध्‍यम से जिस Document के लिए Request Perform किया है, वह Document, Server Computer पर Physically Exist है या नहीं, तो Requested Document का Static Document की तरह Server Computer पर Physically Exist होना भी जरूरी नहीं है, बल्कि उस Document के HTML Markups को Server Computer द्वारा Programmatically भी Generate किया जा सकता है तथा इस Programmatically Generated HTML Markups को Success Status Code के साथ Client Web Browser को Response के रूप में Send किया जा सकता है।
यही विचार आगे चलकर Server Side Programming Languages के Development का आधार बना क्‍योंकि इन Server Side Programming Languages के माध्‍यम से Client Web Browser की Request को पूरा करने के लिए HTML Markups को Dynamically Generate किया जाना सम्भव हो सकता था। परिणामस्वरूप सबसे पहली Server Side Scripting Languages Perl का विकास किया गया जो कि मूलत: Text-Processing से सम्बंधित Scripting Language था और इसका विकास इसी बात को ध्‍यान में रखते हुए किया गया था कि Client Web Browser को Send किया जाने वाला HTML Markup किस तरह से Server Side द्वारा Dynamically Generate किया जा सके।
HTTP Protocol की उपरोक्तानुसार Discussed Server Side विशेषता के अलावा एक Client-Side विशेषता भी थी, जिसके अन्तर्गत एक User के रूप में हम Client Web Browser के माध्‍यम से Perform की जाने वाली Request के साथ Web Server को URL में Exist Query String द्वारा अथवा Data Stream के रूप में Extra Parameters भी Pass कर सकते थे और Web Server इन Extra Parameters के आधार पर Dynamic तरीके से Different Response Generate कर सकता था।
क्‍योंकि इन Extra Parameters को Server Side Scripting Language द्वारा Server Computer पर Installed किसी Database Server पर एक SQL Query Parameters के रूप में Pass किया जा सकता था, जिसे Execute करके वह Database Server Different Parameters के आधार पर Different Resultsets Generate कर सकता था और इस Generated Resultset को फिर से Server Side Scripting Languages द्वारा Use करते हुए, Web Browser को Response के रूप में Send किए जाने वाले HTML Markups को Dynamically Generate किया जा सकता था।
Read also: Web Browser War
HTTP Protocol के Client-Side से Parameters Send कर सकने की विशेषता के कारण ही HTTPd Web Server का विकास किया गया, जो कि Client Side से आने वाले Parameters के आधार पर Server Side में Installed Database Servers पर Fire की जा सकने वाली SQL Queries Create कर सकता था और इन SQL Queries के आधार पर Generate होने वाले Resultsets को Use करते हुए Response के रूप में Send किए जाने वाले HTML Markupsको Generate कर सकता था।
HTTP Protocol, Server Side Scripting Language (Perl) व Server Side Database से Interaction करते हुए Database आधारित Dynamic Webpages Generate कर सकें, इस हेतु CGI (Common Gateway Interface) Specification को Design करने की जरूरत पड़ी, क्योंकि HTTP, Perl व HTTPd Web Server के Combined रूप को ही CGI के नाम से जाना गया था, जो कि Database आधारित Dynamic Web Applications के Development की शुरूआत बना था।
CGI Programs (Perl व HTTPd Web Server के Combined Form पर आधारित Programs) को किसी Specific प्रकार की Request को Fulfill करते हुए Response करने के लिए Web Server द्वारा Invoke किया जाता था। सामान्यत: ये उन Files या Directories को Access करने से सम्बंधित Requests होते थे, जिनका Extension .cgi होता था।
साथ ही इन Request के साथ Pass होने वाले Parameters Key/value Pair के रूप में तथा Request Headers, Environment Variables के रूप में Web Server पर पहुंचते थे, जहां Web Server का CGI Program इन Parameters व Headers को Application से सम्बंधित Processing Perform करने के लिए उपयोग में ले लेता था।
यानी इन Parameters व Headers के रूप में Web Server पर आने वाले Data को Underlying Database पर SQL Queries में Use कर लिया जाता था, ताकि Request के साथ आने वाले Parameters के आधार पर Underlying Database से Appropriate Resultset Generate किए जा सकें।
फिर Underlying Database से Return होने वाले Resultset को Use करते हुए Response के रूप में Return किए जाने वाले HTML Markups को Generate किया जाता था और अन्त में इस Dynamically Generated HTML Document को Response के रूप में फिर से Client Web Browser को Send कर दिया जाता था। इस पूरी प्रक्रिया को हम निम्न चित्र के रूप में भी Represent कर सकते हैं-
Working of HTTP Protocol - Evolution of Web Applications - Core JSP in Hindi
Working of HTTP Protocol – Evolution of Web Applications – Core JSP in Hindi
हालांकि HTML Markups के रूप में Dynamically HTTP Response Generate करने हेतु CGI काफी सुविधाजनक तकनीक थी लेकिन इस तकनीक की अपनी एक महत्वपूर्ण कमी भी थी, जिसके अन्तर्गत प्रत्येक HTTP Request को Fulfill करने के लिए Web Server एक नया Process Create करता था।
हालांकि जब तक CGI आधारित Website का Traffic कम होता था, तब तक कोई बहुत बड़ी समस्या पैदा नहीं होती थी लेकिन जब Website का Traffic काफी ज्यादा होने लगता था, तब प्रत्येक Request को Fulfill करने के लिए Web Server पर एक नया Process Create होना अपने आप में एक जटिल समस्या के रूप में सामने आने लगता था।
यानी CGI तकनीक पर आधारित Website या Web Application को Large-Scale Application की तरह Develop नहीं किया जा सकता था, क्‍योंकि एक Large-Scale Application को समान समय पर समानान्तर रूप से हजारों लोग एक साथ Use कर रहे हो सकते थे और इस स्थिति में किसी भी समय पर समानान्तर रूप से हजारों Requests को Response करने के लिए Web Server पर हजारों Separate Processes Create हो सकते थे, जिससे Web Server पर काफी ज्यादा Load पडता था तथा इतनी ज्यादा मात्रा की Requests को Handle करने के लिए Web Server के Resources की मात्रा को भी काफी ज्यादा बढ़ाना पडता था, जो कि Economically काफी महंगा होता था।
Read also: What is TCP/IP Protocol
इसलिए CGI तकनीक की इस समस्या के समाधान के रूप में 1997 में Sun Microsystems द्वारा Java Servlet API को Release किया गया और जल्दी ही इस API के आधार पर JSP (Java Server Pages) API को Release किया गया, जिससे Java आधारित Dynamic Web Application Development की तकनीक काफी आसान हो गई।
इन दोनों Related Technologies की वजह से Java Programming Language को उसकी पूर्ण क्षमता के साथ Dynamic Web Applications Develop करने के लिए Use किया जाना सम्भव हो गया था, क्‍योंकि Java अपने आप में एक पूर्ण Programming Language थी जिसके माध्‍यम से सम्पूर्ण Desktop Applications Develop करने हेतु विभिन्न प्रकार की जरूरतों को आसानी से पूरा करने के लिए विभिन्न प्रकार के APIs (Application Programming Interfaces) जैसे कि Database Connectivity, Network Access, Multithreaded Operations आदि को Develop किया गया था और Java Servlet API तथा JSP API के माध्‍यम से इन APIs को बिना कोई Change किए हुए ज्‍यों का त्यों Web Applications Develop करने हेतु भी उपयोग में लिया जा सकता था।
यानी यदि आप Java जानते थे, तो इन दोनों APIs के माध्‍यम से आप बड़ी ही आसानी से अपने Java आधारित Desktop Application Development के ज्ञान को Dynamic Web Applications Develop करने के लिए भी Use कर सकते थे। साथ ही Java Multithreading तकनीक का प्रयोग करते हुए एक Single Process द्वारा Multiple Requests को समानान्तर रूप से Handle करने की क्षमता भी प्राप्त कर सकते थे।
इसीलिए जैसे ही Java Servlet व JSP API को Release किया गया, CGI के स्थान पर Developers, Java को Dynamic Web Applications Develop करने हेतु प्राथमिकता के साथ Use करने लगे और हमें एक Perfect Web Development Model प्राप्त हो सका।
Java आधारित Web Development Architecture को यदि हम एक Simple चित्र के रूप में Represent करें, तो हमारा Representation कुछ निम्नानुसार हो सकता है-

Read also: Configuring IIS for ASP.NET Applications
Working of HTTP Protocol - Evolution of Web Applications - Core JSP in Hindi
Working of HTTP Protocol – Evolution of Web Applications – Core JSP in Hindi
JSP Pages Memory में Exist एक Single Instance के रूप में Operate होते हैं, जबकि Multiple Requests को समानान्तर रूप से Handle करने के लिए एक Single Process में Multiple Java Threads Run हो रहे होते हैं और जैसाकि उपरोक्त चित्र द्वारा हम समझ सकते हैं कि Java Servlet व JSP Pages, दोनों ही तकनीकें Java आधारित Large-Scale Powerful Web Applications Develop करने के लिए J2EE(Java 2 Enterprise Edition) Environment को सम्पूर्णता के साथ Use कर सकते हैं।
हालांकि जब Java Servlet व JSP API को Release किया गया था, तब CGI प्रत्येक Request को Handle करने के लिए Web Server पर एक Separate Process Create करता था, लेकिन वर्तमान समय में FastCGI तकनीक द्वारा Java की तरह ही Multiple Requests को एक ही Process के Multiple Threads द्वारा Handle किया जा सकता है।
इसीलिए वर्तमान समय में भी Perl आधारित CGI तकनीक को Use करते हुए भी Dynamic Web Development किया जाता है। हालांकि इस प्रकार के CGI आधारित Web Development की मात्रा काफी कम है।

Types of Internet Services – Internet Access करने के तरीके

Types of Internet Services – Internet Access करने के तरीके


Types of Internet Services – जब एक User के रूप में हम Internet द्वारा Provide की जाने वाली Services को Use करना चाहते हैं, तब हमें किसी न किसी Internet Service Provider की Internet Service को Use करना होता है जो कि Directly या Indirectly Paid या Free हो सकती है और अलग-अलग प्रकार के आधार पर हमें भिन्न-भिन्न प्रकार का Internet Service प्राप्त हो सकता है।
उदाहरण के लिए यदि हम Broadband Connection Use करते हैं, तो हमें प्राप्त होने वाली Internet Speed 2G/3G/4G या Dialup Connections की तुलना में अलग-अलग होती है और इन भिन्न-भिन्न प्रकार की Speed के लिए किया जाने वाला भुगतान भी अलग-अलग होता है। फिर भी विभिन्न प्रकार के Internet Connections को हम निम्नानुसार कुल 6 भागों में विभाजित कर सकते हैं-
Gateway Access Connection
इस प्रकार के Internet Connection को Level-One प्रकार का Internet Connection भी कहा जाता है। इसके अन्तर्गत एक Network के माध्‍यम से Internet को Access किया जाता है जो कि स्वयं Internet पर नहीं होता। Gateway वास्तव में दो Different प्रकार के Networks को आपसे में Communicate करवाने का काम करता है।
यानी दुनियां भर में विभिन्न प्रकार की Devices हैं, जिन पर विभिन्न प्रकार के Operating Systems (Windows, Linux, Unix, Macintosh, Android, iOS, etc…) Run होते हैं और इन विभिन्न प्रकार की Devices को आपसे में Communicate करवाने के लिए जो Network अपना Role Play करता है, उसे हम Gateway के रूप में Identify करते हैं। लेकिन Gateway के माध्‍यम से Internet को Use करने वाले Users, Internet के एक Limited हिस्से को ही Access करने में सक्षम होते हैं, इसलिए ये Users Internet पर उपलब्ध सभी Tools को Use नहीं कर सकते।
एक Gateway को Use करने वाले सभी Users Internet के किस हिस्से को Access कर सकते हैं और किसे नहीं तथा Internet के किन Tools को Access कर सकते हैं और किसे नहीं, इस बात को पूरी तरह से Gateway Access Provide करने वाला ISP (Internet Service Provider) तय करता है।
VSNL (Videsh Sanchar Nigam Limited), Gateway Access प्रकार के Level-One Internet Connection का सबसे उपयुक्त उदाहरण है क्‍योंकि सम्पूर्ण भारत में Internet को इसी Gateway के माध्‍यम से Use किया जाता है।
Read also: ASP.NET IIS (Internet Information Services) Web Server
अन्‍य शब्दों में कहें तो भारत के सभी Internet Service Provider वास्तव में VSNL के माध्‍यम से ही Internet Service Provide करते हैं। इसलिए VSNL जिस Website या Network को Ban कर दे, सम्पूर्ण भारत में उस Website या Network से Connect नहीं हुआ जा सकता।
Dialup Access
इस प्रकार के Internet Connection को Level-Two प्रकार का Internet Connection भी कहा जाता है। इसके अन्तर्गत हमें एक Dialup Terminal के माध्‍यम से Internet को Access करने की सुविधा प्राप्त होती है। इस प्रकार के Connection में जो Computer System हमें Internet Use करने की सुविधा Provide करता है, उसे “Host” Computer कहा जाता है, जबकि जिस Computer System पर Internet Service को Use किया जाता है, उसे “Client” या “Terminal” Computer के नाम से जाना जाता है।
Client Computer को Host Computer से Internet Access की सुविधा प्राप्त करने के लिए “Modem” नाम की Device का प्रयोग करना पडता है, जो कि Client Computer को ऐसा Feeling Provide करता है, जैसे कि वह Directly Internet से जुडा हुआ हो, जबकि वास्तव में वह एक Host Computer से जुडा होता है और उसके Computer पर आने वाला Internet Service पूरी तरह से Host Computer के माध्‍यम से आता है। अत: इस प्रकार के Internet Connection को “Remote Modem Access” Connection के नाम से भी जाना जाता है।
इस प्रकार के Internet Connection में Client द्वारा Fire किए जाने वाले सभी Internet Commands को Host Computer ही Accept करता है और आगे Internet पर Forward करता है। इसलिए इस प्रकार के Connection में Client Computer एक Dumb Terminal की तरह Act करते हुए Remote Host से Connected रहता है और उसके द्वारा Fire किए गए सभी Actions को Remote Host Computer के Action की तरह Treat किया जाता है।
इस प्रकार के Internet Connections को ही यदि हम आगे और विभाजित करें, तो निम्नानुसार तीन भागों में विभाजित कर सकते हैं-
Read also: Types of Internet Accounts – Shell Account and PPP Account
Shell Connections
इस प्रकार के Connection में User केवल Textual Format में ही Internet को Access कर सकता है। Shell Account नाम के पिछले Section में हमने इसे काफी विस्तार से Discuss किया है।
TCP/IP Connections
वर्तमान समय में Use किए जाने वाले सभी Modern Web Browsers इसी प्रकार के Connections की वजह से Internet की सभी Services को GUI Mode में Access कर पा रहे हैं। इस प्रकार के Connection को भी हमने पिछले Section में PPP Account के रूप में काफी विस्तार से Discuss किया है।
ISDN Connections
Read also: How Internet Works – The Administration of Internet
ISDN (Integrated Services Digital Network) के रूप में हम Dialup Connections के रूप में Internet Services को Digital Phone Lines के माध्‍यम से Access करने की सुविधा प्राप्त करते हैं।
ISDN नाम की Dialup Services हमें Telephone Companies Provide करती हैं हालांकि वर्तमान समय में ये Dialup Services काफी कम लोग Use करते हैं। फिर भी Dialup Services को Use करने के लिए हमें मूलत: निम्न Software व Hardware की जरूरत होती है-
Internet Supported Device (Computer, Smart Phone, Tablet, etc…)
Modem
Landline Telephone Connection
Shell Account or TCP/IP/ISDN Account from ISP
Internet Client Software like Web Browser
Leased Line Connection
इस प्रकार के Internet Connection को Level-Three प्रकार का Internet Connection अथवा Direct-Internet Connection भी कहा जाता है।
इस प्रकार का Internet Connection सबसे अधिक Secure, Dedicated, Fast व सबसे अधिक महंगा होता है। इसलिए इस Connection को Use करते समय हमारा Computer System, Internet Network से High-speed Transmission Lines के माध्‍यम से हर समय Directly Connected रहता है।
DSL Connection
इस प्रकार के Internet Connection को Level-Four प्रकार का Internet Connection भी कहा जाता है और हम अपने Telephone Lines के माध्‍यम से जिस BSNL या MTNL के Broadband Connection को Use करते हैं, वह वास्तव में इसी प्रकार का Connection होता है।
Read also: How to Go on Internet? The Basic Requirements.
ये Connection कुछ हद तक Dialup Connection की तरह ही Telephone Lines के माध्‍यम से Access होता है लेकिन ये Connection DSL (Digital Subscriber Line) द्वारा प्राप्त होता है जो कि एक प्रकार का High Frequency Band होता है। इस प्रकार के Internet Connection की Speed 256kbps से 40 Mbps तक होता है।
Cable Modem Connection
इस प्रकार के Internet Connection को सामान्यत: Telephone Links के माध्‍यम से नहीं बल्कि Cable Modem के माध्‍यम से Access किया जाता है।
Cable Modem एक ऐसा Modem होता है जो हमें हमारे घरों में Television Connection के लिए Use किए जाने वाले Cable के माध्‍यम से Provide किया जाता है। इस प्रकार का Connection वास्तव में एक प्रकार का Network Bridge युक्त Modem होता है, जो कि Radio Frequency Channels के माध्‍यम से Bi-Directional Data Communication की सुविधा Provide करता है।

Read also: Configuring IIS for ASP.NET Applications

Working of HTTP Protocol - Evolution of Web Applications - Core JSP in Hindi
Working of HTTP Protocol – Evolution of Web Applications – Core JSP in Hindi

JSP Pages Memory में Exist एक Single Instance के रूप में Operate होते हैं, जबकि Multiple Requests को समानान्तर रूप से Handle करने के लिए एक Single Process में Multiple Java Threads Run हो रहे होते हैं और जैसाकि उपरोक्त चित्र द्वारा हम समझ सकते हैं कि Java Servlet व JSP Pages, दोनों ही तकनीकें Java आधारित Large-Scale Powerful Web Applications Develop करने के लिए J2EE (Java 2 Enterprise Edition) Environment को सम्पूर्णता के साथ Use कर सकते हैं।

हालांकि जब Java Servlet व JSP API को Release किया गया था, तब CGI प्रत्येक Request को Handle करने के लिए Web Server पर एक Separate Process Create करता था, लेकिन वर्तमान समय में FastCGI तकनीक द्वारा Java की तरह ही Multiple Requests को एक ही Process के Multiple Threads द्वारा Handle किया जा सकता है।

इसीलिए वर्तमान समय में भी Perl आधारित CGI तकनीक को Use करते हुए भी Dynamic Web Development किया जाता है। हालांकि इस प्रकार के CGI आधारित Web Development की मात्रा काफी कम है।

Types of Internet Accounts – Shell Types of Internet Accounts – Shell Account and PPP Account

Types of Internet Accounts – Shell Types of Internet Accounts – Shell Account and PPP Account

Types of Internet Accounts – जब हम Internet को किसी Local Area Group जैसे कि किसी School या College की Computer Lab में अथवा किसी अन्‍य Organization में Use कर रहे होते हैं, तब एक ही Internet Connection को Local Area Networking के माध्‍यम से सभी Computers पर Run करना होता है।
Types of Internet Accounts – जब हम Internet को किसी Local Area Group जैसे कि किसी School या College की Computer Lab में अथवा किसी अन्‍य Organization में Use कर रहे होते हैं, तब एक ही Internet Connection को Local Area Networking के माध्‍यम से सभी Computers पर Run करना होता है।
ऐसे में जिन भी Computers पर Internet Connection को Use करना होता है, उन सभी का आपस में Networking के माध्‍यम से Connected होना जरूरी होता है और इस Networking को कई तरह के Accounts का प्रयोग करते हुए Perform किया जा सकता है, जिनमें से विशेष रूप से Create किए जाने वाले दो Accounts का Description निम्नानुसार हैं-
PPP Account
Computer Networking के अन्तर्गत PPP Account वास्तव में Point-to-Point Protocol को Represent करता है, जिसका प्रयोग दो Nodes(Devices) के बीच Direct Connection Establish करने के लिए किया जाता है। ये Protocol, Connection Establish करने वाले दोनों Devices के बीच Connection Authentication करने, Transmission के दौरान Data को Encrypt करने व Compress करने से सम्बंधित सभी जरूरी कामों को पूरा करता है।
इस PPP Protocol का प्रयोग Serial Cable, Phone Line, Trunk Line, Cellular Telephone, Specialized Radio Links व Fiber Optic Links जैसे विभिन्न प्रकार के Physical Networks में किया जाता है। साथ ही विभिन्न ISPs (Internet Service Providers) द्वारा Customers को Dialup Connections के माध्‍यम से Internet Service Provide करने के लिए भी इस Protocol को Use किया जाता है।
यानी जब User, Dialup Connections के माध्‍यम से Internet से Connect होना चाहता है, तब उसका ISP, Dialup Connection स्थापित करने हेतु उस User को जो Account Provide करता है, उसे PPP Account कहते हैं।
PPP Account के अन्तर्गत इस PPP Protocol को मूलत: दो अन्‍य Protocols Point-to-Point Protocol over Ethernet (PPPoE) व Point-to-Point Protocol over ATM (PPPoA) के रूप में Use किया जाता है, जो कि वास्तव में PPP Protocol की विभिन्न Functionalities को ही Inherit करते हैं।
Read also: How Internet Works – The Administration of Internet
जब हम Fast Internet Connection प्राप्त करना चाहते हैं, तब किसी Internet Service Provider के पास Fast Internet Connection हेतु Registration करते हैं, जिसके परिणामस्वरूप वह Service Provider हमारे Registration को Accept करते हुए हमारे लिए एक नया Account Create करता है, ताकि वह हमारे द्वारा Use किए जाने वाले Internet Services की जानकारी रख सके कि हमने कितना Internet Use किया है और हमारे द्वारा Use किए गए Internet की मात्रा के अनुसार हमें Charge कर सके। इसी Account को वास्तव में PPP Account कहा जाता है।
सामान्यत: हम जो Fast Internet Connection यानी Broadband Service प्राप्त करते हैं, उस Service को BSNL या MTML जैसी Companies हमें DSL (Digital Subscriber Line) के माध्‍यम से उपलब्ध करवाती हैं और क्ैस् के माध्‍यम से आने वाली Internet Service को Use करने हेतु Connection Establish करते समय हमें PPPoE या PPPoA Protocols को Use करना पडता है।
Shell Account
PPP Account की तरह ही हम हमारे ISP के पास Shell Account भी Register कर सकते हैं, जो कि हमें Internet के माध्‍यम से किसी दूरस्थ Remote Computer System से Connection स्थापित करने की सुविधा Provide करता है।
लेकिन Shell Account की सबसे बड़ी कमी ये होती है कि ये पूरी तरह से CUI (Character User Interface) पर आधारित होता है और हम Remote Server पर जो भी Action Perform करना चाहते हैं, उसे Perform करने के लिए हमें Telnet या SSH जैसे किसी Command Line Interface को Use करते हुए किसी न किसी प्रकार का Command लिखकर Perform करना होता है।
Shell Accounts सामान्यत: या तो Low Cost होते हैं या फिर पूरी तरह से Free होते हैं। सामान्यत: जब हम Shell Account के माध्‍यम से Internet से Connection स्थापित करना चाहते हैं, तब हम Internet से Directly Connect नहीं होते बल्कि हम हमारे ISP के विभिन्न Computer Systems में से किसी एक Remote Computer System से Connect होते हैं और उस Remote Computer System के Data को Telnet या SSH जैसे किसी Client Software के माध्‍यम से Access व Manipulate करते हैं।
Read also: Basic Internet Tools
लेकिन उस Remote Computer System पर हम हमारे Client Software का प्रयोग करते हुए Directly Login नहीं होते बल्कि उस Remote Computer पर हमारे लिए हमारे ISP द्वारा एक अलग Account Create किया जाता है जिसका एक Specific Credential यानी Username व Password होता है।
हमारे ISP द्वारा Remote Server पर हमारे लिए Create किए गए Special Account को Shell Account कहा जाता है, जिसके माध्‍यम से हम उस Remote Computer पर Login करके उसके Resources को Access व Manipulate करने की क्षमता प्राप्त करते हैं।
Shell Account को यदि बिल्कुल ही सरल भाषा में समझने की कोशिश करें, तो जब हम हमारे Computer System पर Installed Windows या Linux Operating System में एक नया User Create करते हैं, ताकि एक ही Computer System को एक से ज्यादा Users Different तरीके से Configure व Customize कर सकें, तो प्रत्येक User का एक नया User Account बनता है।
ठीक इसी तरह से हमारे ISP द्वारा भी हमारे लिए किसी Remote Server Computer पर एक नया User Account बनाया जाता है और हम हमारे उस Remote Account के Resources को केवल Command Prompt (जिसे Linux Operating System की भाषा में Shell कहा जाता है।) से ही Access व Manipulate कर सकते हैं, इसलिए Remote Computer पर Create किए गए हमारे Remote Account को Shell Account कहा जाता है।
इस प्रकार से यदि हम PPP Account व Shell Account की तुलना करें, तो दोनों ही Accounts हमें Internet से Connect होने की सुविधा प्राप्त होती है। लेकिन PPP Account को Use करते हुए हम सम्पूर्ण Internet को Web Browsers व अन्‍य GUI (Graphical User Interface) Tools के माध्‍यम से Visually Access व Manipulate कर सकते हैं, जबकि Shell Accounts को Use करने पर हमें हमारा सारा काम विभिन्न प्रकार के Manual Commands लिखते हुए किसी Command Prompt आधारित Shell या Client Program के माध्‍यम से Perform करना पडता है।

How to Go on Internet? The Basic Requirements.

How to Go on Internet? The Basic Requirements.

How to Go on Internet – अभी तक हमने Internet व इसके विभिन्न Aspects के बारे में काफी विस्तार से समझने की कोशिश की जिसके अन्तर्गत हमने ये जाना कि Internet क्या है, इसे किन-किन तरीकों से उपयोग में लिया जाता है, Internet को उपयोग में लेने से सम्बंधित विभिन्न Tools कौन-कौन से हैं, Internet हमें कौन-कौन सी Services Provide करता है और Internet द्वारा Provide की जाने वाली Services के माध्‍यम से हमारा जीवन किस-किस तरह से आसान हो रहा है।
लेकिन अभी तक हमने इस विषय में कोई चर्चा नहीं की कि Internet द्वारा Provide की जाने वाली इन Services को उपयोग में कैसे लें, Internet को उपयोग में लेने के लिए हमें किन-किन चीजों की जरूरत होती है और वे चीजें हमें कौन और कैसे Provide करता है। इसलिए अब हम इसी विषय में उपयुक्त जानकारी प्राप्त करने की कोशिश करेंगे कि Internet से किस प्रकार से व कितने तरीकों से Connect किया जा सकता है।
Basic Requirements
जब एक User के रूप में हम Internet को Use करना चाहते हैं या अन्‍य शब्दों में कहें तो जब हम Internet पर जाना चाहते हैं, तब हमें मूल रूप से कुल तीन चीजों की जरूरत होती है और इन तीनों ही चीजों की जरूरत Compulsory रूप से होती है क्‍योंकि इन तीनों में से किसी एक की भी कमी होने पर हम Internet पर नहीं जा सकते अथवा Internet की सुविधाओं का लाभ नहीं ले सकते। ये तीनों मुख्‍य चीजें अग्रानुसार हैं
Hardware
Hardware के रूप में हम हर उस Device को उपयोग में ले सकते हैं, जो कि Internet से Connect होने में सक्षम हो। क्‍योंकि जब हम Internet से Connect होते हैं, तो वास्तव में हम किसी Device के माध्‍यम से ही Internet का हिस्सा बनते हुए उसे Use करने की क्षमता प्राप्त करते हैं और हमारा Device तभी Internet से Connect हो सकता है, जबकि उसमें Internet से Connect होने की क्षमता हो या उसमें वे Common Minimum Devices Exist हों, जो कि Internet से Connection स्थापित करने के लिए जरूरी होती हैं।
Internet से Connect होने के लिए हमें हमेंशा किसी Computer को ही Use करना पड़े, ऐसा जरूरी नहीं है। बल्कि वर्तमान समय में Internet का उपयोग Computer की तुलना में Smart Phones व Tablets पर ही सर्वाधिक किया जा रहा है क्‍योंकि Smart Phone व Tablets के अन्दर Modem नाम का वह Hardware पहले से Exist होते हैं, जिसके माध्‍यम से Internet से Connection स्थापित किया जाता है।
साथ ही साथ जब हम अपने Desktop Computer System, Laptop, Notebook आदि के माध्‍यम से Internet से Connect होना चाहते हैं, तब हम WI-Fi या Broadband Modem जैसी Devices के माध्‍यम से अपने Computer System को Internet से Connect करते हैं अथवा यदि हम चाहें तो अपने Smart Phone या Tablet को अपने Computer System से Connect करके भी अपने Computer System पर Internet चला सकते हैं।
Read also: Basic Internet Tools
यानी मूल रूप से जब हम अपने किसी Device को Internet से Connect करना चाहते हैं, तब ये जरूरी होता है कि उस Device में Internet से Connect होने से सम्बंधित जरूरी Hardware मौजूद हो। इस Hardware को सामान्यत: Modem के नाम से जाना जाता है क्‍योंकि Modem के माध्‍यम से ही हमारा Device (Smart Phone, Tablet or Computer) Internet पर Connection Establish करने की क्षमता प्राप्त करता है।
वर्तमान समय में लगभग सभी Modern Smart Phone व Tablets जैसी Handheld Devices में Modem पहले से Exist होता है, इसलिए ये Devices Internet से Directly Connection स्थापित करने में सक्षम होती हैं। जबकि सामान्यत: Desktop Computers पर Internet चलाने के लिए हमें Modem नाम की External Device को अलग से Setup या Configure करने की जरूरत पडती है। इन External Modem को सामान्यत: Broadband Connection के लिए ही Use किया जाता है, जबकि कुछ समय पहले तक Internal Models को भी Use किया जाता था, जिसके माध्‍यम से Dialup Connection द्वारा Internet से Connect हुआ जाता था।
चूंकि वर्तमान समय में Broadband Connection काफी सस्ते हो चुके हैं जिनकी Speed Dialup Connections की तुलना में बहुत ही ज्यादा Fast होती है और Internet से Connect होने के लिए Broadband के अलावा भी ढेरों अन्‍य सरल Wireless तरीके जैसे कि 2G Mobile Network, 3G Mobile Network, 4G Mobile Network, Wi-Fi Networks आदि उपलब्ध हैं, इसलिए Dialup Connections जैसी Slow Internet Services का अस्तित्व लगभग पूरी तरह से समाप्त हो चुका है और इसीलिए अब किसी भी Modern Desktop Computer में Dialup Connections के माध्‍यम से Internet से Connect करने हेतु Internal Modem Hardware Use नहीं किया जाता।
यानी Dialup Connections के साथ ही Internal Modems का अस्तित्व भी लगभग पूरी तरह से समाप्त हो चुका है और Dialup Connections के Alternative 2G Wireless Internet Connection को भी अब Smart Phone व Tablet जैसी Devices में Slow Internet Connection के रूप में Use किया जाता है, जबकि 3G Connection को तुलनात्मक रूप से Fast Wireless Internet Service के रूप में Use किया जाने लगा है और जल्दी ही 4G Connection भी Market में उपलब्ध हो गया है, जिसकी Speed 3G Network की तुलना में भी काफी ज्यादा तेज है।
अत: Desktop Computers में Internet चलाने के लिए भी अब Dialup Connections की Internet Service को कोई भी Use नहीं करता। बल्कि यदि हम चाहें तो अपने Smart Phone या Tablet में चलने वाले Internet को ही अपने Desktop Computer में भी चला सकते हैं और जब हम ऐसा करते हैं, तब हमारे Smart Phone या Tablet का Modem ही हमारे Desktop Computer के लिए भी Modem की तरह Use होने लगता है।
Read also: How Internet Works – The Administration of Internet
यानी जरूरी नहीं है कि हम हमारे Desktop Computer में केवल Broadband Modem के माध्‍यम से ही Internet चला सकते हैं। बल्कि वास्तव में Internet से Connect होने के लिए जिस Modem नाम के Hardware की जरूरत होती है, वह Hardware, Smart Phone व Tablets में पहले से ही Exist होता है इसलिए इन Smart Devices को USB Cable या Wi-Fi के माध्‍यम से अपने Desktop Computer से Connect करके हम हमारे Smart Phone या Table के Internal Modem द्वारा अपने Computer System पर भी Internet Connection Establish कर सकते हैं और अपने Computer System पर भी Internet चला सकते हैं।
Software
Hardware की तरह ही Internet द्वारा Provide की जाने वाली सुविधाओं का लाभ प्राप्त करने के लिए हमें उपयुक्त Software की भी जरूरत होती है, क्‍योंकि ये Software ही हमें Internet के माध्‍यम से Email Send या Receive करने, Web Surfing करने, Online Discussion Forums में Participate करने, Online Shopping करने अथवा अन्‍य प्रकार की Internet Related सुविधाओं को Use करने हेतु एक उपयुक्त Interface Provide करते हैं।
Internet द्वारा Provide की जाने वाली विभिन्न सुविधाओं को उपयोग में लेने हेतु Software के रूप में हमें मूल रूप से जिस मुख्‍य Software की जरूरत होती है, वह Web Browser ही होता है क्‍योंकि Web Browser ही Internet पर उपलब्ध विभिन्न प्रकार की Services को Use करने हेतु एक आसान Interface यानी माध्‍यम उपलब्ध करवाता है।
यदि हम हमारे Computer System या Mobile Device को Internet से Connect कर भी लें, लेकिन हमारे Computer System या Mobile Device में Web Browser न हो, तो Internet से Connect होने के बावजूद हम Internet की World Wide Web नाम की सबसे प्रमुख Service को Use नहीं कर सकते।
Web Browser के अलावा कुछ अन्‍य प्रकार के Software भी होते हैं, जो हमें Different प्रकार की Internet सुविधाऐं Provide करते हैं। उदाहरण के लिए Outlook Express नाम का Microsoft द्वारा Provide किया जाने वाला Email Client Software हमें हमारे Computer System पर Emails Send/Receive करने की सुविधा Provide करता है, जो Internet द्वारा Provide की जाने वाली सबसे पुरानी Service है।
Read also: Most used terms related to Web and Internet.
इसी तरह से FTP Client के माध्‍यम से हम किसी File को Internet पर Exist किसी अन्‍य Device या Computer System पर Upload करते हुए Transfer करने की सुविधा प्राप्त करते हैं अथवा व Telnet Clients के माध्‍यम से हम किसी दूरस्थ Remote Computer से Connection स्थापित करने व उसे Access व Manipulate करने की सुविधा प्राप्त करते हैं।
यानी Different Type की जरूरत को पूरा करने के लिए हमें Different Type के Software की जरूरत होती है, लेकिन Internet को Access करने के लिए जिस Software की सर्वाधिक जरूरत होती है और जिसे सर्वाधिक लोग Use करते हैं, वह Software Web Browser ही होता है और वर्तमान समय में मूल रूप से कुल 5 Modern Web Browsers को सबसे Use किया जाता है, जिनके विषय में हमने इसी Chapter के पिछले Sections में काफी विस्तार से Discuss किया है।
ISP – Internet Service Provider
Internet Supported Device व Internet Services को Use करने से सम्बंधित Software होने के बावजूद हम तब तक Internet को Use नहीं कर सकते जब तक कि हमारे पास Internet से Connection स्थापित करने से सम्बंधित Permission न हो और ये Permission हमें जो Company Provide करता है, वह हमारा ISP होता है जो कि सामान्यत: कोई Telephone Company ही होता है।
उदाहरण के लिए BSNL (Bharat Sanchar Nigam Limited) वह Company है जो लगभग सारे भारत में Internet Access करने के लिए Broadband Service Provide करता है। इसी तरह से MTNL (Mahanagar Telephone Nigam Limited) महानगरों में Broadband Internet Service Provide करता है। जबकि Airtel, BSNL, Tata, Reliance, Vodafone, Idea, आदि ऐसी Mobile Companies हैं, जो Wireless तरीके से 2G/3G/4G माध्‍यमों से Internet Services Provide करती हैं।
यानी जब आप अपने Computer System या Smart Phone Device पर Internet Access करना चाहते हैं, तो आपको किसी न किसी Tele Communication Provider कम्पनी से इस Service को Access करने की सुविधा प्राप्त करनी होती है। आपके Device पर आप जिस कम्पनी के माध्‍यम से Internet Connection स्थापित करने की सुविधा प्राप्त करते हैं, वही कम्पनी आपका ISP यानी Internet Service Provider कहलाता है।
Read also: 5 Basic Parts of a Basic Java Program
उदाहरण के लिए मानलो कि आप अपने Mobile Phone पर Internet चलाना चाहते हैं और आपके Mobile Phone में Reliance Jio की SIM है जिसके माध्‍यम से आप अपने Mobile पर Internet Connection Establish करना चाहते हैं। इस स्थिति में आपका Internet Service Provider Reliance Jio होगा। जबकि यदि आपके Mobile Phone में IDEA की SIM हो, तो आपका Internet Service Provider IDEA होगा।

Search Engines – How and Why Developed?

Search Engines – How and Why Developed?


Search Engines को Web Search Engines भी कहा जाता है क्‍योंकि सामान्यत: ये ऐसे Online Software होते हैं, जो World Wide Web पर किसी Information को Search करने का काम करते हैं।
ये Search Engines विभिन्न प्रकार के Word Combinations जिन्हें Keywords कहते हैं, के आधार पर Web पर उपलब्ध विभिन्न प्रकार की Information से सम्बंधित Web Pages का एक Index Create करके अपने Database में Store कर लेते हैं और जब हम उस Particular Information से सम्बंधित Webpage को Search करने के लिए इन Search Engines में किसी Keyword को Use करते हैं, तो ये Search Engines उस Particular Keyword के लिए Store किए गए सभी Indexed Pages के Links की List को Results के रूप में हमारे सामने SERP (Search Engine Result Page) की तरह Display कर देते हैं। Search Engines किसी Searching Operation के Response में SERP पर जो Results Render करते हैं, वे Webpages के Links, Images व Videos आदि का Mixture हो सकते हैं।
Google, Yahoo, Bing जैसे कुछ Modern Search Engines Web पर Upload किए जाने वाले प्रत्येक नए Content को जल्दी से जल्दी Index करने के लिए ऐसे Automated Algorithms आधारित Programs Use करते हैं जिन्हें Web Crawler के नाम से जाना जाता है।
ये Search Engines वास्तव में Search Engine होते हैं, जबकि कुछ अन्‍य प्रकार के Search Engines स्वयं अपने स्तर पर कोई Searching Perform नहीं करते, बल्कि इन्हीं बडे Search Engines द्वारा Search किए जाने वाले Results को अलग तरीके से Render कर देते हैं। इस प्रकार के Search Engines को Meta Engines या Meta Search Engines कहते हैं।
उदाहरण के लिए http://www.webcrawler.com/ व http://www.ask.com/ ऐसे ही Meta Engines है, जो स्वयं अपने स्तर पर कोई Searching Perform नहीं करते, बल्कि जब User इन Meta Engine को Use करते हुए किसी Information की Searching करने के लिए इनमें किसी Keyword को Specify करके Searching करते हैं, तो ये Meta Engines उसी Keyword को Google, Yahoo व Bing पर Fire कर देते हैं व Return होने वाले Results को ही Modified तरीके से Output में Display कर देते है।
Web की शुरूआत से लेकर अब तक कई Search Engines Develop हुए लेकिन वर्तमान समय में Google व Yahoo के रूप में केवल दो ही Search Engines सर्वाधिक Use किए जाते हैं, जहां Yahoo वास्तव में Bing + Yahoo है। यानी Yahoo Search Engine Backend में Microsoft के MSN के Modified Searching Software Bing को ही Use करता है।
जबकि Google व Yahoo के अलावा और भी कुछ Search Engines हैं जो या तो Google व Yahoo के कारण अब पूरी तरह से Use होना बन्द हो गए हैं या फिर कोई विशेष Popular नहीं रह गए हैं। फिर भी कुछ Search Engines निम्नानुसार हैं, जिनके विषय में जानना हमारे लिए Search Engines व Web के विकास को समझने में भी सहायक हैं-

Archie

World Wide Web के विकास के साथ ही जब Web का विस्तार होने लगा और Information को Search करना मुश्किल होने लगा, तो एक ऐसे Online Software की जरूरत महसूस की गई जो World Wide Web के रूप में Internet पर Stored विभिन्न प्रकार की Information की Indexing कर सके, ताकि किसी Specific विषय से सम्बंधित Information को ज्यादा से ज्यादा आसानी व तेज गति से प्राप्त किया जा सके और इस दिशा में काम करते हुए जो सबसे पहला Search Engine बनाया गया था, उसी का नाम Archie है।
ये Search Engine वास्तव में Public Uploaded FTP Sites पर Uploaded सभी Files व Directories की Listing Create करता था और File Names के अनुसार अपने Database में Store कर लेता था। हालांकि Archie स्वयं इन Searchable Contents की Indexing नहीं करता था, क्‍योंकि उस समय Web पर काफी कम Data उपलब्ध थे, इसलिए वे सभी Indexed तरीके से ही Search होते थे।

Infoseek

Infoseek अपने समय का काफी Popular Search Engine था जिसे Steve Kirsch ने 1994 में विकसित किया था। Infoseek को मूलत: Infoseek Corporationद्वारा Develop किया गया था जिसे बाद में The Walt Disney Company द्वारा 1998 में खरीद लिया गया था और बाद में इसी Infoseek की Technology को Go.comनाम का नया Search Engine Develop करने के लिए Use किया गया था। बाद में इस Go.com को Yahoo द्वारा खरीद लिया गया और वर्तमान समय में Infoseek एक पूरी तरह से Dead Search Engine हैं, जिसे कोई Use नहीं करता।
Infoseek पहला Search Engine था जो CPM (Cost Per Mile) के आधार पर Advertising Sell करके अपनी Earning करता था और बाद में इसी Infoseek ने सबसे पहले CPC (Cost Per Click), तथा Popup Ads के माध्‍यम से Advertisers की Advertising करने का तरीका Develop किया था।
Popup को छोडकर CPM व CPC तरीके को वर्तमान समय के सबसे बडे Search Engines Google व Yahoo भी Use करते हैं और ये तरीके ही इन दोनों Search Engines के Online Income का भी सबसे मुख्‍य Source हैं।

Veronica

Veronica नाम के Search Engine को 1992 में Steven Foster व Fred Barre ने Gopher Protocol के लिए Develop किया था और जब तक ये Search Engine Exist था, तब तक ये Constant तरीके से हजारों Gopher Servers के लगभग सभी Menu Items को अपने Database में Update करता था। इसलिए इस Search Engine पर हमेंशा लगभग Latest Information प्राप्त होती थी।
वर्तमान समय में Original Veronica Database उपलब्ध नहीं है क्‍योंकि Gopher Protocol की तरह ही ये भी पूरी तरह से Disappear हो चुका है।
Veronica वास्तव में एक Sentence “Very Easy Rodent Oriented Newide Index to Computer Achieves” का Abbreviation यानी संक्षिप्त रूप था, जिसे FTP के रूप में ही Match करते हुए Searching के लिए तय किया गया था।

इनके अलावा और भी बहुत सारे Search Engines बनाए गए थे जो कि Different प्रकार की जरूरतों को पूरा करते थे लेकिन 1993 तक World Wide Web के लिए एक भी Search Engine नहीं बनाया गया था, हालांकि कई अन्‍य Manual तरीकों से Web पर Exist विभिन्न Sites के Catalog को Manually Maintain किया जाता था। लेकिन क्‍योंकि World Wide Web वास्तव में Hyperlinks पर आधारित था, इसलिए ऐसे Program Create किए जा सकते थे जो विभिन्न Linked Documents की List तैयार कर सकें और उन्हें एक व्‍यवस्थित क्रम Place करते हुए उनकी Indexing कर सकें।

Read also: WP Search Template – WP Search Form
परिणामस्वरूप Web पर उपलब्ध Documents की Indexing करने के लिए सबसे पहला Indexing Program बनाया गया और उसे “Wandex” नाम दिया गया और वर्तमान समय के सभी Search Engines भी मूल रूप से इसी Wandex के Concept पर ही काम करते हुए Webpages की Crawling, Indexing व Searching करते हैं।