मैं HTTP पोर्ट 80 पर टेलनेट कैसे कर सकता हूं?


16

Google में खोज करने के बाद मुझे पता चला कि हम telnetइसके http पोर्ट के लिए वेब-सर्वर का उपयोग GETकर सकते हैं और एक html पेज को पुनः प्राप्त करने के लिए उपयोग कर सकते हैं।

पूर्व के लिए:

$ telnet web-server-name 80

लेकिन मैं यह नहीं समझ पा रहा हूं कि यह कैसे संभव है?

मैंने सोचा था कि अगर पोर्ट 80 http सर्वर के लिए है, तो पोर्ट 80 केवल httpअनुरोधों के लिए ही सुनेगा । लेकिन यह कैसे मैं कर रहा हूँ telnetएक करने के लिए HTTPबंदरगाह?

नहीं कर रहे हैं telnetऔर HTTPदो अलग अलग प्रोटोकॉल?


2
'नेट' में बेवकूफ बनाने के लिए, netcat ( nc(1)) कमांड अधिक लचीला है। यह एसएसएल / टीएलएस सिफर सेवाओं से जुड़ सकता है, और इसे सर्वर के रूप में भी इस्तेमाल किया जा सकता है और यहां तक ​​कि डेटा को रिले भी किया जा सकता है।
वॉनब्रांड

जवाबों:


25

बधाई हो, आपने नेटवर्किंग लेयर्स के कॉन्सेप्ट में यह समझा दिया है कि पोर्ट और प्रोटोकॉल एक दूसरे से सीधे जुड़े नहीं हैं। जैसा कि अन्य कह रहे हैं, टेलनेट का उपयोग किसी भी टीसीपी पोर्ट से कनेक्ट करने के लिए किया जा सकता है। हालांकि यह समझने के लिए कि यह संभव क्यों है, आपको नेटवर्किंग परतों के बारे में थोड़ा समझने की आवश्यकता है। अगर आपने कभी OSI 7 लेयर मॉडल के बारे में सुना है तो यह वही है जो आपको दूसरे पोर्ट से कनेक्ट करने के लिए टेलनेट का उपयोग करने की अनुमति देता है। हालांकि इंटरनेट पर, वे केवल 4 परतों के साथ खुद को चिंतित करते हैं और इसे इंटरनेट प्रोटोकॉल सूट कहा जाता है। नेटवर्किंग की परतों के बिना, प्रत्येक प्रोग्राम को न केवल अपने स्वयं के प्रोटोकॉल को समझने की आवश्यकता होगी, बल्कि अपनी स्वयं की आईपी एड्रेसिंग योजना और पोर्ट सिस्टम को परिभाषित करना होगा, जिसका अर्थ है कि प्रत्येक राउटर को यह समझने की आवश्यकता होगी कि इन योजनाओं को कैसे रूट किया जाए और विभिन्न प्रोटोकॉल बहुत अधिक होंगे सीखना और निदान करना कठिन है। इसे सीधे शब्दों में कहें, तो इंटरनेट लगभग परतों के बिना काम नहीं करेगा।

आप जिस चीज से संबंधित हैं वह ट्रांसपोर्ट लेयर और एप्लिकेशन लेयर है। ट्रांसपोर्ट लेयर पर हमारे पास टीसीपी और यूडीपी जैसे इंटरनेट प्रोटोकॉल हैं, जिनमें से प्रत्येक पर 1 से 65535 तक पोर्ट संख्या है। एप्लिकेशन लेयर में हमारे पास HTTP, SMTP और DNS जैसे प्रोटोकॉल हैं। आमतौर पर प्रोटोकॉल को परिभाषित करने वाले प्रत्येक इंटरनेट मानक दस्तावेज़ एक डिफ़ॉल्ट टीसीपी या यूडीपी पोर्ट को निर्दिष्ट करता है जिसे प्रोटोकॉल को डिफ़ॉल्ट रूप से उपयोग करना चाहिए। जैसे HTTP के लिए TCP पोर्ट 80, SMTP के लिए TCP पोर्ट 25, DNS के लिए UDP पोर्ट 53 और टेलनेट के लिए TCP पोर्ट 23 है। टेलनेट प्रोग्राम वास्तव में टेलनेट प्रोटोकॉल को बोलता है, जो एक मानक प्रोटोकॉल है, लेकिन वर्तमान मानकों द्वारा ज्यादातर एक प्राचीन। क्योंकि इसके प्रोटोकॉल क्रम 8-बिट वर्णों से बने होते हैं, आप शायद ही कभी खुद को और इसके ज्यादातर पारदर्शी को तब देखते हैं जब HTTP और SMTP जैसे अन्य आधुनिक प्रोटोकॉल के साथ तुलना की जाती है, जो ASCII में मानव दृश्यमान शब्दों का उपयोग करते हैं जैसे GET, POST, HELO, LOGIN। आदि।

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

