MTUとMSSの意味を知る

![Frame 2087327312.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4005267/35bf61ac-6002-4bc4-8457-d765eaaaba73.jpeg)

**MTUとMSSの意味を知る**

現代は、安定した接続を通じて大量のデータが短距離・長距離で共有される時代です。インターネットは、さまざまなプロトコルを支える有用な通信ネットワークですが、それぞれに制約があります。MTUとMSSは、通信における異なる概念を示す用語であり、これらの違いを理解することは、ネットワークの速度やパフォーマンス向上に大いに役立ちます。

特にシステム管理の分野に進む場合、これらの用語について十分な知識を持つことが必要です。IPSECやGREトンネルの管理を行う場合はなおさら重要です。また、Wallarm Infrastructure Protectionの導入を検討する際にも、この知識は役立つでしょう。インターネットのTCPとMTUは、最大の…

## MTUとは何か？
システム管理において、MTUとは最大転送単位のことで、ネットワーク機器が一度に受信できる最大のデータサイズを示します。簡単に言えば、機器に即時送信できるデータの最大サイズです。MTUを道路や高速道路の制限に例えると、規定の制限を超える車両は通れないのと同じです。同様に、ネットワークでもMTUを超えるパケットは通過できません。ネットワーク上で一度に送信されるデータ量は、TCPとMTUによって決まります。

ただし、車両とは異なり、データパケットは必要に応じて小さな部分に分割されることがあります。この仕組みは断片化と呼ばれ、分割されたパケットは宛先で再び組み立てられます。

MTUはバイト単位で計測されます。1バイトは8ビット、つまり8個の1や0に相当します。最大のMTUサイズは1500バイトで、これがネットワーク上で一度に送信可能なデータの最大量です。

![Frame 2087327313.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4005267/b10b60ca-6547-4d66-9438-4abcadc1ff7c.jpeg)

MTUを利用する際の一般的な問題は、特定の接続の最大値を超える大きなパケットが生じることです。そのため、システムがこの新たな条件下でも正しく動作するよう、適切な調整が必要になります。

このような大きすぎるデータパケットの問題を解決するために、IPv4では断片化が採用され、データグラムが複数の小さなパケットに分割されます。これにより、各パケットは設定されたMTU内に収まり、データ送信の効率が向上します。断片化はIP層で行われ、ホスト側のIP層がパケットを再構成して元のデータグラムに戻します。

すべてのアプリが断片化に対応しているわけではないため、可能な限り断片化を避けるべきです。最適な方法は、パケットの最大サイズやTCP MSSを設定し、データリンク層に到達する前に各セグメントが適切なサイズに調整されるようにすることです。これにより、不要なパケットの形成を防ぐことができます。

‍
## MTUを変更すべき場面

ネットワーク接続が遅い場合や、その他のパフォーマンスに関する問題が生じた場合、MTUの値を確認することが最初の対策の一つとなります。この場合、より速い接続やアクセスを実現するためにMTUの値を変更する必要があるかもしれません。実際、MTUの変更は迅速かつ簡単に行うことができ、追加のハードウェアやソフトウェアも不要です。PCとスイッチがあれば、ネットワークのテストや基本的な調整が可能です。

MTUサイズが大きいと、一度に多くのデータを少ないパケットに詰め込むことができますが、小さい場合はパケットごとのデータ量が減ります。大きなMTUは高速かつ効率的な通信を可能にしますが、エラーが発生すると再送に時間がかかるという難点もあります。また、より多くのデータを少ないパケットに詰め込むと、ネットワークの混雑を引き起こす恐れもあります。大きなパケットは遅延やデータの破損を招き、全体の応答性を低下させる可能性があります。

このことは、MTUサイズを最大に設定しても大きな問題は生じないことを意味します。各クライアントは継続的なテストにより最適なMTUサイズを見つけるべきです。一度で完璧なサイズを求めるのは難しく、複数回の試行が必要になる場合があります。それでも、ネットワークにもたらすメリットを考えれば、最適なMTUサイズの検討は十分に価値があります。

