MSS یا Maximum Segment Size حداکثر مقدار دادهای را مشخص میکند که یک دستگاه میتواند در بخش TCP قرار دهد. این مقدار فقط داده اصلی TCP Payload را شامل میشود و هدرهای TCP و IP را دربر نمیگیرد. نقاط پایانی ارتباط TCP هنگام ایجاد اتصال، مقدار MSS قابل دریافت خود را اعلام میکنند. این مقدار در بخشهای TCP دارای پرچم SYN قرار میگیرد و به دو طرف کمک میکند اندازه مناسب بخشها را پیش از انتقال داده تعیین کنند. MSS به دستگاه مقابل اعلام میکند که دادهها باید در بخشهایی با اندازه مشخص ارسال شوند تا انتقال اطلاعات با اختلال کمتری انجام شود.
MSS چگونه کار میکند؟
پروتکل TCP دادههای برنامه را به بخشهای کوچکتری تحت نام Segment تقسیم میکند. هنگام آغاز اتصال، کلاینت یک بسته SYN شامل مقدار MSS ارسال مینماید و سرور نیز مقدار MSS خود را در پاسخ SYN-ACK اعلام میکند.
مقدار MSS دو طرف ممکن است متفاوت باشد، زیرا هر طرف توانایی خود برای دریافت داده را اعلام میکند. پس از برقراری اتصال، هر فرستنده بر اساس MSS طرف مقابل، حجم داده هر بخش TCP را تعیین مینماید.

تصویر(1)
برای نمونه، در شبکه Ethernet با MTU برابر 1500 بایت و استفاده از IPv4، محاسبه MSS به شکل زیر انجام میشود:
“1500-byte MTU” – “20-byte IPv4 header” – “20-byte TCP header” = 1460-byte MSS
در IPv6 با هدر 40 بایتی، مقدار MSS معمولاً به شکل زیر محاسبه میشود:
1500 – “40-byte IPv6 header” – “20-byte TCP header” = 1440-byte MSS
وجود گزینههای اضافی در هدرهای TCP یا IP میتواند فضای قابل استفاده برای داده را کاهش دهد و موجب انتخاب مقدار کمتر MSS شود.
تفاوت مقدار MSS و MTU چیست؟
MSS و MTU مفاهیم مرتبطی هستند اما کاربرد متفاوتی دارند. MTU یا Maximum Transmission Unit بیشترین اندازه بسته IP را مشخص میکند که میتواند بدون عبور از محدودیت لینک شبکه منتقل شود. در مقابل، MSS فقط مقدار داده TCP داخل بسته را مشخص میکند و رابطه این دو مفهوم به شکل زیر تعریف میگردد:
MTU = هدرها + داده
MSS = فقط داده TCP
در شبکه Ethernet استاندارد با MTU برابر 1500 بایت و هدرهای معمول IPv4 و TCP، مقدار MSS معمولاً 1460 بایت محاسبه میشود. شناخت تفاوت این دو مفهوم از ایجاد تنظیمات اشتباه شبکه جلوگیری میکند.
چرا MSS اهمیت دارد؟
مقدار صحیح MSS میتواند کارایی و پایداری شبکه را افزایش دهد. بستههای TCP ممکن است از مسیرهای مختلفی مانند شبکه داخلی، روترها، تونلها و فایروالها عبور کنند که محدودیت اندازه یکسانی ندارند.
اگر اندازه بخشهای TCP از ظرفیت مسیر بیشتر باشد، بستهها ممکن است تکهتکه شوند یا از بین بروند. این وضعیت باعث ارسال مجدد دادهها، افزایش تأخیر و کاهش سرعت ارتباط میشود. مشکلات MSS معمولاً زمانی دیده میشوند که اتصال برای دادههای کمحجم درست عمل میکند اما هنگام انتقال فایلهای بزرگ یا بارگذاری صفحات حجیم با اختلال مواجه میشود.

