MTU And MSS

Well, primarily MTU is an Ethernet thing, and MSS is a TCP thing…  MTU defines the
max Ethernet frame size, and MSS defines the max TCP segment size…  It just so
happens that sensible TCP implementations base their MSS value on either the
local MTU value, or better yet, the PMTU (Path MTU) of the connection (meaning
the lowest MTU encountered on any portion of the route between both ends)…
Specifically, the MSS will generally be set to the [P]MTU minus room for the IP and
TCP headers…  So, yeah, the two are definitely related, but distinct values…

 

 

Question

If my MTU value is 1472 then what should be my MSS???

 

Answer

 

Well, if you really had an MTU of 1472 (PPPoE?), you’d want an MSS of no more than
1432 (leaving 20 bytes for IP and TCP headers)…  But, depending on IP and TCP
options you might be using (eg: timestamps), the IP/TCP headers may be larger than
a mere 20 bytes each, too…  So, you may actually want a lower value than that, even…

Of course, your OS should really figure that out itself, without you needing to do
anything about it…  It knows your local MTU, and a modern system will even figure
out your PMTU, and will adjust its MSS accordingly

 

 

mtu مخفف maximum transmission unit هست و معنیش اینه هر پاکت داده ای که تو شبکه میره حداکثر اندازش چقده.
مثلا همین شبکه های Ethernet در اینا این مقدار 1500 بایت هست یعنی هر پاکت IP حداکثر با header خودش + اطلاعاتش می تونه نهایت 1500 بایت باشه.

Mss این قسمتی از پروتکل TCP هست و مخفف maximum segmentation size هست. این هم تعیین میکنه که پروتوکل TCP چقدر اطلاعات میتونه با خودش حمل کنه.

مثال:
می دونیم پاکت TCP داخل پاکت IP جای می گیره. و اندازه پاکت IP رو MTU تعیین می کنه که معمولا 1500 هست.
معمولا

IP header size = 20 bytes
TCP header size = 20 bytes

پس IP header size + TCP header size+ داده قابل حمل داخل توسط TCP ، برابر 1500 بایت هس
اون قسمت قابل حمل رو mss تعیین می کنه
در این مورد
1500-20-20 = 1460
حداکثر داده قابل برابر 1460 هست و اون mss هست. باید دقت شه که mss فقط مال TCP هست و ماله UDP و بقیه نیست.

در مورد PMTUD فک کنم همون path mtu discovery باشه
اگه چند تا روتر بین مسیر باشن و MTU هر کدام باهم فرق داشته باشه چی؟
PMTU برا این درست شده تا کوچکترین MTU رو پیدا کنه تا بتونه پاکت ها رو درست تقسیم کنه
واسه همین اونی که می خواد ارتباط برقرار کنه یک پیغام icmp میفرسته که از روتر ها می خواد MTU خودشون رو بگن….

MTU چیست

MTU چیست ؟
این کلمه در اصطلاحات شبکه مخفف Maximum transmission unit به معنای حد اکثر واحد انتقال است.
در سیستم های ارتباط کامپیوتری برای انتقال اطلاعات آنها را در به پکتهایی تقسیم میکنند که توسط این پکتها اطلاعات به مقصد میرسد و این پکتها با توجه به بستر مخابراتی حجم متفاوتی میتوانند داشته باشند به صورت مثال در Ethernet به صورت پیش فرض سایز پکتها 1500 بایت میباشد.
این عدد در اکثر سیستم عامل ها و دیوایس های شبکه (لایه 3 و بالاتر) قابل تنظیم میباشد که در ویندوز XP فقط از طریق رجیستری میتوانید آن را تعیین نمایید.
در مورد PPPoE نیز حد اکثر قابل انتقال برای آن 1492 میباشد که این به خاطر آن است که باید از Ethernet عبور کند و مک آدرس ( 6 بایت) و Protocol-ID PPP ( 2 بایت ) نیز به آن اضافه میشود که نتیجه 1500-8=1492 میشود .
برای تغییر MTU در اینترفیس ها در ویندوز باید در رجیستری به آدرس زیر بروید.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\Tcpip\Parameters\Interfaces\

که در آن شناسه کارت شبکه شما میباشد.
در این آدرس یک کلید رجیستری جدید از نوع DWORD به نام MTU بسازید و عدد دلخواه خود را در آ« به دسیمال وارد نمایید.

برای تغییر MTU در کانکشن PPPoE
باید به آدرس زیر در رجیستری بروید.

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Servic es\Ndiswan\Parameters

در این شاخه برای تغییرات باید کلیک راست نموده از منوی New گزینه Key را انتخاب نمایید و نام آن را Protocols بگزارید
. درون آن باز گلید Key با نام 0 بسازید.
درون آن کلیدی از نوع DWORD ساخته بسازید با نام ProtocolType و سپس آن را ویرایش کرده و مقدار 800 را در مبنای hexadecimal بدهید.
کلیدی دیگر از نوع DWORD با نام PPPProtocolType بسازید و مقدار آن را در مبنای hexadecimal عدد 21 بدهید.
کلید دیگری از نوع DWORD با نام ProtocolMTU بسازید و مقدار مورد نظر برای MTU در مینای دسیمال بدهید.
برای اعمال تنظیمات ویندوز را باید یک بار ری استارت نمایید.