मैं विंडोज पर टीसीपी भेजें और प्राप्त क्यू आकार कैसे देख सकता हूं?


10

लिनक्स नेटस्टैट कतार आकारों को भेजता और प्राप्त करता है।

मुझे यह जानकारी Windows, विशेष रूप से सर्वर 2003 के तहत कैसे मिलेगी?


क्या आप उस आउटपुट का उदाहरण पेस्ट कर सकते हैं जिसे आप देखना चाहते हैं?
इजी

इस लिंक को देखें। मुझे netstat से Recv-Q और Send-Q कॉलम की आवश्यकता है। linux-ip.net/html/tools-netstat.html

जवाबों:


3

(यह एक मस्तिष्क डंप का एक सा है)

नेटस्टैट स्रोत के कुछ संस्करणों को देखने से, ऐसा लगता है कि आपके द्वारा देखी जा रही जानकारी सीधे कर्नेल (/ proc / net / ...) से सॉर्ट-संबंधित कॉल के माध्यम से निकाली जा रही है, जिसमें विंडोज समतुल्य हैं। यदि आप वास्तव में ऐसा करने के लिए दृढ़ हैं, तो मैं देखूंगा कि यह कैसे नेटस्टैट में पुनर्प्राप्त किया जा रहा है और देखें कि आप क्या पा सकते हैं जो कुछ समकक्ष प्रदान करता है।

ड्राइवर स्तर की जानकारी के लिए आपको शायद ndis.com (नेटवर्क ड्राइवर इंटरफेस स्पेसिफिकेशन) और PCAUSA.com को देखना चाहिए , क्योंकि विंडोज पर इस जानकारी को प्राप्त करने के लिए आपकी सबसे अच्छी जगह होने की संभावना है।

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

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

आप इस संदर्भ में "बैकलॉग" पर कुछ खुदाई कर सकते हैं, लेकिन मैंने जो देखा वह SYN बाढ़ से निपटने के लिए अधिकतम आकार की स्थापना से संबंधित था, वास्तव में यह देखने के साथ नहीं कि वास्तविक बैकलॉग कितना बड़ा था।

यदि आप वास्तव में दृढ़ हैं, तो आप अपने स्वयं के स्तरित सेवा प्रदाता के साथ कुछ करने में सक्षम हो सकते हैं , लेकिन यह एक अजीब और बदसूरत सड़क है जो खतरों से भरा है और मैं इससे दूर रहने का सुझाव देने जा रहा हूं।

अद्यतन: थोड़ा और चारों ओर घूमने के बाद, मुझे निश्चित रूप से लगता है कि आपको NDIS OIDs को देखना चाहिए। आपके लिए सबसे अधिक प्रासंगिक जानकारी ढूँढना आपके, MSDN और TechNet के बीच एक अभ्यास के रूप में शेष है।


3

यह प्रश्न पुराना है लेकिन मैं कुछ जानकारी जोड़ना चाहता था। यह Google पर काफी उच्च खोज परिणाम है।

जहां तक ​​मैं बता सकता हूं कि ऐसा करने का कोई तरीका नहीं है, लेकिन अगर कोई भी अधिक खुदाई कर सकता है और एक वैध विकल्प का पता लगा सकता है जो बहुत सराहना की जाएगी!

जैसा कि @Fencepost ने उनके उत्तर में बताया है, आप NDIS OIDs को क्वेरी करने का प्रयास कर सकते हैं। सबसे अधिक प्रासंगिक NDIS OID मुझे मिला OID_GEN_TRANSMIT_QUEUE_LENGTH

अधिकांश एनडीआईएस ओआईडी को डब्ल्यूएमआई कक्षाओं में मैप किया जाता है, आप उन्हें पावरशेल में सूचीबद्ध कर सकते हैं

Get-WmiObject -Namespace root\wmi -List  | Where-Object {$_.name -Match "MSNdis" } | Sort-Object

लेकिन ट्रांसमिट कतार की लंबाई एक नहीं है।

@ क्रिस जे ने नेटवर्क इंटरफेस \ आउटपुट कतार लंबाई का उल्लेख किया। आप इस मान को कमांड लाइन पर टाइपकर्ता के साथ प्राप्त कर सकते हैं ।

