विंडोज मशीन पर विंडसर पैकेट प्राप्त करने और प्रसंस्करण की प्रक्रिया क्या है?


20

मैं अपने विंडोज कंप्यूटर पर कुछ ट्रैफिक मॉनिटरिंग के लिए विंडसर का उपयोग करने वाला हूं । इस पर काम करते समय, मैं सोच रहा था कि विंडोज से पहले विंडसरक निम्न स्तर के नेटवर्क पैकेट को कैसे प्रबंधित करता है।

सबसे पहले, मेरे एनआईसी पर एक नेटवर्क इंटरफ़ेस एक पैकेट प्राप्त करता है। एनआईसी तब कुछ प्रारंभिक जांच (सीआरसी, राइट मैक एड्रेस, ... आदि) करता है। यह मानते हुए कि सत्यापन सफल रहा, एनआईसी ने पैकेट को आगे बढ़ाया। लेकिन कैसे और कहां?

मैं समझता हूं कि ड्राइवर एनआईसी और ओएस या किसी अन्य एप्लिकेशन के बीच गोंद हैं। मैं आगे अनुमान लगाता हूं कि विंडोज और विंडशार्क ( WinPcap ?) के लिए एक अलग ड्राइवर है । अन्यथा, Wireshark ईथरनेट फ्रेम प्राप्त करने में सक्षम नहीं होगा । क्या एक ही समय में दो या दो से अधिक एनआईसी चालक सह-अस्तित्व में हैं? एनआईसी कैसे जानता है, किसको उपयोग करना है?


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

(ऐसे प्रायोगिक ऑपरेटिंग सिस्टम हैं जो पैकेट को नेटवर्क कार्ड से सीधे एप्लिकेशन तक पहुंचाने की अनुमति देकर बेहतर-उच्च-गति नेटवर्किंग बेहतर करने का प्रयास करते हैं, लेकिन AFAIK विंडोज ऐसा नहीं कर सकता: आप हमेशा कम से कम NDIS परत से गुजरते हैं।)
zwol

जवाबों:


38

विंडोज में I / O मॉडल घटकों के ढेर पर आधारित है। डेटा को उस स्टैक के विभिन्न घटकों के माध्यम से प्रवाह करना होगा जो भौतिक नेटवर्क कार्ड और डेटा का उपभोग करने वाले एप्लिकेशन के बीच मौजूद है। कभी-कभी वे विभिन्न घटक डेटा का निरीक्षण करते हैं (उदाहरण के लिए एक टीसीपी पैकेट), जैसा कि वे स्टैक के माध्यम से प्रवाह करते हैं, और उस पैकेट की सामग्री के आधार पर, डेटा को बदल दिया जा सकता है, या पैकेट को पूरी तरह से त्याग दिया जा सकता है।

प्रसार का ढेर

यह "नेटवर्क स्टैक" का एक सरलीकृत मॉडल है जो पैकेट से होकर तार से प्रवाहित होता है और इसके विपरीत होता है।

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

विंडोज फ़िल्टरिंग प्लेटफ़ॉर्म

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

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

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

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

NDIS ड्राइवर्स

WinPcap

संदर्भ:

अगली पीढ़ी टीसीपी / आईपी स्टैक विस्टा + में

विंडोज फ़िल्टरिंग प्लेटफार्म आर्किटेक्चर


3
बकाया आरेख। क्या ये कहीं microsoft.com पर पोस्ट किए गए हैं? यदि ऐसा है, तो मैं इधर-उधर झांकना पसंद करूंगा और देखूंगा कि इन के साथ अन्य क्या जानकारी उपलब्ध है।
EEAA

1
एकदम सही जवाब। अच्छी तरह से और आसान समझाया, भयानक दृश्य और स्रोत प्रदान! आपको बहुत - बहुत धन्यवाद!
हांसी

1
+1, उल्लेखनीय है कि एक खुला स्रोत चालक है जो WFP के ऊपर बनाया गया है जो कि WinDivert नामक इस तरह के अनुप्रयोगों को लिखने के लिए तुच्छ बनाता है । मैंने इसके लिए एक .NET रैपर भी लिखा है ।

1
यह ऐसा मामला हुआ करता था, जिसे "लेयर्ड सर्विस प्रोवाइडर" कहा जाता था - जहां आप इंटरसेप्ट कर सकते थे और पैकेट को फिर से लिख सकते थे - क्या उस क्षमता के लिए कुछ प्रतिस्थापन है? क्या यह "फ़िल्टरिंग" एपीआई का हिस्सा है? (ओह रुको, कोई बात नहीं: मैं सिर्फ WinDivert लिंक @TechnikEmpire से देखा और कहा कि यह संभव है।)
davidbak

1
@davidbak हां, WinDivert एक तरह का हाइब्रिड है। डेवलपर्स के लिए कॉलआउट ड्राइवर API का मतलब विशिष्ट ड्राइवरों का निर्माण करना है जो केवल एक पैकेट छोड़ने से परे कुछ भी कर सकते हैं (ड्राइवर की आवश्यकता नहीं है)। WinDivert एक ऐसा चालक है, लेकिन यह सामान्य है, कर्नेल और उपयोगकर्ता मोड में और बाहर पैकेट धक्का और पॉपिंग करके पैकेट तक पूर्ण पहुंच प्रदान करता है।

3

जैसा कि रायन रीस का जवाब कहता है:

एक उदाहरण के रूप में WinPCap, एक चालक के साथ सीधे एनडीआईएस के साथ इंटरफेस करता है, जिसका अर्थ है कि किसी भी फ़िल्टरिंग से पहले ट्रैफ़िक को बाधित करने का मौका है।

और यह एक विवरण है, WinPcap प्रलेखन में, कि कैसे काम करता है


यह रायन के उत्तर को संपादित करने के रूप में बेहतर होता। यह अपने आप में एक जवाब नहीं है।
मोनिका

2
असल में, हाँ, यह है ज्यादा से रयान के जवाब - अपने प्रश्न का उत्तर। सवाल था "विंडसरक कैसे करता है"; रयान का जवाब एक तंत्र के बारे में बहुत सारी जानकारी देता है जो WinPcap (जो कि Wireshark उपयोग करता है) का उपयोग नहीं करता है , इसलिए यह निश्चित रूप से दिलचस्प है, लेकिन मूल प्रश्न के लिए प्रासंगिक नहीं है। लिंक मैं पोस्ट के तरीके का वर्णन WinPcap यह होता है, जो है मूल प्रश्न के लिए प्रासंगिक।

7
हो सकता है कि यदि आपने तृतीय-पक्ष संसाधन से संबंधित मार्ग को उद्धृत और समझाया हो। यदि और कुछ नहीं, केवल लिंक-उत्तर ही उत्तर नहीं है। वह एसई नीति है। आपके सभी उत्तर इस पृष्ठ में जोड़ते हैं, शाब्दिक रूप से, "इस बात का वर्णन है कि इंटरनेट पर रीस का उत्तर कहीं और कैसे काम करता है"
लाइटनेस रेस विथ मोनिका
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.