‍
## 最適なMTUサイズの見つけ方

家庭内ネットワークで最適なMTUサイズを見つける最も簡単な方法は、pingテストを実行することです。この手順では、パケットサイズを徐々に小さくし、断片化が不要となるサイズを探るために複数のping要求を送信します。Windowsの場合はコマンドプロンプトから、MacOSの場合はターミナルからpingコマンドを実行してください。

‍
## MSSとは何か？

MSS（最大セグメントサイズ）とは、インターネットなどのネットワーク上で送信されるパケットやデータの一部のサイズを制御する仕組みです。ネットワーク上では、すべてのデータがより小さなパケットに分割され、各パケットには内容や送信先を示す専用のヘッダーが付いています。MSSは、このヘッダー部分を除くペイロードのサイズを指します。

データパケットをトラックに例えるなら、トラック本体がヘッダーにあたり、荷台やペイロードがヘッダー以外の部分となります。MSSは荷台の内容量を測る尺度のようなもので、荷台が大きすぎるとトラックは目的地に到達できなくなります。

簡単に言えば、MSSは送信側から受信可能なTCPセグメントの最大サイズであり、追加のヘッダーを除いたペイロードの長さを定義します。MSSもバイト単位で計測されます。

![Frame 2087327314.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4005267/ac4848dc-61bb-43b4-a0ec-e4be2725e05c.jpeg)

MSSは、パケットサイズに関するもう一つの指標であるMTU、すなわちTCPおよびIPヘッダーを含む最大転送単位によって規定されます。例えで言えば、MTUはトラック本体と荷台、ペイロード全体のサイズを示します。

MSSは、MTUからTCPヘッダーとIPヘッダーのサイズを差し引いた値となります：

```
MTU - (TCP header + IP header) = MSS
```

MTUとMSSの主な違いは、パケットがMTUの最大サイズを超えた場合は小さな部分に分割されて送信されるのに対し、MSSを超えるパケットは破棄され、目的地へ送られない点にあります。

‍
## TCPとは何か？

TCP（Transmission Control Protocol）とは、データパケットが確実に送受信され、ロスや欠落なく通信できるようにするプロトコルです。例えば、パケット送信サービスは送信前に全受信者に連絡し、パケットの受信準備ができているか確認します。パケットが正常に届くと、送信サービスは送信者に通知します。TCPは、この仕組みをデータパケットに適用して動作します。

![Frame 2087327315.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4005267/690445b4-b679-49a4-b6c9-d875b740b1bc.jpeg)

TCPは、ネットワークで接続される2台の機器間でTCPハンドシェイクと呼ばれる手順により接続を確立します。ハンドシェイクの際、各機器は受信可能なパケットサイズ（いわゆる「MSSクリッピング」とも呼ばれる）を共有し、MSSが合意されます。また、TCPはすべてのパケットにヘッダーを付加し、どの接続に属するのかやパケットの順序を示します。


## TCP MSSモデルとは？

例えば、ネットワークスイッチのMTUが1500の場合、1500バイトまでのパケットしか受信できません（それ以上は断片化されます）。この場合、スイッチのMSSはどのように設定すればよいでしょうか？

```
MTU - (TCP header + IP header) = MSS
1,500 - (20 + 20) = 1,460
```

![Frame 2087327316.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4005267/264ed489-1043-4957-a3aa-ea706f188f15.jpeg)

スイッチのMSSは1460バイトに設定する必要があります。ペイロードサイズが1460バイトを超えるパケットは破棄されます。（中継スイッチや他の機器のMTUおよびMSSの設定を把握せずに、デバイスが誤って過大なパケットを送信することがありますが、path MTUディスカバリという手法により、このような事態は回避されます。）

[![企業のセキュリティ評価](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4005267/c24fdaba-8174-471f-b5dd-56e6448536b6.png)](https://www.wallarm.com/jp/request-demo-llm?utm_source=Web&utm_medium=Qiita&utm_campaign=AISecurity)