विंडोज एक्सपी में एमटीयू का क्या उपयोग किया जा रहा है, यह कैसे बताया जाए


21

मैं वास्तव में एक अजीब समस्या से पीड़ित हूं, जहां मुझे यादृच्छिक रूप से "सर्वर से कनेक्शन रीसेट किया गया था" त्रुटियों को वेब पृष्ठों तक पहुंचने की कोशिश करते समय (विंडोज नेटवर्क डायग्नोस्टिक टूल के अनुसार HTTP त्रुटि 12031) - यह वेब पेज की परवाह किए बिना होता है मैं एक्सेस करने की कोशिश कर रहा हूं बाहरी इंटरनेट पर या यहां तक ​​कि अगर यह स्थानीय अपाचे उदाहरण से है जो लोकलहोस्ट पर चल रहा है। यह हमारे स्थानीय नेटवर्क (ईथरनेट, वायरलेस नहीं) पर सभी कंप्यूटरों को प्रभावित करता है, जो सभी विंडोज़ एक्सपी चला रहे हैं।

मुझे यह सुझाव दिया गया है कि यह नेटवर्क ट्रैफ़िक में उपयोग किए जाने वाले MTU के साथ किया जा सकता है। अगर मैं सबसे बड़े पैकेट का पता लगाने के लिए पिंग टेस्ट करता हूं, जो अनफिटमेंट से गुजर सकता है, तो मैं लोकलहोस्ट को 1492 बाइट्स के पैकेज के साथ पिंग कर सकता हूं (हेडर के लिए फीट बाइट्स?) और मैं 1462 बाइट्स के पैकेज के साथ अपने राउटर को पिंग कर सकता हूं? (जब आप 28 बाइट हेडर शामिल करते हैं तो 1490 बाइट्स होते हैं)। अगर मैं Google की तरह बाहर से कुछ आज़माता और पिंग करता, तो मुझे 1430 (जो हेडर के साथ 1458 है) से बड़ा कुछ भी नहीं मिलता।

मैंने इस एमटीयू सेटिंग के साथ विंडोज एक्सपी रजिस्ट्री को अपडेट करने के लिए निर्देशों के विभिन्न सेटों का पालन करते हुए अपडेट करने की कोशिश की है HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{AdapterID}\MTU। मैंने वैकल्पिक मूल्यों के अंत की कोशिश की है: सबसे स्पष्ट सही मूल्य 1490 लगता है, लेकिन मैंने 1462, 1458, 1430, आदि, आदि की भी कोशिश की है। जब मैं परिवर्तन को प्रभावी बनाने के लिए कंप्यूटर को रिबूट करता हूं, तो यह कुछ मिनट के लिए काम करने लगता है (कुछ के लिए कहना मुश्किल है क्योंकि यह हमेशा सुसंगत के बजाय यादृच्छिक है) लेकिन यह कभी भी लंबे समय तक नहीं रहता है।

प्रारंभ में, जब मैं एक मूल्य के रूप में 1430 कोशिश कर रहा था, ठीक काम करने के कुछ मिनटों के बाद, पिंग टेस्ट के परिणाम 28 बाइट्स में कमी आएंगे - अचानक मुझे लगता है कि मैं केवल Google के माध्यम से 1402 बाइट्स का पैकेज प्राप्त कर सकता हूं। अगर मैंने MTU रजिस्ट्री सेटिंग को 1402 में अपडेट किया, जब मैंने रिबूट किया और कुछ मिनट इंतजार किया, तो यह 1374 होगा, फिर 1346, आदि। नेटवर्क पर अन्य कंप्यूटर अप्रभावित रहे (अभी भी 1430 पर) और एमटीटी सेटिंग को हटाना। रजिस्ट्री से सामान्य (और अभी भी टूटी हुई) चीजों को पुनर्स्थापित करेगा।

जो चीज़ मुझे इस सबका निदान करने में सबसे कठिन लगती है, वह यह है कि यह बताना बहुत कठिन है कि क्या मैं सही रजिस्ट्री सेटिंग के साथ खेल रहा हूँ। तो यह सबसे सरल है, मेरा सवाल होगा: मैं कैसे बता सकता हूं कि एमटीयू सेटिंग विंडोज का उपयोग करने की कोशिश कर रही है?

इसके अलावा, अगर किसी के पास कोई विचार है कि कैसे बताएं कि एमटीयू 28 तक क्यों गिरता रहता है, तो यह भी उपयोगी होगा (जैसे कि कहीं विंडोज लॉग फाइल है जहां यह उस बिंदु पर कुछ लॉग करेगा जहां मूल्य बदलता है?)

अंत में, अगर कोई भी मुझे निश्चित रूप से बता सकता है कि कैसे बताएं कि एमटीयू सेटिंग मुझे क्या उपयोग करने की कोशिश करनी चाहिए, तो यह बहुत अच्छा होगा!