تصویر(2)
MSS و Path MTU Discovery
MSS ارتباط مستقیمی با Path MTU Discovery یا PMTUD دارد. PMTUD اندازه کوچکترین MTU موجود در مسیر ارتباطی را مشخص میکند تا فرستنده بتواند بستههایی متناسب با ظرفیت مسیر ایجاد نماید.
اگر پیامهای موردنیاز PMTUD مانند ICMP توسط فایروالها مسدود شوند، فرستنده ممکن است همچنان بستههای بزرگتر از ظرفیت مسیر ارسال کند. این وضعیت موجب ایجاد مشکل معروف به PMTUD Black Hole میشود. در این شرایط، بستههای کوچک بدون مشکل منتقل میگردند اما انتقالهای بزرگ TCP با Timeout مواجه میشوند.
MSS Clamping چیست؟
MSS Clamping روشی است که روترها، فایروالها و تجهیزات شبکه برای کاهش مقدار MSS اعلامشده در شروع اتصال TCP، استفاده مینمایند. تونلها هدرهای اضافی به بستهها اضافه میکنند و فضای قابل استفاده از MTU را کاهش میدهند. به همین دلیل، بستهای که در شبکه معمولی بدون مشکل منتقل میشود، ممکن است در مسیر تونلی بزرگتر از ظرفیت شبکه باشد.
با کاهش MSS، تجهیزات شبکه کمک خواهند کرد تا نقاط پایانی TCP بخشهای کوچکتری تولید کنند و دادهها بدون مشکل از مسیر عبور نمایند. این روش جهت عیبیابی PPPoE و شبکههایی که PMTUD در آنها دچار اختلال شده است، کاربرد پیدا میکند. با این حال، MSS Clamping نباید جایگزین اصلاح تنظیمات اصلی شبکه شود و فقط باید برای مدیریت شرایط خاص استفاده گردد.
آیا مقدار MSS بر DNS تأثیر دارد؟
MSS فقط بر ارتباطات TCP تأثیر میگذارد و اندازه بستههای معمول DNS مبتنی بر UDP را کنترل نمیکند. بیشتر درخواستهای DNS از UDP استفاده میکنند زیرا این روش به ایجاد اتصال TCP نیاز ندارد.
با این حال، DNS در شرایطی مانند پاسخهای بزرگ یا انتقال ناحیه از TCP استفاده میکند. در این حالت، فرآیند توافق روی MSS و محدودیتهای مربوط به اندازه بستهها بر ارتباط DNS نیز اثر میگذارد. این موضوع در شبکههایی که از تونل یا فایروالهای محدودکننده استفاده میکنند، اهمیت بیشتری پیدا میکند.

تصویر(3)
علائم رایج مشکلات MSS
تشخیص مشکلات MSS و MTU همیشه ساده نیست زیرا شبکه معمولاً به صورت کامل از کار نمیافتد. مهمترین نشانههای این مشکلات شامل موارد زیر میشود:
-
اتصال TCP برقرار میگردد اما انتقال داده متوقف میشود.
-
درخواستهای کوچک اجرا میگردند اما انتقالهای بزرگتر با شکست مواجه میشوند.
-
صفحات وب ناقص بارگذاری میگردند یا با Timeout روبرو میشوند.
-
انتقال فایلها به دلیل ارسال مجدد بستهها کند میشود.
-
سرویس از یک شبکه درست کار میکند اما از شبکه دیگر خطا ایجاد مینماید.
-
ارتباط DNS مبتنی بر TCP با زمان انتظار غیرعادی مواجه میشود.
ابزارهایی مانند tcpdump امکان بررسی بستههای SYN و مشاهده مقدار MSS اعلامشده توسط نقاط پایانی را فراهم میکنند. مقایسه MSS با MTU و Path MTU میتواند علت بسیاری از مشکلات اندازه بسته را مشخص نماید. پایش مداوم ارتباطات TCP نیز به شناسایی افزایش تأخیر، اختلال اتصال و کاهش عملکرد شبکه کمک میکند.
نتیجهگیری
MSS مشخص میکند TCP چه مقدار داده برنامه را میتواند در یک بخش مستقل منتقل نماید. این مفهوم اگرچه برای کاربران قابل مشاهده نیست اما نقش مهمی در انتقال پایدار و کارآمد اطلاعات ایفا میکند.
در بیشتر شبکهها، MSS به صورت خودکار مدیریت میشود و مشکلات آن معمولاً زمانی ایجاد میشوند که تونلها، فایروالها یا تغییرات مسیر، اندازه مؤثر بستهها را کاهش دهند. زمانی که یک اتصال TCP برای دادههای کوچک بدون مشکل کار میکند اما در انتقالهای بزرگتر دچار اختلال میشود، بررسی تفاوت MSS و MTU میتواند مسیر مناسبی برای یافتن علت مشکل ایجاد نماید.