こんばんは!今回はパケットのMTUに関することについて紹介します。
MTU(Maximum Transmission Unit)とは、ネットワークで一回に送信できる最大のデータサイズのことです。MTUは物理媒体ごとに異なります。イーサネットのMTUは1500バイトで、光ファイバ(FDDI)は4352バイトとなります。
MTUとは?
MTUの値を超えたパケットを送信する場合、MTUに合わせてパケットを分割する。この分割作業を「IPフラグメンテーション」と呼び、ルータを経由する際に自動的に行われる。送信側であらかじめサイズを設定できるが、受信側のサイズが小さいと受信できず、エラーが返される。その場合は、受信側のMTUに合わせて再分割され、改めて送信される。
ただし、あて先ではすべてのフラグメント化されたパケットが揃うまで再構成を実行しないため、IPフラグメンテーションによる再分割と再送信の手順の分だけ時間がかかってしまう。さらに、TCP/IPのMTUの最小サイズは576バイトと、Ethernetよりも遥かに小さいサイズが設定されており、IPフラグメンテーションが発生する可能性は高い。
pingコマンドなどでMTUサイズを事前に確認し、MTUの値を適切なサイズに設定することが望ましい。
引用元: https://atmarkit.itmedia.co.jp/aig/06network/mtu.html
MTUサイズの確認方法
MTUサイズを確認するには、自端末でコマンドプロンプトを使うことで確認できます。コマンドプロンプトで下記のコマンドを打ちます。
netsh interface ipv4 show interface
私は【Wi-Fi3】を使用してインターネットに接続しているので2行目のIdx26になります。MTUサイズは1500バイトになります。
MTUサイズの変更方法
MTUサイズの変更方法は下記になります。上記で確認したIdx番号を使います。下記のコマンドを使います。
netsh interface ipv4 set interface 26 mtu=1454
問題なければOKの文字が表示されます。
MTUサイズの確認方法(変更後)
MTUのサイズを変更をしたら再度MTUサイズの確認をします。
netsh interface ipv4 show interface
MTUサイズが変更した1454バイトになっていることを確認して完了です。
MTUサイズ確認後のping確認
MTUサイズを変更後は、pingコマンドオプションの -f -l で確認ができます。オプションの使い方はpingコマンドオプション備忘録の記事に書きました。
ping コマンドで1500バイトのデータを飛ばすと下記のようにメッセージが表示されます。
C:\Users\Administrator>ping 192.168.179.1 -f -l 1500
192.168.179.1 に ping を送信しています 1500 バイトのデータ:
パケットの断片化が必要ですが、DF が設定されています。
パケットの断片化が必要ですが、DF が設定されています。
パケットの断片化が必要ですが、DF が設定されています。
パケットの断片化が必要ですが、DF が設定されています。
192.168.179.1 の ping 統計:
パケット数: 送信 = 4、受信 = 0、損失 = 4 (100% の損失)、
ping コマンドで1454バイトのデータを飛ばすと下記のように応答メッセージが表示されます。
C:\Users\Administrator>ping 192.168.179.1 -f -l 1454
192.168.179.1 に ping を送信しています 1454 バイトのデータ:
192.168.179.1 からの応答: バイト数 =1454 時間 =1ms TTL=64
192.168.179.1 からの応答: バイト数 =1454 時間 =2ms TTL=64
192.168.179.1 からの応答: バイト数 =1454 時間 =1ms TTL=64
192.168.179.1 からの応答: バイト数 =1454 時間 =1ms TTL=64
192.168.179.1 の ping 統計:
パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 1ms、最大 = 2ms、平均 = 1ms
MTUサイズの確認/変更する方法 まとめ
MTUサイズについてのまとめです。
- ネットワークで一回に送信できる最大のデータサイズのこと
- 確認 netsh interface ipv4 show interface
- 設定 netsh interface ipv4 set interface * mtu=1454
- pingコマンド オプション -f -l で確認ができる
もし通信が不安定な時は、一度MTUサイズを変更して試してみるのも1つの手段になります。
それではー!