एफडब्ल्यूआईडब्ल्यू, अंत में यह एक डोडी फोन लाइन थी जो समस्या थी। जब मैंने एक फोन में प्लग लगाया तो कोई डायल टोन नहीं था।
अयर्जर्स

जवाबों:


58

विंडोज 7, विंडोज विस्टा और विंडोज एक्सपी के लिए, विभिन्न इंटरफेस के लिए एमटीयू विंडोज का उपयोग करके ही उपलब्ध है netsh

विंडोज 7, विंडोज विस्टा

कमांड प्रॉम्प्ट से विंडोज 7 या विंडोज विस्टा पर वर्तमान एमटीयू दिखाने के लिए :

C:\Users\Ian>netsh interface ipv6 show subinterfaces

       MTU  MediaSenseState   Bytes In  Bytes Out  Interface
----------  ---------------  ---------  ---------  -------------
      1280                1   24321220    6455865  Local Area Connection
4294967295                1          0    1060111  Loopback Pseudo-Interface 1
      1280                5          0          0  isatap.newland.com
      1280                5          0          0  6TO4 Adapter

और IPv4 इंटरफेस के लिए:

C:\Users\Ian>netsh interface ipv4 show subinterfaces

       MTU  MediaSenseState   Bytes In  Bytes Out  Interface
----------  ---------------  ---------  ---------  -------------
      1500                1  146289608   29200474  Local Area Connection
4294967295                1          0      54933  Loopback Pseudo-Interface 1

नोट: इस उदाहरण में मेरे लोकल एरिया कनेक्शन IPv6 इंटरफ़ेस में इतनी कम MTU (1280) है क्योंकि मैं IPv6 कनेक्टिविटी प्राप्त करने के लिए एक सुरंग सेवा का उपयोग कर रहा हूं ।

आप अपने MTU (विंडोज 7, विंडोज विस्टा) को भी बदल सकते हैं । एक उन्नत कमांड प्रॉम्प्ट से:

>netsh interface ipv4 set subinterface "Local Area Connection" mtu=1492 store=persistent
Ok.

विंडोज 7 सर्विस पैक 1 के साथ परीक्षण किया गया

विंडोज एक्स पी

netshWindows XP के लिए वाक्य रचना थोड़ा अलग है:

C:\Users\Ian>netsh interface ip show interface

Index:                                  1
User-friendly Name:                     Loopback
Type:                                   Loopback
MTU:                                    32767
Physical Address:                       

Index:                                  2
User-friendly Name:                     Local Area Connection
Type:                                   Etherenet
MTU:                                    1500
Physical Address:                       00-03-FF-D9-28-B7

नोट: Windows XP के लिए आवश्यक है कि रूटिंग और रिमोट एक्सेस सेवा को एक इंटरफेस के बारे में विवरण देखने से पहले शुरू किया जाए (MTU सहित):

C:\Users\Ian>net start remoteaccesss

विंडोज एक्सपी एमटीयू सेटिंग को भीतर से बदलने का एक तरीका प्रदान नहीं करता है netsh। उसके लिए आप कर सकते हैं:

Windows XP सर्विस पैक 3 के साथ परीक्षण किया गया

यह भी देखें


MTU क्या है, 28 बाइट्स कहां से आ रही है, इस पर लघु चर्चा।

आपके नेटवर्क कार्ड (ईथरनेट) का अधिकतम पैकेट आकार है 1,500 bytes:

+---------+
| 1500    |
| byte    |
| payload |
|         |
|         |
|         |
+---------+

टीसीपी / आईपी के आईपी ​​हिस्से में 20 बाइट हेडर (झंडे के 12 बाइट्स, स्रोत आईपी पते के लिए 4 बाइट्स, गंतव्य आईपी पते के लिए 4 बाइट्स) की आवश्यकता होती है। यह पैकेट में उपलब्ध कम जगह छोड़ता है:

+------------------------+
| 12 bytes control flags | \
| 4 byte from address    | |- IP header: 20 bytes
| 4 byte to address      | /
|------------------------|
| 1480 byte payload      |
|                        |
|                        |
|                        |
+------------------------+

अब एक ICMP (पिंग) पैकेट में 8-बाइट हैडर (1 बाइट type, 1 बाइट code, 2 बाइट checksum, 4 बाइट अतिरिक्त डेटा) है:

+------------------------+
| 12 bytes control flags | \
| 4 byte from address    | |
| 4 byte to address      | |- IP and ICMP header: 28 bytes
|------------------------| |
| 8 byte ICMP header     | /
|------------------------|
| 1472 byte payload      |
|                        |
|                        |
|                        |
+------------------------+

