मैंने पुराने Z80 आधारित मशीन के लिए एक एसएमबी सर्वर का विकास शुरू कर दिया है। यह मशीन एक बहुत ही सरल, एमएस-डॉस ऑपरेटिंग सिस्टम की तरह चलती है (कोई मल्टीटास्क, उपयोगकर्ताओं की कोई अवधारणा नहीं, केवल एफएटी फाइल सिस्टम, कोई यूनिकोड नहीं, 8.3 फाइलनाम केवल) और सीमित स्मृति है, इसलिए मेरा पहला विचार केवल एसएमबी कोर प्रोटोकॉल को लागू करना है । मैं टीसीपी परिवहन का उपयोग करूंगा।क्या विंडोज 7 वास्तव में एसएमबी कोर प्रोटोकॉल का समर्थन करता है?
अभी के लिए, मेरे पास सिर्फ एक बहुत छोटा परीक्षण कोड है जो केवल SMB_COM_NEGOTIATE कमांड का जवाब देता है, जो दर्शाता है कि कोर प्रोटोकॉल ("पीसी नेटवर्क प्रोग्राम 1.0") वांछित बोली है। इसका परीक्षण करने के लिए, मैं एक एक्सप्लोरर विंडो खोलकर और एड्रेस बार में "\\<server IP>"
टाइप करके विंडोज 7 मशीन से कनेक्ट करने का प्रयास करता हूं। मैंने वायरशर्क के साथ सत्यापित किया है कि सर्वर बातचीत वार्ता प्राप्त करता है और एक (स्पष्ट रूप से) सही प्रतिक्रिया भेजता है।
समस्या : जैसे ही Windows क्लाइंट प्रतिक्रिया प्राप्त करता है, यह एक सामान्य से पता चलता "संसाधन तक नहीं पहुंच सकता" त्रुटि संदेश (त्रुटि कोड 0x80004005 के साथ) और फिर कुछ नहीं होता (आगे कोई एसएमबी संदेश भेजे जाते हैं) । मैं SMB_COM_TREE_CONNECT या एक समान कमांड प्राप्त करने की अपेक्षा कर रहा था।
मैं सोच रहा था कि शायद विंडोज 7 कोर प्रोटोकॉल का समर्थन नहीं करता है (यह बहुत पुराना है और इसमें किसी भी सुरक्षा सुविधा की कमी है), लेकिन फिर, यह वार्ता अनुरोध में कोर बोली नाम क्यों सूचीबद्ध करता है? शायद मुझे कुछ कदम याद आ रहा है? बातचीत के बाद सर्वर को कोई अतिरिक्त पैकेट भेजना चाहिए?
ग्राहक ओएस विंडोज 7 अंतिम 64 बिट्स है, और यहाँ Wireshark दोनों अनुरोध और मामले किसी में प्रतिक्रिया कुछ भी इस प्रक्रिया में गलत पहचान सकते हैं की उदासीनता हैं:
अनुरोध:
प्रतिक्रिया:
अपडेट: यदि मैं कोर बोली के बजाय एनटी एलएम 0.12 बोली का चयन करता हूं, तो मुझे क्लाइंट से SESSION_SETUP_AND_REQUESTX कमांड प्राप्त होता है। तो जाहिर है ऐसा लगता है कि वास्तव में, मूल प्रोटोकॉल विंडोज 7 द्वारा समर्थित नहीं है। वैसे भी, किसी भी अतिरिक्त जानकारी की सराहना की जाएगी।