MTU値とMSS値の確認方法について①

MTU値とMSS値の確認方法についてなどの個人的なまとめになります。

◆そもそもMTU (Maximum Transmission Unit)とは
 IPヘッダを含めた最大サイズ(バイト数)のことで、一回の通信に転送可能な
 IPデータグラムサイズのことです。

◆そもそもMSS( Maximum Segment Size)とは
 TCPで通信する際に受信可能なセグメントの最大長のことを言います。
 MTUからTCP/IPヘッダ(40byte)をマイナスした値で常に
 「MSS = MTU – 40byte(IPヘッダ20byte + TCPヘッダ20byte)」となります。
 通常MSS値は、TCP の 3way Handshake のときに端末間で MSS 値を通知
 しあい決定します。環境によって調整が必要な場合は、NW機器(ルータなど)
 がMSS 値を調整します。

◆MTU値の確認方法について
 下記に端末のDOSプロンプトからの確認方法を記載します。
・構文
 ping <オプション> <宛先IPアドレス>

・オプション
 -f      ・・・・・DF(Don’t Fragment)bitがオンにする
 -l <サイズ> ・・・・・mtu値の指定(bytes)
 -n <実行回数>・・・・・実行回数

◆構文例
 DF(Don’t Fragment)bit → オン
 mtu値 → 1472bytes
 実行回数 → 3

 ping -f -l 1472 -n 3 192.168.0.254

 ※ping応答が正常にあった場合、1500bytes はフラグメント化されない
  MTU値となる。
 ※1472bytes(指定したMTU値)+8bytes(ICMPヘッダ)+20bytes(IPヘッダ)
  =1500bytes

 MTU値を確認するには、調査mtu値を変えながら、-fオプションを
 指定したpingコマンドを実行する。

◆確認方法の例

 ping -f -l 1309 -n 3 192.168.0.254
 パケットの断片化が必要ですが、DF が設定されています。

 →フラグメント化が必要なため、MTU値1337bytes(1309bytes+28bytes)は
  最適なMTU値ではない。

 ping -f -l 1308 -n 3 192.168.0.254
 192.168.0.254 からの応答: バイト数 =1308 時間 =1ms TTL=64

 →ping応答あり。
  1337bytes(1309bytes+28bytes)がフラグメント化が必要でかつ、
  1336bytes(1308bytes+28bytes)はping応答あり(フラグメント化不要)の
  結果から、このネットワークの最適なMTU値は
  1336bytes(1308bytes+28bytes)となる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です