यही कारण है कि "लापता" 28 बाइट्स है - यह एक पिंग पैकेट भेजने के लिए आवश्यक हेडर का आकार है।

जब आप पिंग पैकेट भेजते हैं, तो आप निर्दिष्ट कर सकते हैं कि आप कितना अतिरिक्त पेलोड डेटा शामिल करना चाहते हैं। इस मामले में, यदि आप सभी 1472 बाइट्स शामिल करते हैं:

>ping -l 1472 obsidian

फिर परिणामी ईथरनेट पैकेट गलफड़ों से भरा होगा। 1500 बाइट पैकेट के हर आखिरी बाइट को भरना होगा:

+------------------------+
| 12 bytes control flags | \
| 4 byte from address    | |
| 4 byte to address      | |- IP and ICMP header: 28 bytes
|------------------------| |
| 8 byte ICMP header     | /
|------------------------|
|........................|
|........................|
|. 1472 bytes of junk....|
|........................|
|........................|
|........................|
|........................|
+------------------------+

यदि आप एक और बाइट भेजने की कोशिश करते हैं

>ping -l 1473 obsidian

नेटवर्क को 1501 बाइट पैकेट को कई पैकेट में बदलना होगा:

Packet 1 of 2
+------------------------+
| 20 bytes control flags | \
| 4 byte from address    | |
| 4 byte to address      | |- IP and ICMP header: 28 bytes
|------------------------| |
| 8 byte ICMP header     | /
|------------------------|
|........................|
|........................|
|..1472 bytes of payload.|
|........................|
|........................|
|........................|
|........................|
+------------------------+

Packet 2 of 2
+------------------------+
| 20 bytes control flags | \
| 4 byte from address    | |
| 4 byte to address      | |- IP and ICMP header: 28 bytes
|------------------------| |
| 8 byte ICMP header     | /
|------------------------|
|.                       |
| 1 byte of payload      |
|                        |
|                        |
|                        |
|                        |
|                        |
+------------------------+

यह विखंडन पर्दे के पीछे होगा, आदर्श रूप से आपके बिना।

लेकिन आप मतलबी हो सकते हैं, और नेटवर्क को बता सकते हैं कि पैकेट को खंडित होने की अनुमति नहीं है:

>ping -l 1473 -f obsidian

-F झंडा साधन खंड नहीं है । अब जब आप एक पैकेट भेजने की कोशिश करते हैं जो उस नेटवर्क पर फिट नहीं बैठता है जिसे आप त्रुटि प्राप्त करते हैं:

>ping -l 1473 -f obsidian  

Packet needs to be fragmented but DF set.

पैकेट को खंडित करने की आवश्यकता है, लेकिन डोंट फ्रैगमेंट फ्लैग सेट नहीं किया गया था।

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

यही कारण है कि वेब-सर्वर काम नहीं करता है। आप प्रारंभिक छोटे (<1280 बाइट) प्रतिक्रियाएं प्राप्त कर सकते हैं, लेकिन बड़े पैकेट के माध्यम से नहीं मिल सकता है। और वेब-सर्वर के फायरवॉल गलत हैं, ICMP पैकेट्स को ब्लॉक करते हैं। तो वेब-सर्वर को एहसास नहीं होता कि आपको कभी पैकेट नहीं मिला।

पैकेट के विखंडन आईपीवी 6 में अनुमति नहीं है, हर कोई कर रहा है के लिए आवश्यक (सही) की अनुमति देने के ICMP MTU खोज पैकेट के लिए।


8

@ मुझे यकीन नहीं है कि netshवास्तव में वर्तमान में उपयोग किए जाने वाले एमटीयू से पता चलता है। मेरे Windows XP प्रो SP3 मशीन पर, मैंने निष्पादित किया netsh interface ip show interfaceऔर इसने संबंधित इंटरफ़ेस के लिए MTU मान की सूचना दी 1500। मैंने तब निम्न रजिस्ट्री कुंजियाँ जोड़ीं:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\EnablePMTUDiscovery
    value: 0

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{ID}\MTU 
    value: various (e.g. 1200)

Microsoft का कहना है कि EnablePMTUDiscovery0 पर सेट करना MTU से 576 पर सेट होगा।

स्थापना MTUरजिस्ट्री प्रविष्टि MTU मैन्युअल सेट। मैंने MTUप्रविष्टि के लिए कई मूल्यों की कोशिश की (हर बार रिबूट करना)।

दोनों मामलों में - पहली प्रविष्टि को जोड़ना, फिर दूसरी प्रविष्टि - फिर netshभी एमटीयू को 1500 के रूप में रिपोर्ट किया गया। पिंग की पुष्टि के साथ परीक्षण (या कम से कम सुझाव दिया गया) कि रजिस्ट्री में कॉन्फ़िगर किया गया एमटीयू मूल्य वास्तव में उपयोग किया जा रहा था।

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

