MTU مخفف عبارت Maximum Transmission Unit میباشد و حداکثر حجم بسته ها به صورت بایت و سرعت ارسال و دریافت آنها را تعیین میکند. برای درک بهتر این که MTU چیست فرض کنید در یک بزرگراه که دارای پل های زیادی است محدودیت ارتفاع تعیین شده باشد در نتیجه کامیون هایی که بیش از مقدار تعیین شده، ارتفاع داشته باشند نمیتوانند از آن بزرگراه عبور کنند.
در داخل شبکه اینترنت وقتی میخواهیم اطلاعاتی را از یک مبدا به مقصدی بفرستیم این اطلاعات به صورت بسته های داده، تکه تکه یا در اصطلاح fragmentation میشوند و این بسته های داده در مسیر خود از مبدا به مقصد از روترهای مختلف با مقدار MTU متفاوت عبور میکنند. اگر اندازه بسته های داده از مقدار MTU، روتر و یا هر جز دیگری از شبکه که میخواهند از آن عبور کنند بیشتر باشد بسته های داده، به اجزای کوچکتری که بزرگتر از MTU روتر نیست تقسیم میشوند، سپس از آن روتر عبور میکنند و به مسیر خود به سمت مقصد مورد نظر ادامه میدهند تا در نهایت به مقصد برسند و در مقصد این بسته های داده دوباره سرهم میشوند.
واحد اندازه گیری MTU، بایت است. یک بایت معادل 8 بیت اطلاعات یعنی 8 عدد صفر و یک است. حداکثر اندازهی MTU برابر با 1500 بایت میباشد.
پکت دادهها چیست؟
تمامی داده های ارسال شده در اینترنت به قطعات کوچک تری تحت عنوان پکت تقسیم میشوند. برای مثال، زمانی که یک صفحه وب از سرور به لپ تاپ کاربر ارسال میشود، داده های تشکیل دهنده صفحه وب به صورت مجموعه ای از پکتها، از طریق اینترنت منتقل میگردند. سپس این پکتها توسط لپ تاپ، به هم متصل شده و صفحه وب را نمایش میدهند.
پکت دادهها دارای دو بخش اصلی است: header و payload. بخش header شامل اطلاعاتی در مورد آدرس مبدا و مقصد پکت میباشد و قسمت payload حاوی محتوای واقعی پکت است. اگر به یک بسته پستی تشبیه کنیم، آدرس روی بسته header نام دارد و خود بسته payload. البته پکتهای ارسالی در دنیای اینترنت، دارای چندین header هستند که توسط پروتکل های مختلف شبکه، ضمیمه شدهاند.
MTU تقریبا همیشه در ارجاع به لایه 3 (لایه شبکه) پکتها مورد استفاده قرار میگیرد یا پکتهایی که از IP (پروتکل اینترنت) استفاده میکنند. MTU پکت ها را به صورت کلی اندازه گیری مینماید، یعنی تمامی header ها و payloadها که شامل IP header و TCP header میباشند که به طور معمول طول آنها تا 40 بایت میتواند باشد.
چه زمانی پکتها به صورت تکه تکه (Fragmented) در میآیند؟
زمانی که دو دستگاه محاسباتی با یکدیگر ارتباط برقرار نموده و اقدام به تبادل پکت ها میکنند، این پکت ها از چندین شبکه عبور میکنند. نه تنها MTU مربوط به این دو دستگاه باید در نظر گرفته شود، بلکه MTU تمامی روترها ،سوییچ ها و سرورهایی که در مسیرعبور آنها قرار دارند نیز باید در نظر گرفته شوند. پکت هایی فراتر از MTU هر نقطه موجود در مسیر انتقال باشند، میبایست به صورت Fragmented (تکه تکه شده) درآیند.
فرض کنید سرور A و کامپیوتر A به هم متصل شدهاند، اما پکت دادههایی که آنها برای یکدیگر ارسال میکنند مجبور هستند از روتر B و روتر C عبور کنند. MTU مربوط به سرور A، کامپیوتر A و روتر B همگی معادل 1500 بایت است و MTU روتر C برابر با 1400 بایت میباشد. در صورتی که سرور A و کامپیوتر A از MTU روتر C مطلع نباشند و پکتی معادل 1500 بایت ارسال کنند، تمامی پکتهای داده آنها توسط روتر B به هنگام انتقال به صورت تکه تکه (Fragmented) در میآیند.
فرایند تکه تکه شدن پکت دادهها MTU
Fragmentation (تکه تکه شدن دادهها) منجر به ایجاد کمی زمان تاخیر و همچنین ناکارآمدی در ارتباطات شبکه میگردد، بنابراین تا حد امکان باید از آن اجتناب کرد. تجهیزات منسوخ شده شبکه ممکن است در برابر حملات DDoS که از Fragmentation سوء استفاده میکنند، آسیبپذیر باشند.
Fragmentation (تکه تکه شدن دادهها) به چه صورت اتفاق میافتد؟
تمامی روترهای شبکه، اندازه هر IP packet دریافتی را با MTU مربوط به روتر بعدی که قرار است پکت را دریافت کند، بررسی مینمایند. چنانچه اندازه پکت بیشتر از MTU روتر بعدی باشد، اولین کاری که روتر انجام میدهد این است که payload (محتوای اصلی پکت) را به دو یا چند پکت تقسیم نموده و به هر یک header مخصوص به خود را اختصاص میدهد. هر پکت دارای هدری است که از پکت اصلی کپی شده؛ به طوری که تمامی پکتها دارای آدرس IP مبدا و مقصد یکسان و همچنین به همراه تغییرات مهم میباشند.
روتر اقدام به ویرایش فیلدهای خاصی در IP header مینماید تا نشان دهد پکتها به صورت تکه تکه (Fragmented) درآمدهاند و میبایست مجددا به هم متصل شوند. در ضمن با این ویرایش تعداد پکتها و همچنین ترتیب قرارگیری آنها نیز نشان داده میشود.
چه زمانی Fragmentation امکان پذیر نیست؟
در برخی موارد خاص پکتها را نمیتوان به قطعات کوچکتر تقسیم نمود. در این صورت اگر آنها بیشتر از MTU روتر و یا هر دستگاه دیگری که در مسیر انتقال قرار دارد باشند، پکت مورد نظر تحویل داده نخواهد شد.
- Fragmentation در IPV6 مجاز نیست. IPV6 آخرین نسخه پروتکل اینترنت است؛ هرچند IPV4 هنوز به صورت گسترده مورد استفاده قرار میگیرد. روترهایی که از IPV6 پشتیبانی میکنند، هر پکت IPV6 که بیش از MTU باشد را رها نموده و آن را ارسال نمیکنند، زیرا قادر به Fragmentation نیستند.
- گاهی اوقات بر روی پکت IP header نشانه “Don’t Fragment” مشاهده میشود که در این صورت نیز تکه تکه کردن مجاز نیست.
نشانهی Don’t Fragment در IP header چیست؟
در اینجا IP header را به فرمی تشبیه میکنیم که مشتریان به هنگام درخواست ارسال یک بسته از شرکت حمل و نقل پر میکنند. این فرم اطلاعاتی نظیر آدرس مبدا، آدرس مقصد، زمان تحویل بسته و سایر دستورالعملهای خاص را به کارمندان شرکت حمل و نقل میدهد.
نشانه “Don’t Fragment” یک دستورالعمل خاص برای روترها میباشد. در حقیقت گزینهای است که در فرم IP header توسط مشتری انتخاب شده است. زمانی که این گزینه انتخاب میشود پکت ضمیمه را نمیتوان به قسمتهای کوچکتر تقسیم نمود.
هر روتری که پکتی دریافت میکند، اقدام به تجزیه و تحلیل هدر آن نموده و بررسی میکند که آیا گزینه “Don’t Fragment” فعال شده است یا خیر. چنانچه این گزینه فعال شده باشد و پکت مورد نظر بیش از MTU باشد، در این صورت روتر پکت را رها نموده و آن را به قسمتهای کوچکتر تقسیم نمیکند. حال روتر علاوه بر این که چنین پکتی را رها مینماید، یک پیام ICMP نیز به مبدا آن ارسال میکند. پیام ICMP، یک پکت داده بسیار کوچک است که وضعیت را اعلام میکند. در حقیقت روتر با ارسال این پیام اعلام میکند که قادر به تحویل پکت مورد نظر نیست زیرا حجم آن بسیار زیاد است و امکان Fragmentation نیز وجود ندارد.
معرفی Path MTU discovery
Path MTU discovery یا به اختصار PMTUD به فرایندی گفته میشود که MTU مربوط به تمامی دستگاهها، روترها و سوییچ های موجود در مسیر شبکه را مشخص میکند. در مثال بالا اگر کامپیوتر A و سرور A از PMTUD استفاده میکردند، از MTU روتر B مطلع میشدند و اندازه پکت را متناسب با آن تنظیم میکردند تا از Fragmentation جلوگیری کنند. بسته به این که دستگاهها از IPV4 یا IPV6 استفاده میکنند، PMTUD کمی متفاوت عمل میکند.
IPV4: امکان Fragmentation را فراهم میکند و نشانه Don’t Fragment را در IP header قرار میدهد. PMTUD در IPV4 با ارسال پکتهای آزمایشی در طول مسیر شبکه با گزینه فعال Don’t Fragment کار خود را انجام میدهد.
اگر روتر و یا دستگاهی در طول مسیر، پکتی را رها کند، یک پیام ICMP به همراه MTU آن ارسال میکند. دستگاه مبدا، MTU خود را پایین آورده و یک پکت آزمایشی دیگر ارسال میکند. این فرایند تا جایی تکرار میشود که پکت های آزمایشی به اندازه کافی کوچک باشند تا مسیر را بدون این که رها شوند، طی کنند.
IPV6: برای IPV6 که Fragmentation را مجاز نمیداند نیز PMTUD تقریبا به همان روش کار میکند. تفاوت اصلی که دارد این است که IPV6 headerها گزینه Don’t Fragment را ندارند. روترهایی که از IPV6 پشتیبانی میکنند، پکتهای IPV6 را به قسمتهای کوچکتر تقسیم نمیکنند.
در نتیجه اگر پکت های آزمایشی بیشتر MTU باشند، روترها پکتها را رها نموده و پیامهای مربوطه ICMP را بدون بررسی گزینه Don’t Fragment ارسال میکنند. IPv6 PMTUD پکتهای آزمایشی کوچک و کوچکتری را ارسال میکنند تا زمانی که پکتها بتوانند کل مسیر شبکه را درست مانند IPV4 طی کنند.
Maximum Segment Size
MSS مخفف Maximum Segment Size است. MSS به جای لایه 3، در لایه 4 (لایه انتقال) توسط TCP مورد استفاده قرار میگیرد. تنها اندازه payload (محتوای اصلی) هر پکت را مورد بررسی قرار داده و با کم کردن طول TCP و IP header از MTU آن را محاسبه میکند.
پکتهایی که حجم آنها از MTU مربوط به روتر بیشتر باشد یا به قطعات کوچکتر تقسیم شده و یا رها میشوند، درحالی که پکتهایی که بیش از MSS هستند، همیشه رها میگردند.
منبع: Cloudflare
اولین نفر باشید که نظر ارسال میکنید