MTU یا maximum transmission unit چیست؟
حداکثر واحد انتقال (maximum transmission unit)،به اندازه گیری بزرگ ترین پکت داده ای گفته می شود که یک دستگاه متصل به اینترنت می تواند دریافت کند. دقیقا می توان آن را به حد مجاز ارتفاع زیرگذر آزادراه ها یا تونل ها تشبیه نمود. ماشین ها و کامیون هایی که ارتفاع آن ها خیلی زیاد است، نمی توانند وارد تونل یا زیرگذر شوند. به همین ترتیب می توان گفت پکت هایی که اندازه ی آن ها بیشتر از MTU مربوط به شبکه باشد، قادر به انتقال در آن شبکه نمی باشند.
هرچند که پکت هایی که اندازه ی آن ها بیش از MTU باشد، به قسمت های کوچک تر تقسیم شده به طوری که قادر به عبور از شبکه باشند. این فرایند تحت عنوان fragmentation (تکه تکه شدن) نامیده می شود. پکت های قطعه قطعه شده زمانی که به مقصد خود می رسند، مجددا به هم متصل می گردند.
واحد اندازه گیری MTU، بایت است. یک بایت معادل ۸ بیت اطلاعات یعنی ۸ عدد صفر و یک است. حداکثر اندازه ی MTU برابر با ۱۵۰۰ بایت می باشد.

