2012-10-04 29 views
14

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

+0

अंतर एक कार और इंजन के बीच के अंतर के समान है। टेलनेट ** ** को टीसीपी सॉकेट का उपयोग करके कार्यान्वित किया जा सकता है, जैसे किसी कार को एक विशिष्ट प्रकार के इंजन का उपयोग करके बनाया जा सकता है। – wroniasty

उत्तर

19

टेलनेट संचार चैनल के बारे में नियंत्रण जानकारी पास करने का एक तरीका है। यह लाइन-बफरिंग, कैरेक्टर इको इत्यादि को परिभाषित करता है, और कनेक्शन शुरू होने पर (और, दुर्लभ मौकों पर, सत्र के दौरान) इच्छा/wont/do/dont संदेशों की एक श्रृंखला के माध्यम से किया जाता है।

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

जब टेलनेट प्रोग्राम कनेक्ट होता है, तो यह आम तौर पर प्रतिक्रिया देने से पहले इन नियंत्रण संदेशों के लिए सुनता है और इसलिए टीसीपी/सॉकेट कनेक्शन के साथ काम करेगा जो वास्तव में टेलनेट प्रोटोकॉल का उपयोग नहीं करते हैं, जो एक साधारण कच्चे पाइप पर वापस आते हैं। सर्वर सभी वर्ण इको, लाइन बफरिंग, आदि करना चाहिए

तो अपने मामले में, सर्वर संभावना नहीं टेलनेट भागने दृश्यों के साथ एक कच्चे टीसीपी धारा उपयोग कर रहा है और इस तरह वहाँ कोई अंतर नहीं है।

+0

पायथन उस तरह से शानदार है। एक टेलनेटलिब है। – Pradyot

+0

@Brian_White, क्या आप "एक साधारण कच्चे पाइप पर वापस जाने" के लिए एक दस्तावेज़ संदर्भ प्रदान कर सकते हैं? –

+0

मुझे यकीन नहीं है कि यह किसी भी आरएफसी का हिस्सा है। यह बयान मेरे अनुभव से 'टेलनेट' क्लाइंट लिखने और मौजूदा ग्राहकों के व्यवहार की तुलना में आता है, इसलिए "सामान्य" क्वालीफायर। बेशक, यह पूरी तरह कच्चा नहीं होगा क्योंकि 'आईएसी' चरित्र सीधे पारित नहीं किया जा सकता है लेकिन आमतौर पर कंसोल उपयोगकर्ता इंटरफ़ेस के लिए कोई समस्या नहीं है। आप किसी भी खुले बंदरगाह (उदा। वेब पोर्ट 80) से कनेक्ट करने के लिए 'टेलनेट' का उपयोग कर इसे स्वयं देख सकते हैं और देख सकते हैं कि क्लाइंट द्वारा 'आईएसी' नियंत्रण अनुक्रम नहीं भेजे जाते हैं। –

5

ध्यान रखें कि टेलनेट एक अनुप्रयोग परत प्रोटोकॉल है, जबकि टीसीपी एक परिवहन परत प्रोटोकॉल है। डेटा संचारित करने के लिए टेलनेट टीसीपी का उपयोग करता है। टेलनेट और टीसीपी के बीच यह एक बड़ा मौलिक अंतर है।

देखें:OSI Model wikipedia page

2
टेलनेट पर

Wikipedia page से

... उपयोगकर्ता डेटा में बैंड टेलनेट नियंत्रण जानकारी के साथ बीच-बीच में है ...

तो, करने के लिए अपने प्रश्न का उत्तर दें, हां, टेलनेट कच्चे सॉकेट से अलग है।

RFC 854 टेलनेट प्रोटोकॉल का वर्णन करता है यदि आप इसे कार्यान्वित करने का प्रयास करना चाहते हैं या आप telnetlib का उपयोग कर सकते हैं यदि आप मौजूदा पायथन क्लाइंट पसंद करते हैं।