■ | Windows.FAQ - インターネット接続の最適化 (モデム/ISDN/ADSL/CATV) | ![]() |
Windows9x/Me 標準の TCP/IP スタックの初期設定値は、Ethernet LAN に最適化されています。
モデムや TA
を使ったダイヤルアップや、ADSL/CATV
を使ったインターネット接続を行う場合は、設定値を最適化することでパフォーマンスが大幅に向上することがあります。
TCP/IP スタックの調整で、影響の大きいパラメータは MTU と RWIN
ですが、ここでは両者の基本的な概念を解説し、続いて設定方法を説明します。
(解説はいいから、設定を変更したい場合は直接「最適化するには?」へどうぞ。)
MTU (Maxmum Transmission Unit) は、IP パケットの最大サイズを規定します。
TCP/IP は「IP パケット」という単位でデータを送受信します。
IP の下位層 (Ethernet、PPP、PPPoE など)
は1回に送信できるデータの最大量が決まっていますが、IP パケットサイズが下位層の最大転送サイズより大きい場合、IP パケットは複数のデータに分割
(フラグメント) され、送信先で再構成 (リアセンブル) されるためパフォーマンスが悪化します。
逆に IP
パケットサイズが下位層の最大転送サイズより小さすぎる場合、本当は一度にたくさんのデータを送信できるはずなのに、少量ずつ送ってしまうため、やっぱりパフォーマンスが悪化します。
このことから、下位層にあわせた最適な MTU サイズを設定することで、パフォーマンスが向上することがわかります。
特定の相手との間の最適な MTU サイズは、以下のコマンドで調査することができます。C:\WINDOWS>ping <ホスト名または IP アドレス> -f -l <パケットサイズ> |
C:\WINDOWS>ping www.ntt.co.jp -f -l 1426 |
ping の -f オプションは、「IP
パケットを分割しない」オプションです。
応答が返る場合、指定したパケットサイズは分割しないで送信できるので、最適値を求めるためにより大きいパケットサイズを指定してテストします。
Packet
needs to be fragmented but DF set.
が返る場合、分割しないと送信できないことがわかるので、最適値を求めるためにより小さいパケットサイズでテストします。
Windows では、ping
コマンドで判明した最適なパケットサイズに 28 (IP+ICMP ヘッダ) を足すと、最適な MTU サイズが得られます。
また、通信事業者が公表している MTU サイズを参照してもよいでしょう。たとえば、NTT 東日本が公開している技術資料によると、フレッツ ADSL の MTU サイズは 1454 とされています。
RWIN (Receive Window size) は、TCP 接続で受信確認せずに、一度に転送できるデータ量を規定します。
低速回線で RWIN を大きく設定すると、パケットロスがあった場合の再送ペナルティが大きくなるので好ましくありません。逆に高速回線で RWIN を小さく設定すると、受信確認待ちのタイムロスが大きくなるので好ましくありません。
RWIN は MSS (Maximum Segment Size) の倍数値で設定しますが、経験的に以下のリスト程度のサイズがよいとされています。(MSS は MTU から IP + TCP ヘッダを除去したサイズなので、通常は MTU = MSS + 40 という計算式が成立します。)
33.6K モデム | MSS x 4 = (MTU - 40) * 4 |
56K モデム | MSS x 6 = (MTU - 40) * 6 |
64K ISDN | MSS x 8 = (MTU - 40) * 8 |
1.5M ADSL | MSS x 10〜200 = (MTU - 40) * 10〜200 |
Windows98/Me の TCP/IP スタックを最適化するには、次のレジストリを変更します。
Windows95
は、多くのパラメータ形式が異なるので、そのままでは以下の設定は効きません。Windows95 の TCP/IP スタックを Windows98
と同等のものにアップグレードするには、ダイヤルアップ ネットワーク 1.3
(DUN1.3) を導入してください。(Winsock2 日本語版は DUN1.3 に含まれます。たまに英語版の Winsock2
導入を勧めているページを見かけますが、日本語版 Windows95 に英語版 Winsock2 を導入すると不具合が発生することが確認されています。[J046083])
値 | 型 | データ |
HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services
\Class \NetTrans \000x (0000 から複数あるキーのうち、DriverDesc に TCP/IP と書いてある設定を変更したいエントリ) | ||
MaxMTU | 文字列型 | MTU
についてを参照。目安は以下の通り。 モデム:576 ISDN:1000 ADSL:1454 |
HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Vxd \MSTCP | ||
DefaultRcvWindow | 文字列型 | RWIN
についてを参照。 64KB (2**16) を超える値を設定する場合は、Tcp1323Opts が有効である必要があります。 Default:8192 |
Tcp1323Opts | 文字列型 | RFC
1323 TCP パフォーマンス拡張。 64KB (2**16) を超える RWIN を設定する場合は 1 または 3 が必須。 Windows9x はこの設定が有効にならない障害があり、修正版の適用が必要です。(Q239705) 推奨値:3 (Default) |
SackOpts | 文字列型 | RFC
2018 Selective
Ack。ロスした特定のパケットのみ再送します。 無効の場合、ロスしたパケット以降を全て再送します。 推奨値:1 (Default) |
DefaultTTL | 文字列型 | 送信パケットが通過できるルーターの数を指定します。 小さすぎると到達できないことがあり、大きすぎると到達できないことが判明するまで時間がかかることがあります。推奨値:64 (Default:128) |
HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Vxd \MSTCP \Parameters | ||
MaxDupAcks | DWORD 型 | 高速再送オプション 推奨値:3 (Default) |
以下の vbs ファイルをダウンロードして実行 (ダブルクリック) することで、設定を簡単に行うことができます。
Download | 設定用:![]() ![]() |
参考 FAQ
Windows98 は
Windows95 よりダイアルアップのパフォーマンスがいい?
レジストリをいじらない Windows98/Me のダイヤルアップアダプタ MTU
変更方法
同時に実行できる
http ダウンロード数が制限されているようですが?
IE で同時接続数を増やすには?(ブラウザの表示速度も速くなりますが、問題も...)
参考資料
Windows98 Resource Kit Chapter.31 Windows98 Registry
- TCP/IP Registry Entries
Windows9x/Me
TCP/IP Registry Entries
List of
Documentation Errors in Windows 98 Resource Kit
Windows9x/Me
TCP/IP Registry Entries in the NetTrans Subkey
RFC 1323
Options Can Not Be Enabled in Windows 95/98
Windows 95
and Windows 98 TCP/IP May Retransmit Packets Prematurely
iSpeed for Windows
MTUSpeed Pro
Enabling High Performance
Data Transfers
MTU等の調整で高速接続・高速表示
TechNet
Microsoft Windows 2000 TCP/IP 実装詳細
Description
of Windows 2000 TCP Features
Windows
2000 Does Not Use Configured TCPWindowSize Registry Parameter When Accepting a
Connection