$ nc www.stackexchange.com 80

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

nc -l 9000 < movie.mp4  (Your friend runs this)

nc friends.computer.hostname 9000 > movie.mp4  (you run this)

और फिर movie.mp4 को बिना किसी लेयर लेयर प्रोटोकॉल (जैसे कि FTP) का उपयोग करके नेटवर्क पर स्थानांतरित किया जाता है। एप्लिकेशन प्रोटोकॉल वास्तव में आपका मित्र आपको बता रहा है कि वे आपकी आज्ञा को चलाने के लिए तैयार हैं।

nc UDP पैकेट और UNIX- डोमेन सॉकेट भी संभाल सकता है। सुनने के लिए इसका उपयोग करना भी दिलचस्प हो सकता है।

nc -l 12345

अब आपके वेब ब्राउजर में http: // localhost: 12345 / और अपने nc सेशन में आपको ब्राउजर की GET / HTTP/1.1रिक्वेस्ट को देखना चाहिए । इस बिंदु पर आप कुछ टाइप कर सकते हैं और दबा सकते हैं Ctrl-Dऔर यह आपके ब्राउज़र में सादे पाठ में दिखना चाहिए (यदि आप HTML दिखाना चाहते हैं, तो आपको इसे उचित एचटीटीपी प्रोटोकॉल प्रतिक्रिया को HTML कोड के बाद वापस भेजना होगा)।

कभी-कभी, जो प्रोग्राम मूल रूप से HTTP जैसे एक प्रोटोकॉल बोलते हैं, वे अन्य पोर्ट्स से कनेक्ट हो सकते हैं जो एक अलग प्रोटोकॉल के लिए हैं। आप आमतौर पर GUI ब्राउज़र में ऐसा नहीं कर सकते क्योंकि उन्होंने उन्हें कुछ पोर्ट से कनेक्ट करने से प्रतिबंधित कर दिया है, लेकिन यदि आप पोर्ट 25 से कनेक्ट करने के लिए कर्ल जैसे प्रोग्राम का उपयोग करते हैं (मेल भेजने के लिए SMTP) तो आप शायद एक दो को देखेंगे प्रोटोकॉल तोड़ने के बारे में त्रुटियाँ।

$ curl yourispsmtpserverhost.com:25
220 yourispsmtpserverhost.com ESMTP Postfix
221 2.7.0 Error: I can break rules, too. Goodbye.

ऐसा इसलिए होता है क्योंकि कर्ल सामान्य रूप से HTTP प्रोटोकॉल बोलता है, इसलिए टीसीपी हैंडशेक स्थापित करने के बाद, यह इस तरह से डेटा भेजना शुरू करता है:

GET / HTTP/1.1
Host: yourispsmtpserverhost.com:25
User-agent: curl

लेकिन एसएमटीपी सर्वर जो उम्मीद कर रहा है वह एसएमटीपी है, जो इस प्रकार है:

HELO myhomecomputername.local

किस बिंदु पर सर्वर अपनी पहचान रेखा वापस भेजता है:

250 yourispsmtpserverhost.com

तो आप देखते हैं कि ऐसा कुछ भी नहीं है जो कर्ल को SMTP सर्वर के साथ ट्रांसपोर्ट लेयर कनेक्शन स्थापित करने से रोकता है, यह सिर्फ प्रोटोकॉल नहीं बोल सकता है। लेकिन आप खुद को टेलनेट या अधिक अधिमानतः nc जैसे प्रोग्राम के साथ प्रोटोकॉल बोल सकते हैं।


curl-vओएस एक्स में वर्बोज़ आउटपुट दिखाने के लिए एक तर्क की आवश्यकता है।
हामिद रोहानी

6

telnet एक उपकरण है जो किसी भी tcp पोर्ट से जुड़ सकता है।

डिफ़ॉल्ट रूप से, यह टेलनेट पोर्ट (23) से जुड़ता है, लेकिन आप इसे http पोर्ट (80) या smtp पोर्ट (25) या इसके बजाय जो भी कनेक्ट करना बता सकते हैं।

आपको यह जानने की आवश्यकता है कि प्रोटोकॉल उस रिमोट पर "कैसे" बोलता है जो उस पोर्ट के लिए सुन रहा है, हालांकि।

उदाहरण के लिए, यदि आप एक वेब साइट के हेडर प्राप्त करना चाहते हैं (दोषी लोगों की सुरक्षा के लिए डोमेन नाम आदि बदल गए हैं):

$ telnet www.example.com 80
Trying xxx.xxx.xxx.xxx...
Connected to www.example.com.
Escape character is '^]'.
HEAD http://www.example.com/ HTTP/1.0

HTTP/1.1 200 OK
Date: Fri, 30 Oct 2015 09:28:58 GMT
Server: Apache/2.4.17 (Debian)
Last-Modified: Sun, 14 Nov 2010 06:30:26 GMT
ETag: "843-494fd75830480"
Accept-Ranges: bytes
Content-Length: 2115
Vary: Accept-Encoding
Connection: close
Content-Type: text/html

Connection closed by foreign host.

HEADलाइन मैं क्या संबंध में लिखा गया है। ध्यान दें कि http प्रोटोकॉल के लिए आपको अपने HEAD या GET के अंत या जो भी अनुरोध हो, इंगित करने के लिए एक खाली लाइन भेजनी होगी। यह HEAD अनुरोध के तुरंत बाद की खाली रेखा है।


3

दोनों प्रोटोकॉल के लिए प्रारंभिक बातचीत पाठ-आदेशों का उपयोग करती है, इसलिए आप कनेक्ट कर सकते हैं और कमांड दर्ज करना शुरू कर सकते हैं। यह SMTP जैसे अन्य पुराने प्रोटोकॉलों के लिए सही है , और टेलनेट लंबे समय से संबंधित सेवाओं के कनेक्शनों का निवारण करने के लिए उपयोग किया जाता है ।

उदाहरण के लिए

प्रोटोकॉल उस बंदरगाह से स्वतंत्र होते हैं जिस पर वे संवाद करते हैं। लगभग सभी कार्यान्वयन किसी भी पोर्ट पर सुनने के लिए कॉन्फ़िगर किए जा सकते हैं।

कुछ प्रोटोकॉल (जैसे HTTPS) बातचीत के लिए टेक्स्ट कमांड का उपयोग नहीं करते हैं। आप (आमतौर पर) उस पोर्ट से कनेक्ट कर सकते हैं जिस पर सर्वर सुनता है, लेकिन कुछ भी उपयोगी नहीं है।


3

आपकी कुछ समझ सही है और कुछ नहीं है। पोर्ट 80 आमतौर पर HTTP के लिए आरक्षित है, लेकिन यह सिर्फ एक सम्मेलन है; कोई भी प्रोग्राम सिस्टम पर किसी भी खुले पोर्ट पर सुन सकता है। यदि कोई वेबसर्वर आपके द्वारा कनेक्ट किए जा रहे सिस्टम पर पोर्ट 80 पर सुन रहा है, तो आपको इसके साथ संवाद करने के लिए HTTP का उपयोग करने की आवश्यकता है।

telnetप्रोटोकॉल बिल्कुल भी नहीं है, यह एक ऐसा कार्यक्रम है जो आपको किसी भी पोर्ट पर किसी भी होस्ट को रॉ टेक्स्ट भेजने की सुविधा देता है। दूरस्थ मेजबान को पता नहीं है कि कौन सा कार्यक्रम इससे जुड़ रहा है; सभी यह देख सकते हैं कि पैकेट को भेजा जा रहा है। कोई भी प्रोग्राम जो पैकेट को भेजता है जो प्रोटोकॉल का पालन करता है रिमोट होस्ट उम्मीद कर रहा है, काम करेगा, इसलिए आप telnetकिसी भी पाठ-आधारित प्रोटोकॉल पर संवाद करने के लिए उपयोग कर सकते हैं ।

आपने कुछ पंक्तियों के साथ भेजा GET /path/to/a/file HTTP/1.1, जो एक मान्य HTTP 1.1 कमांड है और एक अनुरोध के रूप में दिखता है जिसे वेब ब्राउज़र द्वारा भेजा जाएगा, इसलिए यह ठीक काम करता है।


1
telnet है एक प्रोटोकॉल RFC 854 । यह सिर्फ इतना है कि आम telnetग्राहक telnetकनेक्ट होने के अलावा प्रोटोकॉल का उपयोग करने का प्रयास नहीं करते हैं tcp/21। मैन पेज से: "टेलनेट पोर्ट के अलावा अन्य पोर्ट्स से कनेक्ट होने पर, टेलनेट टेलनेट प्रोटोकॉल वार्ताओं का प्रयास नहीं करता है। यह उन सेवाओं से जुड़ना संभव बनाता है जो बिना मेसनेट किए टेलनेट प्रोटोकॉल का समर्थन नहीं करते हैं। प्रोटोकॉल बातचीत द्वारा मजबूर किया जा सकता है। पोर्ट नंबर से पहले पानी का छींटा देना। "
user4556274
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.