MCPで接続 →

計算を入力してください

公式

広告

結果

最大セグメントサイズ(MSS)
1,460
1セグメントあたりのTCPペイロード(バイト)
MTU 1,500 bytes
IPヘッダー 20 bytes
TCPヘッダー 20 bytes
オーバーヘッド合計 40 bytes

MTU・MSS計算ツールとは?

このツールは、ネットワークの最大転送単位(MTU:Maximum Transmission Unit)から、TCPで使われる最大セグメントサイズ(MSS:Maximum Segment Size)を求めるためのものです。MTUは1つのリンクが運べる最大パケットサイズ(バイト単位)を指し、MSSはそのパケットからIPヘッダーとTCPヘッダーを除いたあとに収まる実際のTCPペイロード量を表します。MSSを正しく設定すれば、フラグメンテーションや再送、さらには接続を停滞させる悪名高い「PMTUDブラックホール」を回避できます。

使い方

まずリンクのMTUを入力します(イーサネットの初期値は1500)。次にIPv4(基本ヘッダー20バイト)かIPv6(基本ヘッダー40バイト)を選び、必要に応じてIPオプションや、タイムスタンプ・SACKといったTCPオプション(一般的に12バイト)のバイト数を加えます。計算ツールがヘッダーの合計オーバーヘッドを差し引き、MSSをバイト単位で返します。

計算式の解説

関係はとてもシンプルで、MSS = MTU − IPヘッダー − TCPヘッダーです。標準的なTCPヘッダーは20バイト。標準的なIPv4ヘッダーも20バイトなので、おなじみの近道としてMSS = MTU − 40が成り立ちます。IPv6は40バイトの固定ヘッダーを使うため、MSS = MTU − 60となります。ネゴシエーションされたオプションがあれば、その分だけ該当ヘッダーが大きくなり、ペイロードはさらに減少します。

$$\text{MSS} = \text{MTU} - \left(20 + \text{IP Options}\right) - \left(20 + \text{TCP Options}\right)$$
広告
MTU内のIPヘッダー、TCPヘッダー、MSSペイロードを示すIPパケットの図
MTUはパケット全体、MSSはIPヘッダーとTCPヘッダーを除いた残りのデータです。

計算例

標準的なイーサネットではMTUは1500バイトです。IPv4の場合、IPヘッダー=20、TCPヘッダー=20で、オーバーヘッドの合計は40。したがって\(\text{MSS} = 1500 - 40 = 1460\)バイトとなります。TCPタイムスタンプとして12バイトのオプションが加わると、TCPヘッダーは32バイトになり、MSSは\(1500 - 20 - 32 = 1448\)バイトに下がります。

よくある質問

MSSがよく1460になるのはなぜ? 多くのリンクが1500バイトのMTUを使っており、IPv4+TCPの標準的な40バイトのヘッダーを差し引くと、データ用に1460バイトが残るためです。

MSSにヘッダーは含まれる? 含まれません。MSSはあくまでTCPペイロードのサイズです。IPヘッダーとTCPヘッダーはその上に付加され、完全なパケットを構成します。

PPPoEやトンネルの場合は? カプセル化によって実効MTUは下がります(PPPoEは8バイト増えてMTUは1492、VPNはさらに増加します)。その場合は、減少後のMTUをここに入力すれば正しいMSSが得られます。

最終更新: