2011-06-15 7 views
10

ifconfig 1.2.3.4 mtu 1492क्या एमटीयू संशोधन दोनों दिशाओं को प्रभावित करते हैं?

यह आने वाले, आउटगोइंग पैकेट या दोनों के लिए एमटीयू को 14 9 2 सेट करेगा? मुझे लगता है कि यह केवल आने वाले

+8

यह कैसे प्रोग्रामर विषय से हटकर के रूप में इस सवाल का निशान अद्भुत है । प्रोग्रामिंग में कई चीजों के लिए एमटीयू आकार बहुत महत्वपूर्ण है, और यह जानकर कि यह कैसे काम करता है, और यह ऐसा क्यों काम करता है, मुझे लगता है कि यह बहुत अच्छा है। लेकिन अधिकांश प्रोग्रामर डिजाइन पैटर्न का उपयोग करके अमूर्त सामान लिखते हैं, यह समझने के लिए भी कि सामान कैसे काम करता है। यह प्रश्न सूप बनाने या चिकन बनाने के बारे में नहीं हैं, यह इस बात के बारे में है कि हम प्रोग्रामर रोज़ाना किस तरह से निपटते हैं, यह एक विषय-वस्तु कैसे हो सकता है? –

+0

हॉल ऑफ फ़ेम Vlad – cateof

उत्तर

14

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

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

एक व्यावहारिक उदाहरण के रूप में, एडीएसएल मॉडेम को ईथरनेट से जुड़े कंप्यूटर पर विचार करने पर विचार करें जो एक आईएसपी को पीपीपीओई बोलता है। ईथरनेट 1500 बाइट पेलोड के लिए अनुमति देता है, जिसमें से 8 बाइट पीपीपीओई द्वारा उपयोग किए जाएंगे। अब हम 14 9 2 बाइट्स पर हैं जिन्हें आपके आईएसपी में एक ही पैकेट में डिलीवर किया जा सकता है। यदि आप 1500 बाइट्स का पूर्ण आकार वाला ईथरनेट पेलोड भेजना चाहते थे, तो इसे आपके राउटर द्वारा "खंडित" किया जाएगा और दो पैकेट में विभाजित किया जाएगा (एक 14 9 2 बाइट पेलोड वाला दूसरा, दूसरा 8 बाइट पेलोड वाला होगा।)

समस्या तब आती है जब आप इस कनेक्शन पर अधिक डेटा भेजना चाहते हैं - मान लें कि आप 3000 बाइट्स भेजना चाहते हैं: आपका कंप्यूटर इसे आपके एमटीयू के आधार पर विभाजित करेगा - इस मामले में, 1500 बाइट्स के दो पैकेट प्रत्येक, और उन्हें आपके पास भेजें एडीएसएल मॉडेम जो उन्हें विभाजित करेगा ताकि वह अपने एमटीयू को पूरा कर सके। अब आपके 3000 बाइट डेटा को चार पैकेट में विभाजित किया गया है: दो 14 9 2 बाइट्स के पेलोड के साथ और दो 8 बाइट्स के पेलोड के साथ। यह स्पष्ट रूप से अक्षम है, हमें वास्तव में इस डेटा को भेजने के लिए केवल तीन पैकेट की आवश्यकता है। यदि आपके कंप्यूटर को नेटवर्क के लिए सही एमटीयू के साथ कॉन्फ़िगर किया गया था, तो यह इसे पहले स्थान पर दो पैकेट के रूप में भेजा होगा (दो 14 9 2 बाइट पैकेट और एक 16 बाइट पैकेट।)

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

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

आखिरकार अपने ईथरनेट डिवाइस पर अपना एमटीयू सेट करना आपके एडीएसएल मॉडेम (सही फ्रेम के साथ पुनः प्रेषण करने के लिए कहने से बचने के लिए) से सही आकार के फ्रेम भेजने के लिए वांछनीय है, लेकिन एमएसएस आकार को रिमोट पर भेजने के लिए यह महत्वपूर्ण है टीसीपी कनेक्शन बनाने के दौरान मेजबान।

+0

मैं यह भी जानना चाहूंगा कि एमटीयू वास्तव में अगली हॉप में प्रेषित है या हमेशा आईसीएमपी त्रुटियों का उपयोग करके गणना की जाती है। यदि यह स्पष्ट रूप से प्रेषित होता है, तो इसके लिए किस प्रोटोकॉल का उपयोग किया जाता है? – PeterT

+3

एमटीयू केवल कनेक्शन परत (यानि, ईथरनेट फ्रेम के लिए 1500 बाइट्स) से लिया गया है और फिर आईसीएमपी त्रुटियों (पथ एमटीयू डिस्कवरी) के आधार पर अपडेट किया गया है –

+0

आईसीएमपी खंड-आवश्यक वांछित एमटीयू शामिल हो सकता है। – ninjalj

0

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

+3

यही वह है जो मैं पूछ रहा हूं ... – cateof

10

ifconfig ... mtu <value> इंटरफ़ेस को भेजे गए लेयर 2 पेलोड के लिए एमटीयू सेट करता है, और इस इंटरफ़ेस पर प्राप्त बड़े लेयर 2 पेलोड को अस्वीकार कर देगा। आप ईथरनेट लिंक के दोनों ओर अपने एमटीयू मैच सुनिश्चित करना चाहिए; आप को ethernet broadcast domain में कहीं भी मिस्केटेड एमटीयू मान नहीं होना चाहिए। ध्यान दें कि ईटीरनेट हेडर एमटीयू में शामिल नहीं हैं जो आप सेटिंग कर रहे हैं।

इसके अलावा, ifconfigलिनक्स में के लिए बनाए रखा नहीं गया है और old and deprecated है; दुख की बात है कि लिनक्स वितरण अभी भी इसमें शामिल हैं क्योंकि वे पुराने स्क्रिप्ट को तोड़ने से डरते हैं। लोगों का उपयोग जारी रखने के लिए प्रोत्साहित करने का इसका नकारात्मक प्रभाव पड़ता है। आप आदेशों की iproute2 परिवार का उपयोग किया जाना चाहिए:

[[email protected] ~]$ sudo ip link set mtu 1492 eth0 
[[email protected] ~]$ ip link show eth0 
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1492 qdisc mq state UP qlen 1000 
    link/ether 00:1e:c9:cd:46:c8 brd ff:ff:ff:ff:ff:ff 
[[email protected] ~]$ 
2

बड़े आने वाले पैकेट इंटरफ़ेस MTU आकार के आधार पर छोड़ा जा सकता है।

उदाहरण के लिए, डिफ़ॉल्ट MTU 1500 लिनक्स 2.6 CentOS पर (ईथरनेट नियंत्रक के साथ परीक्षण किया: इंटेल कॉर्पोरेशन 80003ES2LAN ईथरनेट नियंत्रक (कॉपर) (फिरना 01)) जंबो पैकेट> 1504 चला जाता है। Ifconfig में त्रुटियां दिखाई देती हैं और ethtool -S आउटपुट में इसके लिए rx_long_length_errors संकेत हैं। बढ़ती एमटीयू इंगित करता है कि जंबो पैकेट समर्थित होना चाहिए। जब उनके आकार जा रहा है बहुत बड़ा आधार पर पैकेट ड्रॉप करने के लिए सीमा MTU (-4096, -8192, आदि)

Oren पर निर्भर करने के लिए प्रकट होता है

संबंधित मुद्दे

 संबंधित मुद्दे