“なんとなくわかる”では困る!MTUとMSSの違いとは?

[voice icon=”https://tomslifestylelab.com/wp-content/uploads/2019/05/tom0212.png” name=”この記事を書いている人” type=”l”]

ネットワークエンジニア
Tom

Tomとかいうやつが何者なのか知りたい方は下のプロフィールをご覧ください。

プロフィール

[/voice]

こんにちは、Tomです。

今回は、

「MTUとMSS」

について解説します。

 

MTUとMSSと聞いて、なんのことだかパッと浮かんでくるでしょうか?

聞いたことあるけど、よくわかんない

なんとなくわかるけど、説明はできない

という方が多いのではないでしょうか?

 

実は私も同じような状況でした。

ネットワークの勉強を始めたころは、今回お話する内容をすっ飛ばして、とりあえずよく聞く知識を詰め込んでいました。

しかし、「MTUとMSS」は、「TCP」を理解するためには必要不可欠な知識です。

私はそこを完全にすっ飛ばしましたので、

“TCPについて勉強したはずなのに、イマイチわからない”

という状況でした。

 

私と同じような残念な状況に陥らないために、一緒に学んでいきましょう。

1.MTUとは?

まずはMTUについてお話します。

MTUとは、

Maximum Transmission Unit

の略で、

ネットワークにおいて一回に送受信できるデータ量の最大値のことです。

 

現在、一般的なネットワークは「TCP/IP」と「イーサネット」で成り立っています。

一般的なネットワークの場合、イーサネットフレームのデータ部分、つまりIPパケットの最大値がMTUになります。

言い換えれば、

一度に送受信することができるIPパケットの最大データサイズがMTU

です。

 

そして、基本的にイーサネットでのMTUは1500バイトです。

なので、一度に送受信することができるIPパケットのサイズは1500バイトまでということになります。

 

IPパケットが1500バイトを超える場合は、分割されて送信されます。
この分割はネットワーク層のプロトコルである「IP」で行われます。

そのため、IPでパケットが分割されることを

「IPフラグメンテーション」

といいます。

フラグメンテーション(fragmentation)とは、「断片化」と言う意味です。

IPが“パケットを分割した方がいい”と判断した場合は、IPパケットが分割され“断片化”されます。なので「IPフラグメンテーション」というのです。

2.MSSとは?

次にMSSです。

MSSとは、

Maximum Segment Size

の略で、

ネットワークにおいて一度に送受信できるセグメントの最大値のことを言います。

 

普通セグメントと言えば、TCPで処理されるPDUのことを言います。

しかし、MSSでいうセグメントとは、下の図のように、TCPヘッダを除いたTCPデータのことです。

なので、

“一度に送受信できるTCPデータの最大値がMSS”

ということになります。

 

また、TCPデータは、アプリケーション層から受け取ったメッセージです。

なので、

一度に送受信できるアプリケーションメッセージのデータサイズの最大値がMSSである

と言えます。

 

イーサネットの場合、MTUは1500バイトでした。

そこから、IPヘッダとTCPヘッダのデータサイズを引けばMSSが割り出せます。

IPヘッダとTCPヘッダのデータサイズは共に20バイトで、

1500-20-20=1460

なので、イーサネットの場合、MSSは1460バイトとなります。

 

つまり、アプリケーションメッセージが1460バイトを超えると、一度に送受信することは不可能というです。
その場合は、分割されることになります。

この分割はトランスポート層のプロトコルである「TCP」で行われます。

そのため、TCPでアプリケーションメッセージが分割されることを

「TCPフラグメンテーション」

といいます。

3.まとめ

いかがでしたでしょうか?

「MTUとMSS」について理解を深めることはできましたでしょうか?

TCPには今回お話した「MTUとMSS」の他にさまざまな内容があります。
そちらに関しても記事を書いたので、併せてご覧ください。

シーケンス番号が手掛かり?TCPの「順序制御」とは? 再配達します!TCPの「再送制御」とは?

それでは、最後まで読んでくださり本当にありがとうございました。