typeperf "\Network Interface(*)\Output Queue Length" -sc 1

लेकिन मान हमेशा 0: http://support.microsoft.com/kb/822226 है

Windows केवल NIC ड्राइवर सॉफ़्टवेयर में इस जानकारी का ट्रैक रखता है, और यह केवल NIC प्रति पंक्तिबद्ध पैकेट है, और जो सॉकेट प्रति पंक्तिबद्ध है, उसके बीच अंतर नहीं करता है।

आप कमांड लाइन पर नेटवर्क डिबगिंग क्या करना चाहते हैं, तो किसी भी काउंटर आप में मिल परफ़ॉर्मेंस का उपयोग कर पूछे जा सकती है typeperf या लकड़हारा


1

आप क्या चाहते हैं, WinSock API फ़ंक्शन कॉल के परिणाम हो सकते हैं getsockopt:

  • SO_RCVBUF कुल प्रति सॉकेट बफर स्थान प्राप्त करने के लिए आरक्षित है। यह SO_MAX_MSG_SIZEटीसीपी प्राप्त विंडो के आकार के अनुरूप नहीं है और जरूरी नहीं है।

  • SO_SNDBUF कुल प्रति सॉकेट बफर स्थान भेजता के लिए आरक्षित है। यह SO_MAX_MSG_SIZEटीसीपी भेजने की खिड़की के आकार से संबंधित नहीं है और जरूरी नहीं है।

समस्या यह है कि उन सॉकेट्स के लिए कहा जा सकता है जिन्हें आप जानते हैं। बाहर से क्वेरी करना मुश्किल लगता है, Sysinternals TcpView टूल पर एक नज़र डालें । मार्क रोसिनोविच वास्तव में एक दरार है और यहां तक ​​कि वह अपने टूल में जानकारी प्रदान नहीं करता है। मुझे पूरा यकीन है कि यदि वह मूल्यों को आसानी से प्राप्त करने का एक साधन होता तो वह एक कॉलम जोड़ देता ...

मुझे लगता है कि कुछ कर्नेल ड्राइवर सिस्टम में ड्रिलिंग करने में मदद कर सकते हैं, लेकिन कोई भी उपलब्ध टूल नहीं मिला। आकार को प्रति सॉकेट बेस पर सेट किया जा सकता है ताकि वैश्विक मूल्यों का कोई अर्थ न हो ...


1

निकटतम चीज़ जो मुझे मिल सकती है वह है प्रदर्शन काउंटर Network Interface\Output Queue Length। यह प्रति-कनेक्शन नहीं है - केवल प्रति-इंटरफ़ेस और केवल आउटबाउंड कतार को कवर करता है (जाहिर है, यह नाम से)।


1

अब, खिड़की के आकार प्रति सॉकेट अलग हैं! प्रति इंटरफ़ेस सेटिंग्स केवल डिफ़ॉल्ट-मानों का प्रतिनिधित्व करती हैं।

मुझे प्रत्येक सॉकेट की विंडो का आकार देखने का कोई तरीका नहीं पता है। सोलारिस में, यह "नेटस्टैट" के साथ देखा जा सकता है।


0

: यहाँ एक नज़र http://support.microsoft.com/kb/224829


1
विशेष रूप से, क्या मैं वहाँ देख रहा हूँ?

विंडोज़ अपने टीसीपी को विंडो आकार प्राप्त करने के लिए विभिन्न एल्गोरिदम का उपयोग करता है; आप रजिस्ट्री कुंजी सेट करके डिफ़ॉल्ट को ओवरराइड कर सकते हैं। यह कार्यक्रम भी आपकी मदद कर सकता है: dslreports.com/drtcp
मासिमो

मैसिमो- आप कतारबद्ध डेटा के साथ विंडो आकार को भ्रमित कर रहे हैं। मुझे विंडो साइज़ में कोई दिलचस्पी नहीं है।

ठीक है माफ़ कर दो। यह जानकारी वैसे भी विंडोज में उपलब्ध नहीं है।
मैसिमो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.