मुझे यकीन नहीं है कि KB283165 MTU को बदलने के लिए सही निर्देश है। केवल Windows PPPoE क्लाइंट को चलाने के दौरान क्या वे निर्देश प्रासंगिक नहीं हैं? यदि राउटर के माध्यम से इंटरनेट से कनेक्ट हो रहा है, जहां राउटर PPPoE क्लाइंट है (जैसा कि मेरे मामले में है), तो वे निर्देश प्रासंगिक नहीं होंगे, है ना?

मेरे द्वारा निर्देशों का पालन किया गया, जिसने मुझे रजिस्ट्री में उपरोक्त परिवर्तन करने के लिए प्रेरित किया, वे KB900926 में थे : 576 से कम के MTU आकार (तरीके 2 और 3) के साथ WAN लिंक के लिए अनुशंसित टीसीपी / आईपी सेटिंग्स


@Ian द्वारा संपादित करें

लगता है आप ठीक कह रहे हैं। 1,200 के लिए कॉन्फ़िगर करें, लेकिन netshरिपोर्ट 1500

यहाँ छवि विवरण दर्ज करें

>ping -l 1173 -f obsidian

Packet needs to be fragmented but DF set.

इसलिए मुझे लगता है कि मूल प्रश्न का उत्तर यह है कि विंडोज एक्सपी पर आपको सबसे बड़ा पैकेट जिसे आप भेज सकते हैं उसे खोजने के लिए डोन्ट फ़्लैग फ्लैग के साथ ट्रायल-एंड-एरर का उपयोग करना होगा। फिर आपके पास आपका एमटीयू है।


2

आप परीक्षण और त्रुटि दृष्टिकोण के साथ पिंग का उपयोग करके एमटीयू पा सकते हैं:

ping <address> -f -l nnnn

पिंग :

-f: निर्दिष्ट करता है कि इको अनुरोध संदेशों को आईपी हेडर में 1. सेट में फ्रागमेंट ध्वज के साथ नहीं भेजा जाता है। इको अनुरोध संदेश गंतव्य के मार्ग में राउटर द्वारा खंडित नहीं किया जा सकता है। यह पैरामीटर समस्या निवारण पथ अधिकतम ट्रांसमिशन यूनिट (PMTU) समस्याओं के लिए उपयोगी है।

-l आकार: भेजे गए संदेशों में इको अनुरोध संदेशों में डेटा फ़ील्ड की लंबाई, बाइट्स में निर्दिष्ट करता है। डिफ़ॉल्ट 32 है। अधिकतम आकार 65,527 है।

आपको "पैकेट के टुकड़े होने की जरूरत है लेकिन DF सेट" संदेश जब लंबाई बहुत बड़ा है।


यह वही है जो मैं ऊपर कर रहा था जब मैंने "द पिंग टेस्ट" का उल्लेख किया था
andygeers

1

एडॉप्टर देखें :

AdapterWatch आपके नेटवर्क एडेप्टर के बारे में उपयोगी जानकारी प्रदर्शित करता है: IP पते, हार्डवेयर पता, WINS सर्वर, DNS सर्वर, MTU मान, प्राप्त बाइट्स की संख्या, वर्तमान हस्तांतरण की गति, और बहुत कुछ। इसके अलावा, यह आपके स्थानीय कंप्यूटर के लिए सामान्य टीसीपी / आईपी / यूडीपी / आईसीएमपी आँकड़े प्रदर्शित करता है।


1

Microsoft KB314496: विभिन्न नेटवर्क टोपोलॉजी के लिए डिफ़ॉल्ट MTU आकार
आपको सामान्य नेटवर्क सेटअप में MTU कॉन्फ़िगरेशन के साथ खेलने का प्रयास नहीं करना चाहिए।

यहां एक VB कोड संदर्भ हैDrTCP
नामक एक उपकरण भी है :

वैकल्पिक शब्द


रजिस्ट्री में,

  • के लिए जाओ HKLM\Software\Microsoft\Windows NT\CurrentVersion\NetworkCards
  • उस एडाप्टर को खोलें जिसमें आप रुचि रखते हैं
  • ServiceNameस्ट्रिंग की प्रतिलिपि बनाएँ
  • उस तार को खोजो HKLM\System; आप एक NetCfgInstanceIdकुंजी का मिलान करेंगे
  • इससे थोड़ा ऊपर की MaxFrameSizeचाबी होगी (खदान 1514 दिखाता है)

netshकमांड के साथ इसे बदलने का एक तरीका भी है ।

इसके अलावा, अपने पथ MTU डिस्कवरी कॉन्फ़िगरेशन की जाँच करें ।


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