پکت داده ها چیست؟
تمامی داده های ارسال شده در اینترنت به قطعات کوچک تری تحت عنوان پکت تقسیم می شوند. به عنوان مثال، زمانی که یک صفحه ی وب از سرور به لپ تاپ کاربر ارسال می شود، داده های تشکیل دهنده ی صفحه وب به صورت مجموعه ای از پکت ها، از طریق اینترنت منتقل می گردند. سپس این پکت ها توسط لپ تاپ، به هم متصل شده و صفحه وب را نمایش می دهند.
پکت داده ها دارای دو بخش اصلی می باشند: header و payload. بخش header شامل اطلاعاتی در مورد آدرس مبدا و مقصد پکت می باشد و قسمت payload حاوی محتوای واقعی پکت است. اگر به یک بسته ی پستی تشبیه کنیم، آدرس روی بسته header نام دارد و خود بسته payload. البته پکت های ارسالی در دنیای اینترنت، دارای چندین header می باشند که توسط پروتکل های مختلف شبکه، ضمیمه شده اند.
می توان گفت MTU تقریبا همیشه در ارجاع به لایه ۳ (لایه شبکه) پکت ها مورد استفاده قرار می گیرد یا پکت هایی که از IP (پروتکل اینترنت) استفاده می کنند. MTU پکت ها را به صورت کلی اندازه گیری می نماید، یعنی تمامی header ها و payloadها که شامل IP header و TCP header می باشد که به طور معمول طول آن ها تا ۴۰ بایت می تواند باشد.
چه زمانی پکت ها به صورت تکه تکه (fragmented) در می آیند؟
زمانی که دو دستگاه محاسباتی با یکدیگر ارتباط برقرار نموده و اقدام به تبادل پکت ها می کنند، این پکت ها از چندین شبکه عبور می کنند. قابل ذکر است نه تنها MTU مربوط به این دو دستگاه باید در نظر گرفته شود، بلکه MTU تمامی روترها، سوییچ ها و سرورهایی که در مسیر عبور آن ها قرار دارند نیز، می بایست در نظر گرفته شود. پکت هایی فراتر از MTU هر نقطه ی موجود در مسیر انتقال باشند، می بایست به صورت fragmented (تکه تکه شده) درآیند.
فرض کنید سرور A و کامپیوتر A به هم متصل شده اند، اما پکت داده هایی که آن ها برای یکدیگر ارسال می کنند مجبور هستند از روتر B و روتر C عبور کنند. MTU مربوط به سرور A، کامپیوتر A و روتر B همگی معادل ۱۵۰۰ بایت است و MTU روتر C برابر با ۱۴۰۰ بایت می باشد. در صورتی که سرور A و کامپیوتر A از MTU روتر C مطلع نباشند و پکتی معادل ۱۵۰۰ بایت ارسال کنند، تمامی پکت های داده ی آن ها توسط روتر B به هنگام انتقال به صورت تکه تکه (fragmented) در می آیند.
Fragmentation (تکه تکه شدن داده ها) منجر به ایجاد کمی زمان تاخیر و همچنین ناکارآمدی در ارتباطات شبکه می گردد، بنابراین تا حد امکان می بایست از آن اجتناب کرد. تجهیزات منسوخ شده شبکه ممکن است در برابر حملات DDoS که از fragmentation سوء استفاده می کنند، آسیب پذیر باشند.
fragmentation (تکه تکه شدن داده ها) به چه صورت اتفاق می افتد؟
تمامی روترهای شبکه، اندازه هر IP packet دریافتی را با MTU مربوط به روتر بعدی که قرار است پکت را دریافت کند، بررسی می نمایند. چنانچه اندازه ی پکت بیشتر از MTU روتر بعدی باشد، اولین کاری که روتر انجام می دهد این است که payload (محتوای اصلی پکت) را به دو یا چند پکت تقسیم نموده و به هر یک header مخصوص به خود را اختصاص می دهد.
هر پکت دارای هدری است که از پکت اصلی کپی شده؛ به طوری که تمامی پکت ها دارای آدرس آی پی مبدا و مقصد یکسان و همچنین به همراه تغییرات مهم می باشند. روتر اقدام به ویرایش فیلدهای خاصی در IP header می نماید تا نشان دهد پکت ها به صورت تکه تکه (fragmented) در آمده اند و می بایست مجددا به هم متصل شوند. در ضمن با این ویرایش تعداد پکت ها و همچنین ترتیب قرارگیری آن ها نیز نشان داده می شود.
تصور کنید یک شرکت حمل و نقل در حال مدیریت بسته ای است که حمل بار با اضافه وزن، یکی از امکانات آن شرکت می باشد. این شرکت حمل و نقل به جای عدم پذیرش یک بسته با وزن زیاد، محتویات آن را به سه بسته کوچک تر تقسیم می کند. قدم بعدی که انجام می دهد این است که برچسب حمل و نقل آن بسته را کپی کرده و بر روی هر یک از سه بسته ضمیمه می کند. این برچسب نشان می دهد که یک بسته از یک مجموعه است و می بایست همه آن ها با هم برسند. آن ها را شماره گذاری کرده: بسته یک از سه، بسته دو از سه و بسته سه از سه. البته چنین اتفاقی به دلیل نقض حریم خصوصی در دنیای واقعی رخ نمی دهد.
چه زمانی fragmentation امکان پذیر نیست؟
قابل ذکر است در برخی موارد خاص پکت ها را نمی توان به قطعات کوچک تر تقسیم نمود. در این صورت اگر آن ها بیشتر از MTU روتر و یا هر دستگاه دیگری که در مسیر انتقال قرار دارد باشند، پکت مورد نظر تحویل داده نخواهد شد.
- Fragmentation در IPV6 مجاز نیست. IPV6 آخرین نسخه ی پروتکل اینترنت است؛ هرچند که IPV4 نیز هنوز به صورت گسترده مورد استفاده قرار می گیرد. روترهایی که از IPV6 پشتیبانی می کنند، هر پکت IPV6 که بیش از MTU باشد را رها نموده و آن را ارسال نمی کنند، زیرا قادر به fragmentation نیستند.
- گاهی اوقات بر روی پکت IP header نشانه ی “Dont fragment” مشاهده می شود که در این صورت نیز تکه تکه کردن مجاز نیست.
نشانه ی Don`t fragment در IP header چیست؟
در اینجا IP header را به فرمی تشبیه می کنیم که مشتریان به هنگام درخواست ارسال یک بسته از شرکت حمل و نقل پر می کنند. این فرم اطلاعاتی نظیر آدرس مبدا، آدرس مقصد، زمان تحویل بسته و سایر دستورالعمل های خاص را به کارمندان شرکت حمل و نقل می دهد.
نشانه ی Don`t fragment یک دستورالعمل خاص برای روترها می باشد. در حقیقت گزینه ای است که در فرم IP header توسط مشتری انتخاب شده است. زمانی که این گزینه انتخاب می شود پکت ضمیمه را نمی توان به قسمت های کوچک تر تقسیم نمود.
هر روتری که پکتی دریافت می کند، اقدام به تجزیه و تحلیل هدر آن نموده و بررسی می کند که آیا گزینه “don`t fragment” فعال شده است یا خیر. چنانچه این گزینه فعال شده باشد و پکت مورد نظر بیش از MTU باشد، در این صورت روتر پکت را رها نموده و آن را به قسمت های کوچک تر تقسیم نمی کند.
حال روتر علاوه بر این که چنین پکتی را رها می نماید، یک ICMP message نیز به مبدا آن ارسال می کند. پیام ICMP، یک پکت داده ی بسیار کوچک است که وضعیت را اعلام می کند. در حقیقت روتر با ارسال این پیام اعلام می کند که روتر یا دستگاه قادر به تحویل پکت مورد نظر نبوده زیرا حجم آن بسیار زیاد است و امکان fragmentation نیز وجود ندارد.

MSS چیست؟
MSS مخفف maximum segment size است. MSS به جای لایه ۳، در لایه ۴ (لایه انتقال) توسط TCP مورد استفاده قرار می گیرد. MSS تنها اندازه ی payload (محتوای اصلی) هر پکت را مورد بررسی قرار داده و با کم کردن طول TCP و IP header از MTU آن را محاسبه می کند.
پکت هایی که حجم آن ها از MTU مربوط به روتر بیشتر باشد، یا به قطعات کوچک تر تقسیم شده و یا رها می شوند، در حالی که پکت هایی که بیش از MSS هستند، همیشه رها می گردند.