印刷用ページ       送信     
クリックして評価とフィードバックをお寄せください
TechNet
TechNet ライブラリ
テクニカルドキュメント
ネットワーク
展開
 Microsoft Windows 2000 TCP/IP 実装詳細
Microsoft Windows 2000 TCP/IP 実装詳細
By Dave MacDonald、Warren Barkley

オペレーティング システム

要約

このホワイト ペーパーでは、Microsoft Windows 2000 TCP/IP マニュアルに対する補足として、Microsoft® Windows® 2000 (以下 Windows 2000) オペレーティング システムにおける TCP/IP 実装の詳細を述べ、Microsoft TCP/IP Protocol Suite について詳しく解説します。このホワイト ペーパーでは、重要な概念をネットワーク トレースで具体的に示しています。これらのトレースの収集と書式設定には、Microsoft Systems Management Server 製品に含まれているソフトウェア ベースのプロトコル トレースおよび分析用ツールである Microsoft Network Monitor を使用しています。このホワイト ペーパーは、既に TCP/IP に精通しているネットワーク エンジニアやサポート プロフェッショナルを対象にしています。

トピック

はじめに
機能
アーキテクチャ モデル
NDIS インターフェイス
プロトコルスタックのコアコンポーネントと TDI インターフェイス
ネットワークアプリケーションインターフェイス
重要なクライアントサービスとスタックコンポーネント
TCP/IP のトラブルシューティングツールおよびトラブルシューティング指針
まとめ
付録 A : TCP/IP 構成パラメータ
付録 B : NetBIOS over TCP/IP の構成パラメータ
付録 C:Windows Sockets および DNS のレジストリ パラメータ
付録 D: 攻撃に対する TCP/IP の応答のチューニング

はじめに

Microsoft では、各種プラットフォームの戦略的エンタプライズ ネットワーク転送プロトコルとして TCP/IP を採用しています。Microsoft では、1990 年代初めに、Microsoft ネットワークのスケーラビリティを大幅に向上する TCP/IP スタックおよびサービスの作成を目指す意欲的なプロジェクトを開始しました。その結果、Microsoft® Windows NT® 3.5 (以下 Windows NT 3.5) オペレーティング システムには、完全に新設計の TCP/IP スタックが搭載されることになりました。このスタックは、業界標準の TCP/IP プロトコルを 32 ビットで実装した移植可能な高パフォーマンス スタックです。過去 10 年間にわたって開発されてきたパフォーマンス向上や管理効率化のための技術や手法が採り入れられています。Windows NT がバージョンを重ねるたびに、このスタックのパフォーマンスと信頼性を強化する新しい機能とサービスが追加されてきています。

この TCP/IP スタックは、次の項目に重点を置いて設計されています。

  • 標準や規格への対応

  • 相互運用性

  • 移植性

  • スケーラビリティ

  • 高パフォーマンス

  • 汎用性

  • セルフ チューニング

  • 管理の容易さ

  • 適応性

このホワイト ペーパーでは、Windows 2000 TCP/IP マニュアルに対する補足として、Windows 2000 オペレーティング システムにおける TCP/IP 実装の詳細を述べます。既に TCP/IP に精通しているネットワーク エンジニアやサポート プロフェッショナルを対象として、Microsoft TCP/IP の実装を詳しく解説します。

このホワイト ペーパーでは、重要な概念をネットワーク トレースで具体的に示しています。これらのトレースの収集と書式設定には、Microsoft Systems Management Server 製品に含まれているソフトウェア ベースのプロトコル トレースおよび分析用ツールである Microsoft Network Monitor を使用しています。Windows 2000 Server には、Network Monitor の機能縮小版が付属しています。Systems Management Server 版のネットワーク モニタでは、アダプタをプロミスカス モード (promiscuous mode) で使用するとネットワーク上のすべてのフレームをキャプチャできますが、Windows 2000 版の Network Monitor では、インストール先のコンピュータで通常検出できるフレームのみキャプチャできます。また、リモート ネットワーク モニタ エージェントへの接続もサポートされていません。

機能

概要

Windows 2000 用の TCP/IP Suite は、大規模な企業内ネットワーク、政府機関ネットワーク、パブリック ネットワークに対する Microsoft システムの統合を容易にし、それらのネットワーク上での運用のセキュリティを確保できるように設計されています。Windows 2000 は、インターネットに対応したオペレーティング システムです。

標準機能のサポート

Windows 2000 では、次の標準機能をサポートしています。

  • メディアの種類が異なる複数のネットワーク アダプタへのバインド

  • 論理マルチホームおよび物理マルチホーム

  • 内部 IP ルーティング

  • Internet Group Management Protocol (IGMP) Version 2 (IP マルチキャスト)

  • 重複している IP アドレスの検出

  • 複数のデフォルト ゲートウェイ

  • デッド ゲートウェイの検出

  • パス最大転送ユニット (Path Maximum Transmission Unit: PMTU) の自動発見

  • IP セキュリティ (IPSec)

  • QoS (Quality of Service)

  • ATM サービス

  • 仮想プライベート ネットワーク (VPN)

  • レイヤ 2 トンネリング プロトコル (L2TP)

パフォーマンスの強化

さらに、Windows 2000 では、パフォーマンスが次のように強化されています。

  • プロトコル スタックのチューニング (既定ウィンドウ サイズの増加や、高遅延リンク用アルゴリズムの変更によるスループット増加など)

  • TCP スケーラブルなウィンドウ サイズ (RFC 1323 でサポート)

  • SACK (Selective Acknowledgments)

  • TCP 高速再転送(fast retransmit)

  • 往復時間(RTT: Round Trip Time) および再転送タイムアウト(RTO: Retransmission Timeout) の計算処理の改良

  • 多数の接続の管理パフォーマンスの向上

  • ハードウェア タスク オフロード メカニズム

利用可能なサービス

Windows 2000 Server ファミリのオペレーティング システムでは、次のサービスを提供します。

  • 動的ホスト構成プロトコル (DHCP) クライアントおよびサービス

  • Windows インターネット ネーム サービス (WINS)、NetBIOS 名クライアントおよびサービス

  • ダイナミック ドメイン ネーム サーバー (DDNS)

  • ダイヤルアップ (PPP/SLIP) サポート

  • リモート仮想プライベート ネットワーク用の ポイントツーポイント トンネリング プロトコル (PPTP) およびレイヤ 2 トンネリング プロトコル (L2TP)

  • TCP/IP ネットワーク印刷 (lpr/lpd)

  • SNMP エージェント

  • NetBIOS インターフェイス

  • Windows Sockets Version 2 (Winsock2) インターフェイス

  • リモート プロシージャ コール (RPC) サポート

  • ネットワーク ダイナミック データ エクスチェンジ (NetDDE)

  • ワイド エリア ネットワーク (WAN) 参照サポート

  • 高パフォーマンスの Microsoft Internet Information Services (IIS)

  • finger ftp rcp rexec rsh telnet tftp などの基本的な TCP/IP 接続ユーティリティ

  • Character Generator、Daytime、Discard、Echo、Quote of the Day などの簡易ネットワーク プロトコル用ソフトウェア

  • arp ipconfig nbtstat netstat ping pathping route nslookup tracert などの TCP/IP 管理および診断用ツール

Microsoft TCP/IP の各バージョンの機能比較表

下の表は、各オペレーティング システム版の Microsoft TCP/IP にどの機能が実装されているかを参考用に示しています。このドキュメントでは、この後、これらの機能について詳細に説明します。

1 N = なし、 Y = あり、 D = 既定では無効

製品

Windows 95

Windows 95 Winsock 2

Windows 98

Windows 98 SE

Windows NT 4.0 SP5

Windows 2000

デッドゲートウェイの検出

N

N

Y

Y

Y

Y

VJ 高速再転送

N

Y

Y

Y

Y

Y

AutoNet

N

N

Y

Y

N

Y

SACK (Selective ACK)

N

Y

Y

Y

N

Y

ジャンボフレームサポート

Y

Y

Y

Y

Y

Y

ラージウィンドウ

N

D

D

D

N

D

動的 DNS

N

N

N

N

N

Y

Media Sense

N

N

N

N

N

Y

Wake-On-LAN

N

N

N

N

N

Y

IP 転送

N

N

N

D

D

D

NAT

N

N

N

D

N

D

Kerberos v5

N

N

N

N

N

Y

IPSec (IP セキュリティ )

N

N

N

N

N

Y

PPTP

N

N

Y

Y

Y

Y

L2TP

N

N

N

N

N

Y

IP ヘルパ API

N

N

Y

Y

Y

Y

Winsock2 API

N

Y

Y

Y

Y

Y

GQoS API

N

N

Y

Y

N

Y

IP フィルタ API

N

N

N

N

N

Y

ファイアウォールフック

N

N

N

N

N

Y

パケットスケジューラ

N

N

N

N

N

D

RSVP

N

N

Y

Y

N

Y

ISSLO

N

N

Y

Y

N

Y

Trojan フィルタ

N

N

N

N

D

D

ブロッキングソースルーティング

N

N

N

Y

Y

Y

ICMP ルーター発見

N

Y

Y

Y

D

D

Offload-TCP

N

N

N

N

N

Y

Offload-IPSec

N

N

N

N

N

Y

Microsoft Windows 2000 TCP/IP でサポートされているインターネット RFC

RFC (Requests for Comments) は、レポート、プロトコルの提案、インターネット コミュニティによって使用されているプロトコル規格などの一連のドキュメントです。RFC は、次のサイトから FTP 経由で取得できます。

  • nis.nsf.net

  • nisc.jvnc.net

  • wuarchive.wustl.edu

  • src.doc.ic.ac.uk

  • normos.org

2 このバージョンの Microsoft TCP/IP でサポートされている RFC

RFC

タイトル

768

User Datagram Protocol (UDP)

783

Trivial File Transfer Protocol (TFTP)

791

Internet Protocol (IP)

792

Internet Control Message Protocol (ICMP)

793

Transmission Control Protocol (TCP)

816

Fault Isolation and Recovery

826

Address Resolution Protocol (ARP)

854

Telnet Protocol (TELNET)

862

Echo Protocol (ECHO)

863

Discard Protocol (DISCARD)

864

Character Generator Protocol (CHARGEN)

865

Quote of the Day Protocol (QUOTE)

867

Daytime Protocol (DAYTIME)

894

IP over Ethernet

919, 922

IP Broadcast Datagrams (broadcasting with subnets)

950

Internet Standard Subnetting Procedure

959

File Transfer Protocol (FTP)

1001, 1002

NetBIOS Service Protocols

1065, 1035, 1123, 1886

Domain Name System (DNS)

1042

A Standard for the Transmission of IP Datagrams over IEEE 802 Networks

1055

Transmission of IP over Serial Lines (IP-SLIP)

1112

Internet Group Management Protocol (IGMP)

1122, 1123

Host Requirements (communications and applications)

1144

Compressing TCP/IP Headers for Low-Speed Serial Links

1157

Simple Network Management Protocol (SNMP)

1179

Line Printer Daemon Protocol

1188

IP over FDDI

1191

Path MTU Discovery

1201

IP over ARCNET

RFC

Title

1256

ICMP Router Discovery Messages

1323

TCP Extensions for High Performance (TCP1323opts registry parameter を参照)

1332

PPP Internet Protocol Control Protocol (IPCP)

1518

Architecture for IP Address Allocation with CIDR

1519

Classless Inter-Domain Routing (CIDR): An Address Assignment and Aggregation Strategy

1534

Interoperation Between DHCP and BOOTP

1542

Clarifications and Extensions for the Bootstrap Protocol

1552

PPP Internetwork Packet Exchange Control Protocol (IPXCP)

1661

The Point-to-Point Protocol (PPP)

1662

PPP in HDLC-like Framing

1748

IEEE 802.5 MIB using SMIv2

1749

IEEE 802.5 Station Source Routing MIB using SMIv2

1812

Requirements for IP Version 4 Routers

1828

IP Authentication using Keyed MD5

1829

ESP DES-CBC Transform

1851

ESP Triple DES-CBC Transform

1852

IP Authentication using Keyed SHA

1886

DNS Extensions to Support IP Version 6

1994

PPP Challenge Handshake Authentication Protocol (CHAP)

1995

Incremental Zone Transfer in DNS

1996

A Mechanism for Prompt DNS Notification of Zone Changes

2018

TCP Selective Acknowledgment Options

2085

HMAC-MD5 IP Authentication with Replay Prevention

2104

HMAC: Keyed Hashing for Message Authentication

2131

Dynamic Host Configuration Protocol

2136

Dynamic Updates in the Domain Name System (DNS UPDATE)

2181

Clarifications to the DNS Specification

2205

Resource ReSerVation Protocol (RSVP) -- Version 1 Functional Specification

2236

Internet Group Management Protocol, Version 2

2308

Negative Caching of DNS Queries (DNS NCACHE)

2401

Security Architecture for the Internet Protocol

2401

Security Architecture for the Internet Protocol

2402

IP Authentication Header

2406

IP Encapsulating Security Payload (ESP)

2581

TCP Congestion Control

アーキテクチャ モデル

概要

Microsoft TCP/IP Suite は、"コアプロトコル要素""サービス"、およびそれらの間の "インターフェイス" で構成されます。TDI (Transport Driver Interface) と NDIS (Network Device Interface Specification) は、一般に公開されており、その仕様を Microsoft から入手できます。さらに、ユーザー モード アプリケーションで使用できる、より高レベルのインターフェイスもいくつか用意されています。最も多用されるのは、Windows Sockets、リモート プロシージャ コール (RPC)、および NetBIOS の 3 つです。

図 1: Windows 2000 の TCP/IP ネットワーク モデル

1: Windows 2000 TCP/IP ネットワークモデル

プラグ アンド プレイ

Windows 2000 では、プラグ アンド プレイがサポートされています。プラグ アンド プレイには、次のような機能があります。

  • インストール済みハードウェアを動的に自動検出できます。この機能は、システムの初期インストールに対して有効なほか、システムのシャットダウン後に行われたハードウェアの変更 (静的な変更) を認識したり、カードの脱着、挿入、取り外しなど、実行時のハードウェア イベントに応答することができます。

  • ハードウェアの動的自動検出に応じて、ハードウェア構成を合理化できます。ハードウェアの動的起動、リソースの調整、デバイス ドライバのロード、ドライブのマウントなどが可能です。

  • ハードウェアの動的自動検出およびハードウェア構成の合理化に役立つ特定のバスやその他のハードウェア規格がサポートされています。これらには、プラグ アンド プレイ ISA、PCI、PCMCIA、PC Card/CardBus、USB、および 1394 があります。ハードウェアの動作に関する標準や推奨事項も公開されています。

  • ドライバ作成用のプラグ アンド プレイ フレームワークが整備されています。デバイス情報 (INF) インターフェイス、API、カーネル モード通知、実行インターフェイスなどが含まれます。

  • ユーザー モード コードやアプリケーションでハードウェア環境の変更を検出して適切な処理を実行できるようにするメカニズムが用意されています。

プラグ アンド プレイ操作は、プラグ アンド プレイ ハードウェアを必要としません。上記の最初の 2 項目は、プラグ アンド プレイ ハードウェアのほかに、従来型のハードウェアにも可能な限り適用します。検出方法が破壊的であったり、異常に時間がかかるなどの理由で従来型デバイスをうまく検出できない場合もあります。

プラグ アンド プレイ サポートがプロトコル スタックに及ぼす最も大きな影響は、ネットワーク インターフェイスが任意の時点でロードまたはアンロードされる可能性があるという点です。Windows 2000 TCP/IP スタックおよび関連コンポーネントは、プラグ アンド プレイに対応しています。

NDIS インターフェイス

Microsoft ネットワーク プロトコルでは、ネットワーク カード ドライバとの間の通信に NDIS (Network Device Interface Specification) を使用します。OSI モデル リンク レイヤ機能の多くは、プロトコル スタック内に実装されています。これにより、ネットワーク カード ドライバの開発が大幅に単純化されます。

NDIS (3.1 5.0)

NDIS 3.1 では、プロトコル モジュールが raw パケットをネットワーク デバイス経由で送信できるようにし、ネットワーク デバイスが着信パケットを受信したときに同じモジュールに通知できるようにするための基本的なサービスをサポートしています。

NDIS 4.0 では、NDIS 3.1 に対し、次の新機能が追加されています。

  • 帯域外データ(out-of-band data) のサポート。ブロードキャスト PC の必要条件です。

  • WirelessWAN メディア拡張機能。

  • 高速パケット送受信。パフォーマンスが大幅に向上しています。

  • 高速 IrDA メディア拡張機能。

  • Media Sense。PC 97 以降のハードウェア設計ガイドにおいて Designed for Windows ロゴを取得するための必要条件です。Microsoft Windows 2000 TCP/IP スタックでは、Media Sense 情報を利用します。詳細については、後の「クライアントの自動構成と Media Sense」を参照してください。

  • 完全にローカルなパケット フィルタ。ネットワーク モニタが CPU を占有するのを防止します。

  • 各種の新しい NDIS システム機能。Windows 95、Windows 98、Windows NT、および Windows 2000 の間でミニポートのバイナリ互換性を確保するために必要です。

NDIS 5.0 では、NDIS 4.0 で定義されているすべての機能のほかに、次の拡張機能が追加されています。

  • NDIS 電源管理。ネットワーク電源管理およびネットワーク ウェークアップに必要です。

  • プラグ アンド プレイ。Windows 95 NDIS では、プラグ アンド プレイが既にサポートされていたので、この変更は Windows 2000 ネットワーク ドライバについてのみ当てはまります。

  • Windows Management Instrumentation (WMI) のサポート。Web ベースのエンタプライズ管理 (WBEM) との互換性を確保しながら NDIS ミニポートおよび関連アダプタを計装できます。

  • 複数の Windows オペレーティング システム間での統一 INF 形式のサポート。新しい INF 形式は、Windows 98 の INF 形式に基づいています。

  • パフォーマンス向上のためのミニポートの非シリアル化。

  • TCP チェックサムと UDP チェックサムや高速パケット転送などのタスク オフロード メカニズム。

  • ブロードキャスト メディア拡張機能。Windows 用のブロードキャスト サービスに必要です。

  • 接続指向の NDIS。非同期転送モード (ATM)、非対称デジタル加入者回線 (ADSL)、および Windows Driver Model-Connection Streaming Architecture (WDM-CSA) をサポートするために必要です。

  • QoS (Quality of Service) のサポート。

  • Intermediate Driver サポート。ブロードキャスト PC(Broadcast PC)、仮想 LAN、QoS のパケット スケジューリング、および IEEE 1394 ネットワーク デバイスの NDIS サポートに必要です。

NDIS では、システムから電源レベルの変更が要求されたときにネットワーク アダプタの電源を遮断できます。この要求は、ユーザーが発行する場合とシステムが発行する場合があります。たとえば、ユーザーがコンピュータを明示的にスリープ モードにすることもあれば、キーボードやマウスが一定時間使用されていない場合にシステムが電源レベルの変更を要求することもあります。さらに、ネットワーク インターフェイス カード (NIC) には、ネットワーク ケーブルが切断されたときに電源の遮断要求を発行する機能を持つものがあります。この場合、ケーブルがネットワーク デバイス自体から切断されたのではなく、ネットワーク上の物理的な配線作業の結果として切断が発生する可能性があるため、システムは構成可能な待ち時間が経過した後で電源を遮断します。

NDIS 電源管理のポリシーは、ネットワークの活動状況に基づくものではありません。つまり、NIC の電源を遮断できるのは、すべてのネットワーク コンポーネントが遮断要求を受け付ける場合だけです。ネットワーク上にアクティブなセッションやオープン中のファイルが存在する場合は、コンポーネントが電源遮断要求を拒否する可能性があります。

また、ネットワーク イベントに基づいてコンピュータを低電源状態から解除することも可能です。ウェークアップ信号は、次のイベントに対して発生させることができます。

  • ネットワーク リンク状態の変化の検出 (ケーブルの再接続など)。

  • ネットワーク ウェークアップ フレームの受信。

  • マジック パケット (Magic Packet) の受信。

ドライバの初期化時、NDIS は、ミニポートの機能を照会して、マジック パケット、パターン マッチ、リンク変更ウェークアップなどがサポートされているかどうかを確認し、さらに、各ウェークアップ方法で要求される最も低い電源状態を確認します。この後で、ネットワーク プロトコルがミニポートの機能を照会します。実行時には、プロトコルが "Enable Wakeup""Set Packet Pattern""Remove Packet Pattern" などのオブジェクト識別子 (OID) を使用してウェークアップのポリシーを設定します。

現時点では、Microsoft のプロトコル スタックのうち、ネットワーク電源管理をサポートしているのは Microsoft TCP/IP だけです。ミニポートの初期化時には、次のパケット パターンが登録されます。

  • リダイレクトされた IP パケット

  • ステーションの IP アドレスからの ARP ブロードキャスト

  • ステーションの割当て済みコンピュータ名の NetBIOS over TCP/IP ブロードキャスト

NDIS 準拠のドライバは、多数のベンダから、さまざまな NIC で利用できるものが提供されています。NDIS インターフェイスでは、異なる種類の複数のプロトコル ドライバを単一の NIC ドライバにバインドでき、また、単一のプロトコルを複数の NIC ドライバにバインドできます。これを実現するための多重化メカニズムが NDIS 仕様に記述されています。バインドは、[ネットワークとダイアルアップ接続] フォルダから表示または変更できます。

Windows 2000 TCP/IP では、次の種類のネットワークがサポートされています。

  • イーサネット (および 802.3 SNAP)

  • FDDI

  • トークン リング (802.5)

  • ATM (LANE および CLIP)

  • ARCnet

  • Dataphone Digital Service (DDS) や T-carrier (Fractional T1、T1、および T3) などの専用ワイド エリア ネットワーク (WAN) リンク

  • アナログ電話、ISDN、xDSL など、ダイヤルアップまたは恒久回路交換網による WAN サービス

  • X.25、フレーム リレー、ATM などのパケット交換 WAN サービス

これらの新機能の目標は、次のとおりです。

  • 使いやすさの向上と総所有コスト (TCO) の低減

  • パフォーマンスの向上

  • 新しいメディアの種類、サービス、およびアプリケーションへの対応

  • ドライバ アーキテクチャの柔軟性向上

リンクレイヤの機能

リンク レイヤ機能は、ネットワーク インターフェイス カードおよびドライバの組み合わせと低レベル プロトコル スタック ドライバの間で分割されます。ネットワーク カードおよびドライバの組み合わせによるフィルタは、各フレームの宛先メディア アクセス制御 (MAC) アドレスに基づきます。

通常、ハードウェアでは、着信フレームのうち、次の宛先アドレスのいずれかが含まれているフレーム以外のフレームは、フィルタ処理の結果、すべて無視されます。

  • アダプタのアドレス

  • すべてが 1 に設定されたブロードキャスト アドレス (FF-FF-FF-FF-FF-FF)

  • このホスト上のプロトコル ドライバが NDIS プリミティブを使用して関与するよう登録したマルチキャスト アドレス。

この最初のフィルタ処理決定はハードウェアによって行われるので、NIC ではフィルタ基準に一致しないフレームがすべて破棄されます。これらのフレームに対しては、CPU での処理が発生しません。ハードウェア フィルタの基準を満たすフレーム (ブロードキャストを含む) は、ハードウェア割り込みを通じて NIC ドライバに渡されます2。NIC ドライバは、コンピュータ上で動作するソフトウェアなので、これらのフレームを処理するために CPU 時間が消費されます。NIC ドライバは、インターフェイス カードからフレームをシステム メモリに取り込みます。その後で、適切なバインド済みトランスポート ドライバにフレームが示されます (渡されます)。このプロセスは、NDIS 5.0 仕様に詳細に記述されています。

フレームは、すべてのバインドされているトランスポート ドライバに対して、バインドの順に渡されます。

パケットが単一または複数のネットワーク内を移動するとき、そのパケットをメディア上に置いた NIC のアドレスが常に発信元メディア アクセス制御アドレスとなり、そのパケットをメディアから取得しようとしている NIC のアドレスが常に宛先メディア アクセス制御アドレスとなります。このため、ルーティングされたネットワークでは、ネットワーク レイヤ デバイス (ルーターまたはレイヤ 3 スイッチ) を通じてホップを通過するたびに、発信元と宛先のメディア アクセス制御アドレスが変更されます。

最大転送ユニット (MTU)

各種類のメディアでは、フレームが特定の最大フレーム サイズ以内に制限されます。リンク レイヤは、この MTU を発見し、前述のプロトコルに報告する責任を持ちます。プロトコル スタックは、NDIS ドライバにローカル MTU を照会することがあります。インターフェイスの MTU に関する情報は、TCP など、上位レイヤのプロトコルで各メディアのパケット サイズを自動的に最適化するときに使用されます。詳細については、後の「伝送制御プロトコル (TCP)」の「TCP パス最大転送ユニット (PMTU) の発見」を参照してください。

ATM ドライバなどの NIC で LAN エミュレーション モードを使用している場合は、その種類のメディアに対して期待されるよりも高い MTU をドライバが報告することがあります。たとえば、イーサネットをエミュレートしているドライバが MTU を 9180 バイトと報告することがあります。Windows NT および Windows 2000 は、現在のメディアの種類で通常期待される MTU を超過している場合でも、アダプタが報告した MTU サイズをそのまま受け入れて使用します。

現在のメディアの種類で期待されるサイズよりも小さい MTU がプロトコル スタックに報告されることがあります。たとえば、イーサネット上の QoS に 802.1p 標準を使用すると、リンク レイヤ ヘッダーが大きいため、報告される MTU が 4 バイト小さくなります。

プロトコルスタックのコアコンポーネントと TDI インターフェイス

図 1 で NDIS インターフェイスと TDI インターフェイスの間に示されているのがプロトコル スタックのコア コンポーネントです。これらのコンポーネントは、Windows 2000 の Tcpip.sys ドライバに実装されています。Microsoft スタックは、TDI インターフェイスおよび NDIS インターフェイスを通じてアクセスできます。Winsock2 インターフェイスでも、プロトコル スタックへの直接アクセスが可能です。

アドレス解決プロトコル (ARP)

ARP は、発信パケットに対して、IP アドレスをメディア アクセス制御 (MAC) アドレスに解決します。それぞれの発信データグラムをフレームにカプセル化するときに、発信元および宛先のメディア アクセス制御アドレスを追加する必要があります。ARP は、各フレームの宛先メディア アクセス制御アドレスを判別する責任を持ちます。

ARP は、すべての発信 IP データグラム上の宛先 IP アドレスを、フレームの送信に使用される NIC の ARP キャッシュと比較します。一致するエントリが存在すれば、キャッシュから MAC アドレスを取得します。一致するエントリが存在しなければ、ARP がローカル サブネット上で ARP 要求パケットをブロードキャストし、IP アドレスの所有者がメディア アクセス制御アドレスを示して応答するように要求します。パケットがルーターを通じて送信される場合、ARP は、最終的な宛先ホストのメディア アクセス制御アドレスではなく、次ホップ ルーターのメディア アクセス制御アドレスを解決します。ARP 応答が受信されると、ARP キャッシュが新しい情報で更新され、リンク レイヤでのパケット アドレスの指定に使用されます。

ARP キャッシュ

ARP ユーティリティを使うと、ARP キャッシュ内のエントリを表示、追加、または削除できます。例を下に示します。動的なエントリはキャッシュから自動削除されますが、手動で追加したエントリは静的なエントリとなり、キャッシュから自動削除されません。詳細については、後の「ARP キャッシュのエージング」を参照してください。

次の例では、arp コマンドを使って ARP キャッシュを表示しています。

C:\>arp -a

Interface: 199.199.40.123
Internet Address Physical Address Type
199.199.40.1 00-00-0c-1a-eb-c5 dynamic
199.199.40.124 00-dd-01-07-57-15 dynamic
Interface: 10.57.8.190
Internet Address Physical Address Type
10.57.9.138 00-20-af-1d-2b-91 dynamic

ここでは、複数の NIC を持つマルチホームコンピュータの場合の例を示しています。インターフェイスごとに ARP キャッシュが 1 つずつ存在します。

次の例では、IP アドレスが 10.57.10.32 で、NIC アドレスが 00608C0E6C6A のホストの 2 番目のインターフェイスの ARP キャッシュに静的なエントリを追加するために arp -s コマンドを使用しています。

C:\>arp -s 10.57.10.32 00-60-8c-0e-6c-6a 10.57.8.190

C:\>arp -a
Interface: 199.199.40.123
Internet Address Physical Address Type
199.199.40.1 00-00-0c-1a-eb-c5 dynamic
199.199.40.124 00-dd-01-07-57-15 dynamic
Interface: 10.57.8.190
Internet Address Physical Address Type
10.57.9.138 00-20-af-1d-2b-91 dynamic
10.57.10.32 00-60-8c-0e-6c-6a static

ARP キャッシュのエージング

Windows NT および Windows 2000 では、ARP キャッシュのサイズがシステムのニーズに応じて自動調整されます。エントリがどの発信データグラムにも使用されないまま 2 分が経過すると、そのエントリは ARP キャッシュから削除されます。現在参照中のエントリは、10 分後に ARP キャッシュから削除されます。手動で追加したエントリは、キャッシュから自動削除されません。Windows NT 3.51 Service Pack 4 では、エージングをより詳細に制御できるように、ArpCacheLife という新しいレジストリ パラメータが追加されました。このパラメータについては、「付録 A」を参照してください。

次の例では、arp -d コマンドを使ってキャッシュからエントリを削除しています。

C:\>arp -d 10.57.10.32

C:\>arp -a
Interface: 199.199.40.123
Internet Address Physical Address Type
199.199.40.1 00-00-0c-1a-eb-c5 dynamic
199.199.40.124 00-dd-01-07-57-15 dynamic
Interface: 10.57.8.190
Internet Address Physical Address Type
10.57.9.138 00-20-af-1d-2b-91 dynamic

ARP では、指定された宛先アドレスに対して発信 IP データグラムを 1 つだけキューに入れます。この IP アドレスがメディア アクセス制御アドレスに解決されます。ユーザー データグラム プロトコル (UDP) に基づくアプリケーションから単一の宛先アドレスに対して複数の IP データグラムが連続して送信された場合は、既存の ARP キャッシュ エントリがなければ、一部のデータグラムが破棄される可能性があります。アプリケーション側で、パケットのストリームを送信する前に iphlpapi.dll の SendArp() ルーチンを呼び出して ARP キャッシュ エントリを確立しておくと、この問題を回避できます。IP ヘルパ API の詳細については、Microsoft Knowledge Base アーティクル Q193059 を参照してください。

インターネット プロトコル (IP)

TCP/IP スタックでは、IP を使用してパケットをソートし、配信を行います。このレイヤでは、それぞれの着信パケットおよび発信パケットを "データグラム" として扱います。各 IP データグラムは、発信元の IP アドレスと宛先の IP アドレスを持ちます。メディア アクセス制御アドレスとは異なり、パケットがインターネットワークを通じて転送されている間、データグラム内に格納されている IP アドレスは変化しません。以降の節では、IP レイヤの機能について説明します。

ルーティング

" ルーティング " は、IP の基本的機能の 1 つです。IP は、上層の UDP および TCP からデータグラムを受け取り、また下層の NIC からもデータグラムを受け取ります。各データグラムには、発信元と宛先の IP アドレスが付加されています。IP は、各データグラムの宛先アドレスを調べ、ローカルに維持されているルート テーブルと比較して、どのように処理するかを決定します。各データグラムは、次の 3 つの方法のいずれかで処理されます。

  • ローカル ホスト上で IP の上層にあるプロトコル レイヤに渡される。

  • ローカルに接続されている NIC のいずれかを通じて転送される。

  • 破棄される。

ルート テーブルには、4 種類の異なるルートが維持されます。これらのルートは、次の順に検索されます。

  1. ホスト (特定の単一の宛先 IP アドレスへのルート)

  2. サブネット (サブネットへのルート)

  3. ネットワーク (ネットワーク全体へのルート)

  4. 既定 (ほかに一致するルートがない場合に使用)

IP では、次のプロセスを通じて、IP データグラムの転送に使用する単一のルートを決定します。

  1. ルーティング テーブル内の各ルートについて、宛先 IP アドレスとネットマスクのビット単位の論理積 (AND) を求めます。 結果をネットワークの宛先と比較し、一致するかどうかをチェックします。一致すれば、ルートを宛先 IP アドレスに一致するルートとしてマークします。

  2. 一致するルートのリストから、ネットマスクに含まれるビットが最も多いルートを特定します。これが宛先 IP アドレスに一致するビットの最も多いルートなので、IP データグラムの転送に最も適したルートになります。これは、一致するビット数に基づいて一致度が最も高いルートを発見する手法です。

  3. 一致度が最も高いルートが複数見つかった場合は、メトリックが最も低いルートを使用します。一致度が最も高いルートが複数見つかり、しかもメトリックが最も低いルートが複数存在する場合は、それらのうち任意のものを使用します。

コマンド プロンプトからルート テーブルを表示するには、route print コマンドを次のように使用します。

C:\>route print

=========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x2 ...00 a0 24 e9 cf 45 ...... 3Com 3C90x Ethernet Adapter
0x3 ...00 53 45 00 00 00 ...... NDISWAN Miniport
0x4 ...00 53 45 00 00 00 ...... NDISWAN Miniport
0x5 ...00 53 45 00 00 00 ...... NDISWAN Miniport
0x6 ...00 53 45 00 00 00 ...... NDISWAN Miniport
=========================================================================
=========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 10.99.99.254 10.99.99.1 1
10.99.99.0 255.255.255.0 10.99.99.1 10.99.99.1 1
10.99.99.1 255.255.255.255 127.0.0.1 127.0.0.1 1
10.255.255.255 255.255.255.255 10.99.99.1 10.99.99.1 1
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
224.0.0.0 224.0.0.0 10.99.99.1 10.99.99.1 1
255.255.255.255 255.255.255.255 10.99.99.1 10.99.99.1 1
Default Gateway: 10.99.99.254
=========================================================================
Persistent Routes:
None

上のルート テーブルの対象となっているコンピュータは、クラス A IP アドレス 10.99.99.1、サブネット マスク 255.255.255.0、およびデフォルト ゲートウェイ 10.99.99.254 を持ちます。このテーブルには、次の 8 つのエントリが含まれています。

  • 1 番目のエントリ アドレス 0.0.0.0 へのルートは、既定のルートです。

  • 2 番目のエントリ このコンピュータが所属しているサブネット 10.99.99.0 へのルート。

  • 3 番目のエントリ アドレス 10.99.99.1 へのルートは、ローカル ホストのホスト ルートです。ループバック アドレスを指定しています。これは、ローカル ホストの着信データグラムを内部的にループバックする必要があるためです。

  • 4 番目のエントリ ネットワーク ブロードキャスト アドレスへのルート。

  • 5 番目のエントリ ループバック アドレス 127.0.0.0 へのルート。

  • 6 番目のエントリ IP マルチキャスト用のルート。IP マルチキャストについては後で述べます。

  • 最後のエントリ 制限付きブロードキャスト アドレス (すべて 1)。

"Default Gateway" は、現在アクティブになっているデフォルト ゲートウェイを示しています。この情報は、複数のデフォルト ゲートウェイが構成されている場合に役立ちます。

このホストでは、パケットが 10.99.99.40 に送信される場合には、ローカル サブネット ルート (マスク 255.255.255.0 付きのサブネット 10.99.99.0) が一致度の最も高いルートとなります。パケットは、ローカル インターフェイス 10.99.99.1 を経由して送信されます。パケットが 10.200.1.1 に送信される場合には、既定のルートが一致度の最も高いルートとなります。この場合、パケットはデフォルト ゲートウェイに転送されます。

ルート テーブルは、ほとんどの場合、自動的に維持されます。ホストの初期化時には、ローカル ネットワーク、ループバック、マルチキャスト、および構成済みデフォルト ゲートウェイのエントリが追加されます。IP レイヤが検出したその他のルートがテーブルに追加されている場合もあります。たとえば、ホストのデフォルト ゲートウェイがホストに対して、特定のネットワーク、サブネット、またはホストへのより良いルートを示す場合があります。このとき使用される ICMP プロトコルについては、後で述べます。route コマンドやルーティング プロトコルを使用してルートを手動で追加する場合もあります。route コマンドに-p スイッチを付けると、恒久ルートを指定できます。恒久ルート (固定ルート) は、次のレジストリ キーに登録されます。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes

Windows 2000 TCP/IP には、デフォルト ゲートウェイ用の新しいメトリック構成オプションが用意されています。このメトリックにより、特定の時点でどのデフォルト ゲートウェイがアクティブになるかをより細かく制御できます。このメトリックの既定値は 1 です。メトリック値の低いルートは、メトリック値の高いルートより優先されます。デフォルト ゲートウェイの場合は、非アクティブでない限り、メトリック値の最も低いルートがコンピュータによって使用されます。メトリック値の最も低いルートが非アクティブの場合は、デッド ゲートウェイの検出により、リスト内でその次にメトリック値の低いデフォルト ゲートウェイへの切り替えがトリガされることがあります。デフォルト ゲートウェイのメトリックは、TCP/IP の [詳細設定] プロパティを使って設定できます。DHCP サーバーは、ベース メトリックとデフォルト ゲートウェイのリストを提供します。たとえば、DHCP サーバーが提供するベース メトリックが 100 で、リストに 3 つのデフォルト ゲートウェイが含まれている場合には、それらのゲートウェイのメトリックは、それぞれ 100、101、および 102 として構成されます。DHCP によって提供されるベース メトリックは、静的に構成されたデフォルト ゲートウェイには適用されません。

ほとんどの自律システム (AS) ルーターでは、ルーティング テーブルをルーター間で交換するときにルーティング情報プロトコル (RIP) や Open Shortest Path First (OSPF) などのプロトコルを使用します。Windows 2000 Server では、これらのプロトコルがサポートされています。Windows 2000 Professional では、サイレント RIP もサポートされています。

Windows ベースのシステムは、既定ではルーターとして動作せず、インターフェイス間で IP データグラムを転送することはありません。しかし、Windows 2000 Server には、ルーティングとリモート アクセス サービスが用意されており、このサービスを有効にすると完全なマルチプロトコル ルーティング サービスを実現できます。

ルーティングとリモートアクセスを管理するには

  1. [ スタート ] メニューの [プログラム] をポイントします。

  2. [ 管理ツール ] をポイントし、[ルーティングとリモートアクセス] をクリックします。

同じ物理ネットワーク上で複数の論理サブネットを稼動させている場合は、次のコマンドを使うと、IP がすべてのサブネットをローカルとして扱い、宛先に対して ARP を直接使用するようになります。

route add 0.0.0.0 MASK 0.0.0.0 < my local ip address >

これにより、非ローカル サブネットを宛先とするパケットをルーターに送信せずに、ローカル メディアに直接転送することができます。ローカル インターフェイスをデフォルト ゲートウェイとして指定できます。この機能は、1 つの物理ネットワーク上で複数のクラス C ネットワークを稼動させており、外部へのルーターを使用していない場合や、プロキシ ARP 環境を構築している場合に役立ちます。

重複している IP アドレスの検出

重複している IP アドレスの検出は、重要な機能の 1 つです。スタックを最初に初期化したときや、新しい IP アドレスを追加したときには、無償 ARP 要求がローカル ホストの IP アドレスに対してブロードキャストされます。送信する ARP の数は、レジストリ パラメータ "ArpRetryCount" (既定値 3) によって制御されます。これらの ARP のいずれかに対してほかのホストが応答する場合は、その IP アドレスが既に使用されていることになります。この場合でも、Windows ベースのコンピュータは起動しますが、アドレスが競合しているインターフェイスは無効化されます。このとき、システム ログ エントリが生成され、エラー メッセージが表示されます。アドレスを定義しているホストも Windows ベースのコンピュータである場合は、そのコンピュータ上でもシステム ログ エントリが生成され、エラー メッセージが表示されます。ほかのコンピュータの ARP キャッシュが損傷している場合に修復できるように、アドレスが競合しているコンピュータからほかの ARP が再ブロードキャストされ、ほかのコンピュータの ARP キャッシュの値が復元されます。

重複する IP アドレスを使用しているコンピュータは、ネットワークに接続されていないときには、そのまま起動でき、競合が検出されることはありません。しかし、そのコンピュータをネットワークに接続した後で、そのコンピュータから最初にほかの IP アドレスに対する ARP 要求を送信すると、アドレスの競合先の Windows NT ベースのコンピュータで競合が検出されます。競合を検出したコンピュータには、エラー メッセージが表示され、システム ログにイベントの詳細情報が記録されます。競合が検出された場合のイベント ログ エントリのサンプルを次に示します。

The system detected an address conflict for IP address 199.199.40.123 with the system having network hardware address 00:DD:01:0F:7A:B5. Network operations on this system may be disrupted as a result.

DHCP が有効になっているクライアントでは、IP アドレスの競合が検出されたときに DHCP サーバーに対して通知を行い、スタックを無効とはみなさずに、DHCP サーバーに対して新しいアドレスを要求し、さらに、競合しているアドレスに不正アドレスのフラグを立てるように要求します。この機能は、DHCP Decline サポートとして知られています。

マルチホーム

複数の IP アドレスを持つように構成されたコンピュータは、"マルチホーム" システムと呼ばれます。マルチホームは、次の 3 通りの方法でサポートされています。

  • NIC ごとの複数 IP アドレス

    • 1 つのインターフェイスに複数のアドレスを追加するには、[スタート] メニューの [設定] をポイントし、[ネットワークとダイヤルアップ接続] をクリックします。[ローカルエリア接続] をマウスの右ボタンでクリックし、[プロパティ] をクリックします。[インターネットプロトコル (TCP/IP)] を選択して、[プロパティ] をクリックし、[詳細] をクリックします。[詳細設定] ダイアログ ボックスの [IP 設定] タブで [追加] をクリックしてIP アドレスを追加します。

    • NetBIOS over TCP/IP は、インターフェイス カードごとに 1 つの IP アドレスにのみバインドされます。NetBIOS 名の登録が送出されると、インターフェイスごとに IP アドレスが 1 つだけ登録されます。この登録は、ユーザー インターフェイス (UI) 内で最初に示されている IP アドレスに対して行われます。

  • 物理ネットワークごとの複数 NIC ハードウェア以外に制限はありません。

  • 複数のネットワークとメディアの種類 ハードウェアおよびメディアのサポート以外に制限はありません。サポートされているメディアの種類については、前の「NDIS インターフェイス」を参照してください。

マルチホーム ホストから送信する IP データグラムは、宛先への転送に最も適したインターフェイスに渡されます。したがって、データグラムにマルチホーム ホストのいずれかのインターフェイスの発信元 IP アドレスが格納されていても、別のインターフェイスがそのデータグラムをメディア上に置くことがあります。フレーム上の発信元メディア アクセス制御アドレスは、そのフレームを実際にメディアに転送したインターフェイスのアドレスですが、発信元 IP アドレスは、送信アプリケーションがそのフレームの送信に使用した IP アドレスです。この IP アドレスは、ネットワーク接続 UI 内の送信インターフェイスに関連付けられているものとは限りません。

マルチホーム コンピュータの NIC がディスジョイント ネットワーク (リモート アクセスで接続されたネットワークとローカル接続のように、互いに独立しており、互いを認識しない複数のネットワーク) に接続されている場合は、ルーティング上の問題が生じることがあります。このような場合は、リモート ネットワークへの静的なルートを設定することが必要になります。

2 つのディスジョイント ネットワークに接続するマルチホーム コンピュータを構成するときは、メインで使用するネットワークか、または規模が大きく、ルートを限定しにくい方のネットワークに対してデフォルト ゲートウェイを設定するのが最善の方法になります。そのうえで、静的ルートを追加するか、またはルーティング プロトコルを使用して、規模が小さく、ルートを限定しやすい方のネットワークに対する接続を設定します。各ネットワークに異なるデフォルト ゲートウェイを構成すると、動作上の問題が生じたり、接続が失われる可能性があるので、このような構成は避けてください。

メモ どの時点においても、1 つのコンピュータに対してアクティブにできるデフォルト ゲートウェイは 1 つだけです。

名前の登録、解決、およびマルチホーム コンピュータ における発信データグラム用の NIC の選択の詳細については、後の「伝送制御プロトコル (TCP)」、「NetBIOS over TCP/IP」、および「Windows Sockets」を参照してください。

クラスレスドメイン間ルーティング (CIDR)

RFC 1518 および 1519 に記載されている CIDR は、IP アドレスの割り当てと管理のプロセスからクラスの概念を取り除いたものです。CIDR では、事前定義された既知の境界の代わりに、開始アドレスと範囲で定義されたアドレスを割り当てることで、利用可能な名前空間の利用効率を向上します。範囲では、アドレスのネットワーク部分を定義します。たとえば、ISP から企業クライアントに対して、10.57.1.128 /25 のような開始アドレスと範囲が割り当てられます。これは、128 アドレスのブロックをローカルに使用できることを意味し、上位 25 ビットがアドレスのネットワーク識別子部になります。従来型のクラスによる割り当て方式では、<net>.0.0.0 /8、<net>.<net>.0.0 /16、<net>.<net>.<net>.0 /24 のようになります。クラスレスの CIDR 技法では、これらを再利用して再割り当てします。

初期の CIDR は、クラス方式のインストール ベースに対して、クラス C 名前空間を連結するように実装されていました。このプロセスは、"スーパーネット化" と呼ばれます。スーパーネット化を使うと、複数のクラス C ネットワーク アドレスを 1 つの論理ネットワークに統合できます。スーパーネット化を使用するには、結合対象の IP ネットワーク アドレスが同じ上位ビットを共有している必要があり、サブネット マスクは、アドレスのネットワーク部からビットを取り除いて、それらのビットをホスト部に追加するように短縮されます。たとえば、クラス C ネットワーク アドレス 199.199.4.0、199.199.5.0、199.199.6.0、および 199.199.7.0 のそれぞれにサブネット マスク 255.255.252.0 を適用すると、これらのクラス C ネットワーク アドレスを次のように結合できます。

NET 199.199.4 (1100 0111.1100 0111.0000 0100.0000 0000)

NET 199.199.5 (1100 0111.1100 0111.0000 0101.0000 0000)
NET 199.199.6 (1100 0111.1100 0111.0000 0110.0000 0000)
NET 199.199.7 (1100 0111.1100 0111.0000 0111.0000 0000)
MASK 255.255.252.0 (1111 1111.1111 1111.1111 1100.0000 0000)

ルーティングの決定時には、サブネット マスクによってカバーされているビットだけが使用されるので、これらのアドレスはいずれも同じルーティング対象ネットワークの一部とみなされます。この場合、使用中のどのルーターでも CIDR がサポートされている必要があります。特別な構成が必要になることがあります。Windows 2000 TCP/IP では、RFC 1878 に記載されている 0 および 1 のサブネットをサポートしています。

IP マルチキャスト

IP マルチキャストは、クライアントが同じネットワーク セグメント上に存在していなくても、クライアントに効率的なマルチキャスト サービスを提供できるようにするために使用されます。Windows Sockets アプリケーションをマルチキャスト グループに所属させると、ワイド エリア会議への参加などが可能になります。

Windows 2000 は、RFC 1112 にレベル 2 (送受信) で準拠しています。IP マルチキャストの管理には、IGMP プロトコルが使用されます。IGMP については、後で述べます。

IP over ATM

Windows 2000 では、IP over ATM をサポートしています。RFC 1577 (およびそれを補足する RFC) では、IP over ATM ネットワーク上の IP (より正確にいうと ATM ネットワーク上の論理 IP サブネット) の基本動作が定義されています。論理 IP サブネット (LIS) は、互いに直接通信できる IP ホストの集合です。異なる論理 IP サブネットに所属する 2 つのホストは、両方のサブネットのメンバになっている IP ルーターを通じてのみ互いに通信できます。

ATM アドレス解決

ATM ネットワークは非ブロードキャストなので、イーサネットやトークン リングで使われるような ARP ブロードキャストは適しておらず、専用のアドレス解決プロトコル (ARP) サーバーを使用して、IP アドレスから ATM アドレスへの解決を実現します。

論理 IP サブネット (LIS) 内のステーションのいずれか 1 つが ARP サーバーとして指定され、このステーションに ARP サーバー ソフトウェアがロードされます。ARP サーバーのサービスを使用するステーションは、"ARP クライアント" と呼ばれます。LIS 内のすべての IP ステーションが ARP クライアントになります。各 ARP クライアントは、ARP サーバーの ATM アドレスで構成されます。ARP クライアントは、起動時に ARP サーバーへの ATM 接続を確立し、クライアントの IP アドレスと ATM アドレスを格納したパケットをサーバーに送信します。ARP サーバーは、IP アドレスから ATM アドレスへのマッピングのテーブルを構築します。あるクライアントが IP パケットをほかのクライアントに送信するときには、宛先クライアントの ATM アドレスは不明で、IP アドレスだけがわかっています。発信元のクライアントは、ARP サーバーに宛先クライアントの ATM アドレスを照会します。クライアントは、目的の ATM アドレスが含まれている応答を受信すると、ターゲット クライアントとの間に ATM 接続を直接確立し、その接続を通じて IP パケットを送信します。

サーバーへの接続を含め、ATM 接続が非アクティブになると、クライアントは接続をクローズします。すべてのクライアントは、自分の IP アドレスおよび ATM アドレスの最新情報を定期的にサーバーから取得します。この更新は、既定では、15 分おきに行われます。一定時間 (既定では 20 分) が経過しても更新されていないエントリは、サーバーによって削除されます。ATM ARP クライアントと ARP サーバーは、どちらも調整可能なレジストリ パラメータをいくつかサポートしています。詳細については、「付録 A」を参照してください。

ICMP (Internet Control Message Protocol)

ICMP は、RFC 792 で規定されている保守プロトコルです。通常は、IP レイヤの一部とみなされます。ICMP メッセージは、IP データグラム内にカプセル化されるので、インターネットワーク全体にわたってルーティングできます。Windows NT および Windows 2000 では、次の目的で ICMP を使用します。

  • ルーティング テーブルを構築および維持する。

  • ルーター ディスカバリを実行する。

  • パス最大転送ユニット (PMTU) の発見を補助する。

  • 問題を診断する (pingtracertpathping)。

  • フロー制御を調整して、リンクやルーターの飽和を防止する。

ICMP ルーター発見

Windows 2000 では、RFC 1256 に規定されているルーター発見を実行できます。このルーター発見では、ホストが、手動または DHCP で構成されたデフォルト ゲートウェイを使用せずに、自分のサブネット上のルーターを動的に発見できます。プライマリ ルーターに障害が発生したり、ネットワーク管理者がルーターの設定を変更したときには、ホストはバックアップ ルーターに自動的に切り替えることができます。

ルーター発見をサポートしているホストは、初期化時に全システム IP マルチキャスト グループ (224.0.0.1) に参加し、ルーターがそのグループに送信するルーター アドバタイズをリッスンします。また、ホストは、インターフェイスが構成中の遅延を避けるために初期化されたときに、全ルーター IP マルチキャスト アドレス (224.0.0.2) に対してルーター要請メッセージを送信することもできます。Windows 2000 では、約 600 ミリ秒間隔で 3 つまでの要請メッセージが送信されます。

Windows 2000 では、ルーター発見の使用をレジストリ パラメータ "PerformRouterDiscovery" および "SolicitationAddressBCast" で制御します。既定では、DHCP によって制御されます。

"SolicitationAddressBCast" を 1 に設定すると、RFC で規定されているマルチキャストではなく、ブロードキャストによってルーター要請が送信されます。

ルートテーブルの維持

Windows ベースのコンピュータの初期化時には、通常、ルート テーブルにはごく少数のエントリだけが格納されます。これらのエントリのうち、1 つはデフォルト ゲートウェイを指定するものです。データグラムの宛先 IP アドレスに適したルートがルート テーブルに含まれていなければ、そのデータグラムはデフォルト ゲートウェイに送信されます。しかし、ルーター間ではネットワーク トポロジに関する情報が共有されているので、特定のアドレスへのより適切なルートをデフォルト ゲートウェイが判断できることがあります。この場合、より適切なパスを与えることのできるデータグラムを受け取ったルーターは、そのデータグラムを通常どおり転送します。そのうえで、"ICMP リダイレクト" メッセージを使用して、より適切なルートを送信元に通知します。これらのメッセージでは、ホスト、サブネット、またはネットワーク全体に対するリダイレクトを指定できます。Windows ベースのコンピュータが ICMP リダイレクトを受信すると、その ICMP リダイレクトが現在のルートの第 1 ホップ ゲートウェイから送信されたものかどうかを確認し、そのゲートウェイが直接接続されたネットワーク上に存在するかどうかを確認するための妥当性チェックが行われます。これらを確認できた場合は、その宛先 IP アドレスに対して、有効期間 10 分のホスト ルートがルート テーブルに追加されます。ICMP リダイレクトが現在のルートの第 1 ホップ ゲートウェイから送信されたものでない場合や、ゲートウェイが直接接続されたネットワーク上に存在していない場合には、ICMP リダイレクトは無視されます。

パス最大転送ユニット (PMTU) の発見

TCP では、パス最大転送ユニット (PMTU) の発見を採用しています。詳細については、後の「伝送制御プロトコル (TCP)」で述べますが、このメカニズムは ICMP の "Destination Unreachable" メッセージに依存しています。

ICMP を使った問題診断

  • ICMP エコー要求を IP アドレスに送信し、ICMP エコー応答を待機するには、コマンド ライン ユーティリティ "ping" を使用します。ping は、受信した応答の数と、要求を送信してから応答を受信するまでに経過した時間を報告します。ping ユーティリティには、豊富なオプションがあります。ping については、このホワイト ペーパーのトラブルシューティングの節で詳細に述べます。

  • "tracert" は、利用価値の高いルートトレース ユーティリティです。tracert は、ICMP エコー要求を IP アドレスに送信しながら、IP ヘッダー内の Time to Live (TTL) フィールドを 1 から順に増分し、返された ICMP エラーを分析します。引き続き送信される各エコー要求は、TTL フィールドが 0 になり、転送しようとしているルーターが ICMP の "Time Exceeded" エラー メッセージを返す前に、ネットワーク内で 1 ホップ先に進む必要があります。tracert は、パス内のルーターのうち、これらのエラー メッセージを返したルーターを順に示すリストを出力します。各 IP アドレスに対する DNS 逆照会を禁止する -d スイッチを使用すると、各ルーターに近い側のインターフェイスのアドレスが報告されます。次に示す例では、ポイントツーポイント プロトコル (PPP) でダイヤルインしたコンピュータからシアトルのインターネット プロバイダを通じて http://www.whitehouse.govleave-ms に至るまでのルートを tracert で調べています。

    C:\>tracert www.whitehouse.gov

    Tracing route to www.whitehouse.gov [128.102.252.1]
    over a maximum of 30 hops:
    1 300 ms 281 ms 280 ms roto.seanet.com [199.181.164.100]
    2 300 ms 301 ms 310 ms sl-stk-1-S12-T1.sprintlink.net [144.228.192.65]
    3 300 ms 311 ms 320 ms sl-stk-5-F0/0.sprintlink.net [144.228.40.5]
    4 380 ms 311 ms 340 ms icm-fix-w-H2/0-T3.icp.net [144.228.10.22]
    5 310 ms 301 ms 320 ms arc-nas-gw.arc.nasa.gov [192.203.230.3]
    6 300 ms 321 ms 320 ms n254-ed-cisco7010.arc.nasa.gov [128.102.64.254]
    7 360 ms 361 ms 371 ms www.whitehouse.gov [128.102.252.1]

  • "pathping" は、ping の機能と tracert の機能を組み合わせて、新しい機能をいくつか追加したコマンド ライン ユーティリティです。pathping は、tracert のトレース機能を提供するとともに、設定された時間が経過するまで、ルート上の各ホップを ping し、遅延時間とパケット損失を表示します。これらの情報は、パス内に弱いリンクが存在するかどうかを確認するのに役立ちます。

QoS (Quality of Service) および RSVP (Resource Reservation Protocol)

Windows 2000 では、QoS のサポートも追加されています。Windows 2000 は、RSVP (Resource reSerVation Protocol) や Diffserv (Differentiated Services)、IEEE 802.1p、ATM QoS など複数の QoS メカニズムをサポートしています。Windows 2000 でサポートされている QoS メカニズムは、GQoS (Generic QoS) API を通じて抽出されたものです。ここでは、スタックからの QoS サポートと関連するシステム コンポーネントの概要を示します。

GQoS API は、Winsock プログラミング インターフェイスに対する拡張インターフェイスです。クライアントとサーバーの間の帯域幅を予約するための方法をアプリケーションに提供する API とシステム コンポーネントが含まれています。Windows 2000 では、GQoS 要求が RSVP、Diffserv、802.1p、ATM QoS などの QoS メカニズムに自動的にマッピングされます。RSVP は、ネットワーク上の個々のフローに対して帯域幅を予約するためのレイヤ 3 シグナル化プロトコルです。RSVP は、フローごとに予約を設定するので、フロー別の QoS メカニズムと呼ばれます。Diffserv も、レイヤ 3 QoS メカニズムです。Diffserv では、IP ヘッダー内の 6 ビットを定義して、IP パケットの優先度を決定します3。Diffserv トラフィックには、ホップ別動作 (PHB) と呼ばれる 64 のクラスで優先度を設定できます。一方、802.1p は、イーサネット スイッチなどのレイヤ 2 デバイスがトラフィックに優先度を設定する方法を定義するレイヤ 2 QoS メカニズムです。802.1p では、0 ~ 7 の 8 つの優先度クラスを定義します。DiffServ と 802.1p は、すべてのトラフィックを有限数の優先度クラスに分類するので、集計 QoS メカニズムと呼ばれます。

アプリケーションと GQoS の間の対話は、次のような一連のイベントを通じて行われます。

  1. アプリケーションが GQoS 経由で QoS を概算要求します。

  2. アプリケーションの要求が RSVP シグナル化メッセージに変換されます。RSVP シグナル化メッセージがネットワーク上に送出され、ネットワーク パス内で RSVP に対応しているすべてのノードで帯域幅が予約されます。

  3. RSVP メッセージは、予約を設定するほか、ネットワーク上のポリシー サーバーによる監査を受けます。ポリシー サーバーは、ネットワーク ポリシーに違反している RSVP 要求を拒否できます。ネットワーク管理者は、これを利用して QoS の取得権限を制限できます。

  4. Windows 2000 は、RSVP 予約がインストールされると、そのフローのすべての発信パケットに対して、適切な DiffServ クラスおよび 802.1p 優先度の設定を開始します。

  5. フローからネットワーク内に送出されたトラフィックに対しては、802.1p が有効になっているイーサネット スイッチでは 802.1p の優先度設定が適用され、RSVP が有効になっているルーターでは RSVP 予約が適用され、DiffServ が有効になっているネットワーク内のクラウドでは DiffServ の優先度設定が適用されます。

このほかにも、QoS がいくつかあります。そのうちの 1 つは、ATM 上の 統合サービス (ISATM) です。ISATM は、従来型 IP over ATM ネットワーク上で GQoS 要求を ATM QoS 要求に自動的にマッピングします。さらに、Integrated Services Over Low Bit Rate (ISSLOW) があります。これは、低速な WAN リンク上の優先度付きトラフィックの待ち時間を改善する QoS メカニズムです。制御アプリケーションや管理アプリケーションでは、GQoS API のほかに、Traffic Control (TC) API を経由してトラフィック制御機能にアクセスすることができます。TC API は、制御アプリケーションや管理アプリケーションが QoS 非対応のアプリケーションに対しても、サービスの質の向上にある程度まで寄与できるようにします。Windows 2000 には、QoS 受付制御サービス (QoS ACS) と呼ばれるポリシー サーバーが用意されています。ネットワーク管理者は、QoS ACS を通じて、ネットワーク上の QoS の取得権限を制御できます。さらに、QoS ACS には、ローカル ポリシー モジュール (LPM) API と呼ばれる API があります。ISV は、LPM API を使用して、QoS ACS のポリシーの強制適用機能を補足するカスタム ポリシー モジュールを構築することができます。

図 2 は、QoS および RSVP に関連するシステム コンポーネントを示しています。GQoS は、RSVP シグナル化の呼び出し、トラフィック制御のトリガ、アプリケーションへのイベント通知が可能な QoS プロバイダです。Rsvp.exe は、ネットワークとの間の RSVP シグナル化を実行し、Traffic.dll を呼び出してスタックにフローおよびフィルタを追加します。Packet Classifier は、Traffic.dll によって示されたパケット フィルタに従ってパケットを分類します。パケット スケジューラは、トラフィックの分類ごとに個別のキューを維持します。パケット スケジューラには、適合度アナライザ、シェイパー、およびパケット シーケンサが含まれています。シェイパは、ネゴシエートされた速度でフローがパケット キューに入るように管理し、シーケンサは管理対象のキューの優先度順にパケットをネットワーク インターフェイスに送出します。QoS 仕様のないトラフィックは、優先度の最も低いベスト エフォート キューに入ります。

図 2: QoS/RSVP アーキテクチャ

2: QoS/RSVP アーキテクチャ

図 2 のフローチャートは、アプリケーションが QoS RSVP をどのように使用してデータのフローを 1 つまたは複数のクライアントに配信するかを示しています。この例のアプリケーションはオーディオ サーバーです。クライアントに十分なオーディオ品質を提供するには、1 MB/秒の帯域幅が恒例的に必要です。RSVP は、ユニキャスト フローとマルチキャスト フローをともにサポートしています。この例では、単一のクライアントに対するユニキャスト フローを使用しています。

アプリケーションは、GQoS に提供する構造体を初期化し、完成させます。この構造体には、送信フローおよび受信フローの仕様が含まれます。フロー仕様は、ピーク帯域幅、待ち時間、遅延時間の変動、サービスの種類などのパラメータで構成されます。サービスの種類には、[制御された読み込み] や [保証されたサービス] などがあります。

アプリケーションは、次に、"WSAConnect" を呼び出してクライアントに接続します。この関数を呼び出すと、いくつかのイベントがトリガされます。RSVP が呼び出され、特殊なパス メッセージが送信されます。フローの行き先と同じ宛先 IP アドレスにパス メッセージが送信されますが、これはあくまでフロー内のルーターを設定し、フローを識別することを目的としています。パス メッセージを受信したルーターは、自分の IP アドレスをパス メッセージの最後のホップに挿入してから、パス内の次のルーターにメッセージを転送します。メッセージがクライアントに届くまで、これが繰り返されます。この過程を経て、クライアントは送信側とクライアント自身の間のパスを認識できるようになり、また、そのパスの帯域幅をアプリケーションのために予約できるようになります。クライアントは、同じパスを通じて、予約要求 (必要な帯域幅をもう一度記述) を返します。パス上のルーターは、各々が利用できるリソースを調べ、予約を受け付けることが可能かどうかを判定する責任を持ちます。パス上のすべてのルーターが予約を受け付けた場合、アプリケーション側では必要なネットワーク帯域幅やその他の特性が確保されるものと期待できます。

ネットワークは変化が激しく、サーバーやクライアントがネットワークへの通知なしに誤ってリソースを破棄する可能性があるため、パス メッセージと予約要求の両方を頻繁に更新する必要があります。ネットワークに変化がない場合に新しいパス メッセージおよび予約要求を発行したときは、既存のパスだけが更新されることになります。しかし、新しいルーターが追加された場合は、これらを発行することで、ネットワークで調整が行われる間に動的にフローのパスが変更されることになります。

多数のクライアントへのマルチキャストにサーバー アプリケーションを使用している場合も、同様な一連のイベントが発生します。ただし、注目すべき違いが 1 つあります。同じフローを参照している多数のクライアントからルーターが予約要求を受信したときには、ルーターが個々の予約を同じ情報フローに対して維持せずに、予約要求を結合することがあります。

これらのトピックの詳細については、Winsock2 仕様および RFC 2205 を参照してください。

IP セキュリティ (IPSec)

Windows 2000 では、新しい機能として、IP セキュリティ (IPSec) が追加されています。IPSec の機能と実装は非常に複雑です。ここでは概要についてのみ述べます。詳細については、一連の RFC や IETF ドラフトおよびほかの Microsoft ホワイト ペーパーを参照してください。IPSec では、暗号化に基づくセキュリティにより、アクセス制御、コネクションレス整合性、データ オリジンの認証、再生保護、機密性、および制限付きトラフィック フローの機密性を実現しています。IPSec は IP レイヤに用意されているので、IPSec のサービスはスタック内の上位レイヤ プロトコルで利用でき、また既存アプリケーションでも透過的に利用できます。

システムで IPSec を使用すると、セキュリティ プロトコルを選択したり、サービスに使用するアルゴリズムを決定したり、各セキュリティ関係の暗号化キーを確立および維持したりすることができます。IPSec では、ホスト間のパス、セキュリティ ゲートウェイ間のパス、またはホストとセキュリティ ゲートウェイの間のパスを保護することができます。利用可能なサービスのうち、トラフィックに必要なサービスを構成するには、IPSec ポリシーを使います。IPSec ポリシーは、コンピュータ上でローカルに構成できるほか、Active Directory サービスを使用し、Windows 2000 のグループ ポリシー メカニズムを通じて割り当てることもできます。Active Directory を使用している場合、ホストが起動時にポリシーの割り当てを検出してポリシーを取得します。その後、ホストは、ポリシーの更新を定期的にチェックします。IPSec ポリシーでは、コンピュータ間の信頼関係を指定します。IPSec では、証明書と Kerberos のどちらによる認証も可能です。Kerberos に基づく Windows 2000 ドメイン信頼関係を使うのが最も簡単です。事前定義された IPSec ポリシーを構成して、同一のWindows 2000 ドメインか、ほかの信頼される側の Windows 2000 ドメインを信頼するように設定します。

IP レイヤで処理される各 IP データグラムは、セキュリティ ポリシーで指定された一連のフィルタと比較されます。セキュリティ ポリシーは、ドメインに所属しているコンピュータに対して管理者が保守します。IP では、データグラムに対して、次のいずれかの処理を行います。

  • データグラムに IPSec サービスを提供する。

  • データグラムを変更せずに通過させる。

  • データグラムを破棄する。

IPSec ポリシーには、フィルタ、フィルタ処理、認証、トンネル設定、および接続の種類が含まれます。たとえば、同じ Windows 2000 ドメイン内の 2 つのスタンドアロン コンピュータの間で IPSec を使用するように構成すると、セキュリティで保護されたサーバー ポリシーをアクティブにできます。2 つのコンピュータが同じドメインまたは信頼される側のドメインのメンバになっていない場合は、セキュリティで保護されたサーバーで証明書または仮共有キーを使用し、次の方法で信頼関係を構成する必要があります。

  • 2 つのホストの間のすべてのトラフィックを指定するフィルタを設定します。

  • 認証方法を選択します。

  • ネゴシエーション ポリシーを選択します。この場合は、フィルタに一致するすべてのトラフィックに IPSec を使用させるために、セキュリティで保護されたサーバーを選択します。

  • 接続の種類 (LAN、ダイヤルアップ、またはすべて) を指定します。

ポリシーを構成し終えると、フィルタに一致するトラフィックが IPSec のサービスを使用するようになります。IP トラフィック (この場合は、ping のように単純なものも含む) があるホストから別のホストにリダイレクトされると、インターネット キー交換サービス (IKE) を通じて、UDP ポート 500 から短い交信が行われ、セキュリティ アソシエーション (SA) が確立されます。この後、トラフィックのフローが開始します。このように IPSec が有効になった 2 つのホストの間で TCP 接続を設定する場合のネットワーク トレースの例を次に示します。SA の確立後もネットワーク モニタで確認できるのは、IP データグラムのうち、暗号化されていないメディア アクセス制御ヘッダーおよび IP ヘッダーだけです。

Source IP Dest IP Prot Description

davemac-ipsec calvin-ipsec UDP Src Port: ISAKMP, (500); Dst Port: ISAKMP (500); Length = 216 (0xD8)
calvin-ipsec davemac-ipsec UDP Src Port: ISAKMP, (500); Dst Port: ISAKMP (500); Length = 216 (0xD8)
davemac-ipsec calvin-ipsec UDP Src Port: ISAKMP, (500); Dst Port: ISAKMP (500); Length = 128 (0x80)
calvin-ipsec davemac-ipsec UDP Src Port: ISAKMP, (500); Dst Port: ISAKMP (500); Length = 128 (0x80)
davemac-ipsec calvin-ipsec UDP Src Port: ISAKMP, (500); Dst Port: ISAKMP (500); Length = 76 (0x4C)
calvin-ipsec davemac-ipsec UDP Src Port: ISAKMP, (500); Dst Port: ISAKMP (500); Length = 76 (0x4C)
davemac-ipsec calvin-ipsec UDP Src Port: ISAKMP, (500); Dst Port: ISAKMP (500); Length = 212 (0xD4)
calvin-ipsec davemac-ipsec UDP Src Port: ISAKMP, (500); Dst Port: ISAKMP (500); Length = 172 (0xAC)
davemac-ipsec calvin-ipsec UDP Src Port: ISAKMP, (500); Dst Port: ISAKMP (500); Length = 84 (0x54)
calvin-ipsec davemac-ipsec UDP Src Port: ISAKMP, (500); Dst Port: ISAKMP (500); Length = 92 (0x5C)
davemac-ipsec calvin-ipsec IP ID = 0xC906; Proto = 0x32; Len: 96
calvin-ipsec davemac-ipsec IP ID = 0xA202; Proto = 0x32; Len: 96
davemac-ipsec calvin-ipsec IP ID = 0xCA06; Proto = 0x32; Len: 88

SA の確立後に送信された IP データグラムをオープンしても、そのデータグラムの実際の内容 (TCP SYN や接続要求など) に関する情報はごくわずかしか見ることができません。パケットのうち、明確な部分は、イーサネット ヘッダーと IP ヘッダーだけです。この場合は、TCP ヘッダーさえも暗号化されており、ESP が使用されている場合はネットワーク モニタでも解析できません。

Src IP Dest IP Protoc Description

===================================================
davemac-ipsec calvin-ipsec IP ID = 0xC906; Proto = 0x32; Len: 96
+ FRAME: Base frame properties
+ ETHERNET: ETYPE = 0x0800 : Protocol = IP: DOD Internet Protocol
IP: ID = 0xC906; Proto = 0x32; Len: 96
IP: Version = 4 (0x4)
IP: Header Length = 20 (0x14)
IP: Precedence = Routine
IP: Type of Service = Normal Service
IP: Total Length = 96 (0x60)
IP: Identification = 51462 (0xC906)
+ IP: Flags Summary = 2 (0x2)
IP: Fragment Offset = 0 (0x0) bytes
IP: Time to Live = 128 (0x80)
IP: Protocol = 0x32
IP: Checksum = 0xD55A
IP: Source Address = 172.30.250.139
IP: Destination Address = 157.59.24.37
IP: Data: Number of data bytes remaining = 76 (0x004C)
00000: 52 A4 68 7B 94 80 00 00 90 1D 84 80 08 00 45 00 R.h{..........E.
00010: 00 60 C9 06 40 00 80 32 D5 5A AC 1E FA 8B 9D 3B .`..@..2.Z.....;
00020: 18 25 18 D9 03 E8 00 00 00 01 F6 EF D0 23 1C 59 .%...........#.Y
00030: BD 01 78 BE 69 24 D6 EB AE 4F 08 DA 0F D4 6C 04 ..x.i$...O....l.
00040: 5F BC A6 E0 8D BE 5C 89 2D 56 60 80 FA 8B CC 5E _.....\.-V`....^
00050: 4E 61 3D 46 75 B9 D1 5B 52 45 79 7D 1E 36 1F 01 Na=Fu..[REy}.6..
00060: FF 25 E5 BA 48 AF D7 7A D5 9A 34 3E 5D 7D .%..H..z..4>]}

セキュリティで保護されたサーバー ポリシーを使用すると、IPSec を認識しない宛先や、同じ信頼される側のグループに属していない宛先に対しても、その他の種類のトラフィックの送信がすべて制限されます。Secure Initiator ポリシーには、サーバーに最も適切な設定値が含まれています。トラフィック セキュリティが試行されますが、クライアントが IPSec を認識しない場合は、ネゴシエーションが取り消され、クリア テキスト パケットが送信されます。

データの暗号化に IPSec を使用している場合は、暗号化のオーバーヘッドによりネットワーク全体のパフォーマンスが低下します。このオーバーヘッドの影響を軽減するには、暗号化専用のハードウェア デバイスを用意することができます。NDIS 5.0 では、タスク オフロードがサポートされているので、暗号化ハードウェアを NIC に搭載することは技術的に可能です。IPSec ハードウェア オフロードをサポートする NIC は、多数のベンダから供給されています。

IPSec は、パブリック ネットワーク トラフィックと機密性が要求される企業や政府機関の内部トラフィックのどちらの保護についても、今後の普及が見込まれます。機密情報の保存や提供に使用される特定のサーバーについてのみ、IPSec のセキュリティで保護されたサーバー ("secure server") ポリシーを適用する実装方法が一般的になる可能性もあります。

インターネット グループ管理プロトコル (IGMP)

Windows 2000 には、RFC 1112 および RFC 2236 で規定されている IP マルチキャスト (IGMP Version 2) に対するレベル 2 (完全) サポートが組み込まれています。ここでは、IP マルチキャストの要点を把握しやすいように、RFC 1112 の記述を引用します。次のように記述されています。

「IP マルチキャストでは、"ホストグループ" (単一の IP 宛先アドレスで識別される 0 または 1 つ以上のホストの集合) に対して IP データグラムを転送する。マルチキャストされたデータグラムは、宛先ホスト グループのすべてのメンバに対して、通常のユニキャスト IP データグラムと同様に "ベスト エフォート" の信頼性で配信される。つまり、データグラムが宛先グループのすべてのメンバに、一切の変更なく配信される保証はなく、また、ほかのデータグラムとの相対的な順序が維持される保証もない。」

「ホスト グループに対しては任意の時点でホストの追加や削除が行われるため、ホスト グループのメンバ構成は動的に変化する。ホスト グループの保存場所や数に関する制限はない。あるホストが同時に複数のグループのメンバになることもできる。グループのメンバになっていないホストに対してもデータグラムの送信は可能である。」

「ホスト グループは、恒久グループと一時グループのいずれとしても作成できる。恒久グループには、管理者が既知の IP アドレスを割り当てる。恒久的になるのは、グループのメンバ構成ではなく、アドレスである。恒久グループのメンバ数は、どの時点においても任意であり、0 であってもかまわない。恒久グループ用に予約されていない IP マルチキャスト アドレスは、1 つ以上のメンバが含まれている間のみ存在する一時グループに動的に割り当てることができる。」

「IP マルチキャスト データグラムのインターネットワーク転送は、マルチキャスト ルーターによって処理される。マルチキャスト ルーターは、インターネット ゲートウェイと共存させることも、別個に用意することもできる。ホストは、宛先ホスト グループ内で隣接するすべてのメンバに到着するローカル ネットワーク マルチキャストとして、IP マルチキャスト データグラムを転送する。データグラムの IP Time-to-Live フィールドの値が 1 より大きければ、ローカル ネットワークに接続されている 1 つまたは複数のマルチキャスト ルーターが、宛先グループのメンバの所属しているほかのすべてのネットワークに向けて、そのデータグラムを転送しなければならない。IP Time-to-Live 値が 0 になるまでに到着可能なほかのメンバ ネットワーク上では、接続されているマルチキャスト ルーターがデータグラムをローカル マルチキャストとして転送することで、配信を完了する。」

IP マルチキャスト用の IP/ARP 拡張機能

IP マルチキャストをサポートするために、ホスト上では別のルートが定義されます。このルートは、既定で追加されます。このルートでは、データグラムをマルチキャスト ホスト グループに送信する場合に、データグラムをデフォルト ゲートウェイに転送せずに、ローカル インターフェイス カードを通じてホスト グループの IP アドレスに送信するように指定します。このルートの例を次に示します。なお、このルートを表示するには、"route print" コマンドを使います。

Network Address Netmask Gateway Address Interface Metric

224.0.0.0 224.0.0.0 10.99.99.1 10.99.99.1 1

ホスト グループ アドレスは、クラス D 範囲 (224.0.0.0 ~ 239.255.255.255) から得られているので、識別が容易です。これらの IP アドレスは、いずれも上位ビットが 1110 になっています。

ローカル インターフェイスを使ってパケットをホスト グループに送信するには、IP アドレスをメディア アクセス制御アドレスに解決する必要があります。RFC には、次の記述があります。

「IP ホスト グループ アドレスをイーサネット マルチキャスト アドレスにマッピングするには、IP アドレスの下位 23 ビットをイーサネット マルチキャスト アドレスの下位 23 ビット 01-00-5E-00-00-00 (hex) に置く。IP ホスト グループ アドレスには、28 の有効ビットがあるので、複数のホスト グループ アドレスが同じイーサネット マルチキャストにマッピングされる可能性がある。」

たとえば、マルチキャスト アドレス 225.0.0.5 を宛先とするデータグラムは、(イーサネット) メディア アクセス制御アドレス 01-00-5E-00-00-05 に送信されます。このメディア アクセス制御アドレスは、01-00-5E を 225.0.0.5 の下位 23 ビット (00-00-05) と結合したものです。

複数のホスト グループ アドレスが同じイーサネット マルチキャストにマッピングされる可能性があるので、どのローカル アプリケーションも関与を持たないホスト グループに対するハンドアップ マルチキャストがインターフェイスに示されることがあります。これらの付加的なマルチキャストは、TCP/IP によって破棄されます。

Windows Sockets に対するマルチキャスト拡張機能

現時点では、インターネット プロトコル マルチキャストは、タイプが SOCK_DGRAM および SOCK_RAW の AF_INET ソケット上でのみサポートされています。既定では、IP マルチキャスト データグラムは、Time to Live (TTL) 値を 1 に設定した状態で送信されます。アプリケーションから TTL を指定するには、"setsockopt" 関数を使用します。一般に、マルチキャスト ルーターでは、データグラムをどこまで転送するかを判断するのに TTL しきい値が使用されます。これらの TTL しきい値は、次のように定義されています。

  • 初期 TTL が 0 のマルチキャスト データグラムは、同一ホストに制限されます。

  • 初期 TTL が 1 のマルチキャスト データグラムは、同一サブネットに制限されます。

  • 初期 TTL が 32 のマルチキャスト データグラムは、同一サイトに制限されます。

  • 初期 TTL が 64 のマルチキャスト データグラムは、同一地域に制限されます。

  • 初期 TTL が 128 のマルチキャスト データグラムは、同一大陸に制限されます。

  • 初期 TTL が 255 のマルチキャスト データグラムは、送信範囲が無制限になります。

Windows コンポーネントによる IGMP の使用

Windows NT と Windows 2000 のコンポーネントには、IGMP を使用するものがあります。たとえば、ルーター発見には、既定でマルチキャストが使用されます。WINS サーバーでは、レプリケーション パートナーの検索時にマルチキャストが使用されます。

伝送制御プロトコル (TCP)

TCP は、接続に基づいた、信頼性の高いバイト ストリーム サービスをアプリケーションに提供します。Microsoft ネットワークでは、ログオン、ファイルとプリンタの共有、ドメイン コントローラ間での情報のレプリケーション、ブラウズ リストの転送などの一般的な機能に TCP トランスポートを使用します。ただし、TCP トランスポートは、1 対 1 の通信にしか使用できません。

TCP では、ネットワーク障害が未検出のままになる可能性を減らすために、各セグメントのヘッダーとペイロードの両方にチェックサムを使用します。NDIS 5.0 では、タスク オフロードをサポートしています。Windows 2000 TCP では、NIC ドライバ側でチェックサムがサポートされている場合には、NIC に TCP チェックサム計算を処理させることが可能です。スループットが非常に高い環境では、チェックサム計算をハードウェアで実行すると、パフォーマンスが向上します。さらに、Windows 2000 TCP は、過去数年間にわたって被害が報告されてきたさまざまな攻撃に対抗できるように強化されており、今後の攻撃にも可能な限り対抗できるように Microsoft 社内のセキュリティ レビューを受けてきています。たとえば、初期シーケンス番号アルゴリズムは、ISN がランダムな増分で増加するように変更されています。これには、システム起動時に 2,048 ビットのランダム キーで初期化される RC4 ベースの乱数生成機能が使用されています。

TCP 受信ウィンドウサイズの計算とウィンドウスケーリング (RFC 1323)

TCP 受信ウィンドウのサイズは、接続上で同時にバッファに格納できる受信データの量 (バイト数) です。送信ホストが受信ホストからの肯定応答とウィンドウ更新を待機する前に送信できるデータは、この量に制限されます。Windows 2000 TCP/IP スタックは、ほとんどの環境でセルフ チューニングが可能なように設計されており、以前のバージョンよりも既定ウィンドウ サイズが大きくなっています。受信ウィンドウのサイズはハードコーディングされておらず、接続のセットアップ中にネゴシエートされた最大セグメント サイズ (MSS) の均等な増分に調整されます。受信ウィンドウを MSS の均等な増分に一致させることで、一括データ転送中にフルサイズ TCP セグメントが使用される割合が高くなっています。

既定では、次のように計算された値が受信ウィンドウのサイズとなります。

  1. リモート ホストに最初に送信された接続要求では、受信ウィンドウ サイズが 16 KB (16,384 バイト) としてアドバタイズされます。

  2. 接続が確立されると、受信ウィンドウのサイズは、接続のセットアップ中にネゴシエートされた最大セグメント サイズ (MSS) の均等な増分に一致するように切り上げられます。

  3. その値が MSS の 4 倍未満の場合は、MSS の 4 倍に調整されます。ウィンドウ スケーリング オプション (RFC 1323) が有効でない限り、最大サイズは 64 KB となります。

イーサネットの場合、ウィンドウのサイズは通常、17,520 バイト (16 KB) になります。これは、1,460 バイトのセグメント 12 個分まで切り上げたものです。受信ウィンドウのサイズを特定の値に設定するには、次の 2 通りの方法があります。

  • "TcpWindowSize" レジストリ パラメータ (「付録 A」参照)

  • Windows Sockets の "setsockopt" 関数 (ソケット別の設定)

高帯域幅、高遅延のネットワークのパフォーマンスを向上するために、Windows 2000 ではスケーラブル ウィンドウ (RFC 1323) がサポートされるようになりました。この RFC には、接続の確立時に TCP がウィンドウ サイズのスケーリング率をネゴシエートできるようにすることで、スケーラブル ウィンドウをサポートする方法が詳細に規定されています。この方法では、実際の受信ウィンドウ サイズを 1 GB まで確保できます。RFC 1323 のセクション 2.2 には、次の記述があります。

「TCP は、SYN セグメントに 3 バイトの Window Scale オプションを含めて送信できる。このオプションは、1. TCP でウィンドウ スケーリングの送信と受信の両方を行う準備ができていることを示すこと、および、2. 受信ウィンドウに適用するスケール率をやり取りすることを目的とする。したがって、ウィンドウのスケーリングの準備ができた TCP は、自分のスケール率が 1 の場合でも、このオプションを送信するのが望ましい。スケール率は、2 の累乗に制限され、対数的に暗号化される。このため、バイナリ シフト操作による実装が可能である。」

TCP Window Scale Option (WSopt):

Kind: 3 Length: 3 bytes
+---------+---------+---------+
| Kind=3 |Length=3 |shift.cnt|
+---------+---------+---------+

「このオプションは、送信側が受信側に提示するものであって、必ずしも実際に適用されるとは限らない。ウィンドウのスケーリングを双方向に可能にするには、両方の側で SYN セグメントに Window Scale オプションを含めて送信する必要がある。ウィンドウのスケーリングを有効にすると、このオプションを送信した TCP は、SEG.WND での転送に対して、実際の受信ウィンドウ値を 'shift.cnt' ビット右にシフトする。"shift.cnt" の値は 0 に設定することもできる。0 の場合は、受信ウィンドウにスケール率 1 を適用しながら、スケーリングを提示することになる。」

「このオプションは、最初の <SYN> セグメント (SYN ビットがオンで ACK ビットがオフのセグメント) に含めて送信することもできる。また、最初の <SYN> セグメントに含まれる Window Scale オプションが受信された場合に限り、<SYN,ACK> セグメントに含めて送信することも可能である。SYN ビットを持たないセグメントに含めた Window Scale オプションは無視される。」

「SYN セグメント (<SYN> セグメントまたは <SYN,ACK> セグメント) 自体は、スケーリングの対象にならない。」

スケーラブル ウィンドウをサポートしている 2 つのコンピュータによって確立された接続のネットワーク トレースを読むときは、トレース内にアドバタイズされているウィンドウ サイズを、ネゴシエートされたスケール率でスケーリングする必要があることに注意してください。次に示すネットワーク モニタ キャプチャでは、接続確立パケット (3 方向ハンドシェイク パケット) にスケール率が含まれています。

*************************************************************************

**************************
Src Addr Dst Addr Protocol Description
THEMACS1 NTBUILDS TCP ....S., len:0, seq:725163-725163,
ack:0, win:65535, src:1217 dst:139
+ FRAME: Base frame properties
+ ETHERNET: ETYPE = 0x0800 : Protocol = IP: DOD Internet
Protocol
+ IP: ID = 0xB908; Proto = TCP; Len: 64
TCP: ....S., len:0, seq:725163-725163, ack:0, win:65535,
src:1217 dst:139 (NBT Session)
TCP: Source Port = 0x04C1
TCP: Destination Port = NETBIOS Session Service
TCP: Sequence Number = 725163 (0xB10AB)
TCP: Acknowledgement Number = 0 (0x0)
TCP: Data Offset = 44 (0x2C)
TCP: Reserved = 0 (0x0000)
+ TCP: Flags = 0x02 : ....S.
TCP: Window = 65535 (0xFFFF)
TCP: Checksum = 0x8565
TCP: Urgent Pointer = 0 (0x0)
TCP: Options
+ TCP: Maximum Segment Size Option
TCP: Option Nop = 1 (0x1)
TCP: Window Scale Option
TCP: Option Type = Window Scale
TCP: Option Length = 3 (0x3)
TCP: Window Scale = 5 (0x5)
TCP: Option Nop = 1 (0x1)
TCP: Option Nop = 1 (0x1)
+ TCP: Timestamps Option
TCP: Option Nop = 1 (0x1)
TCP: Option Nop = 1 (0x1)
+ TCP: SACK Permitted Option
00000: 8C 04 C8 BD A3 82 00 00 50 7D 83 80 08 00 45 00 ........P}....E.
00010: 00 40 B9 08 40 00 80 06 A7 1A 9D 36 15 FD AC 1F .@..@......6....
00020: 3B 42 04 C1 00 8B 00 0B 10 AB 00 00 00 00 B0 02 ;B..............
00030: FF FF 85 65 00 00 02 04 05 B4 01 03 03 05 01 01 ...e............
00040: 08 0A 00 00 00 00 00 00 00 00 01 01 04 02 ..............
*************************************************************************
**************************

上に示したパケットを送信しているコンピュータは、スケール率 5 で Window Scale オプションをターゲット コンピュータに提示し、ターゲット コンピュータの肯定応答を待機します。ターゲット コンピュータから SYN-ACK で Window Scale オプションを受け付ける応答があれば、このコンピュータによってアドバタイズされる TCP ウィンドウは、今後、5 ビット左にシフトする必要があるものとみなされます。ただし、SYN 自体は、スケーリングされません。たとえば、コンピュータがデータを最初に送信するときに 32 KB ウィンドウをアドバタイズした場合には、次に示すように、この値を 5 ビット左にシフト (0 を右から左にシフト) する必要があります。

32Kbytes = 0x7fff = 111 1111 1111 1111

Left-shift 5 bits = 1111 1111 1111 1110 0000 = 0xffffe (1,048,544
bytes)
ある数を 5 ビット左にシフトするのはその数に 25 または 32 を掛けるのと同じです。 32767 * 32 = 1,048,544

スケール率を対称に設定する必要はなく、データ フローの方向ごとに異なっていてもかまいません。

Windows 2000 では、TcpWindowSize の設定値が 64 KB より大きく、Tcp1323Opts レジストリ パラメータが適切に設定されていれば、ウィンドウのスケーリングが自動的に適用されます。このパラメータの詳細については、「付録 A」を参照してください。

遅延肯定応答

RFC 1122 で規定されているように、TCP では、メディア上で送信されるパケットの数を低減するために遅延肯定応答 (ACK) を使用します。Microsoft TCP/IP スタックでは、一般的なアプローチで遅延 ACK を実装しています。接続上でデータを受信した TCP は、次のいずれかの場合にのみ肯定応答をデータの送信元に返します。

  • 前に受信したセグメントに対して ACK を送信していない場合

  • セグメントを受信したが、その接続を通じて 200 ミリ秒以内にほかのセグメントが到着していない場合

通常、ACK は、遅延 ACK タイマ (200 ミリ秒) がタイムアウトにならない限り、接続上で受信したその他の各 TCP セグメントに対して送信されます。遅延 ACK タイマは、Windows 2000 で新しく追加された "TcpDelAckTicks" レジストリ パラメータを通じて調整できます。

TCP Selective Acknowledgment (RFC 2018)

Windows 2000 では、"Selective Acknowledgement" (SACK) と呼ばれる重要な性能向上機能をサポートしています。SACK は、特にサイズの大きい TCP ウィンドウを使用する接続の場合に重要性が高くなります。SACK を使用していない場合、受信側で応答できるのは受信した連続データの最新のシーケンス番号 (受信ウィンドウの左端) だけです。SACK を有効にすると、受信側では、従来どおり ACK 番号を使って受信ウィンドウの左端に応答できるほか、受信したデータのその他の非連続ブロックに個別に応答することもできます。SACK では、次に示すように TCP ヘッダー オプションを使用します。RFC 2018 から直接引用した記述を次に示します。

Sack-Permitted オプション

「接続のオープン後に SACK オプションを受信できるように (通常は処理もできるように) 拡張された TCP では、この 2 バイト オプションを SYN に含めて送信できる。このオプションを非 SYN セグメントに含めて送信してはならない。」

TCP Sack-Permitted Option:

Kind: 4
+---------+---------+
| Kind=4 | Length=2|
+---------+---------+

Sack オプションの形式

「SACK オプションは、確立済みの TCP 接続を通じて受信側から送信側に拡張肯定応答情報を伝達する目的で使用される。」

TCP SACK Option:

Kind: 5
Length: Variable
+--------+--------+
| Kind=5 | Length |
+--------+--------+--------+--------+
| Left Edge of 1st Block |
+--------+--------+--------+--------+
| Right Edge of 1st Block |
+--------+--------+--------+--------+
| |
/ . . . /
| |
+--------+--------+--------+--------+
| Left Edge of nth Block |
+--------+--------+--------+--------+
| Right Edge of nth Block |
+--------+--------+--------+--------+

SACK が有効なときは (既定の設定)、単一または複数のパケットが破棄されても、受信側では、どのデータを受信したか、データのどの部分が欠落しているかを送信側に対して正確に通知できます。送信側では、既に正常に受信されているデータ ブロックを再転送せずに、欠落しているデータだけを選択して再転送することができます。SACK は、"SackOpts" レジストリ パラメータで制御できます。次に示すネットワーク モニタ キャプチャでは、ホストがシーケンス番号 54857341 までのすべてのデータと、シーケンス番号 54858789 ~ 54861685 のデータに応答しています。

+ FRAME: Base frame properties

+ ETHERNET: ETYPE = 0x0800 : Protocol = IP: DOD Internet Protocol
+ IP: ID = 0x1A0D; Proto = TCP; Len: 64
TCP: .A...., len:0, seq:925104-925104, ack:54857341, win:32722,
src:1242 dst:139
TCP: Source Port = 0x04DA
TCP: Destination Port = NETBIOS Session Service
TCP: Sequence Number = 925104 (0xE1DB0)
TCP: Acknowledgement Number = 54857341 (0x3450E7D)
TCP: Data Offset = 44 (0x2C)
TCP: Reserved = 0 (0x0000)
+ TCP: Flags = 0x10 : .A....
TCP: Window = 32722 (0x7FD2)
TCP: Checksum = 0x4A72
TCP: Urgent Pointer = 0 (0x0)
TCP: Options
TCP: Option Nop = 1 (0x1)
TCP: Option Nop = 1 (0x1)
+ TCP: Timestamps Option
TCP: Option Nop = 1 (0x1)
TCP: Option Nop = 1 (0x1)
TCP: SACK Option
TCP: Option Type = 0x05
TCP: Option Length = 10 (0xA)
TCP: Left Edge of Block = 54858789 (0x3451425)
TCP: Right Edge of Block = 54861685 (0x3451F75)

TCP タイムスタンプ (RFC 1323)

Windows 2000 では、RFC 1323 で規定されているもう 1 つの機能である TCP タイムスタンプもサポートされています。SACK と同様に、タイムスタンプも、サイズの大きい TCP ウィンドウを使用する接続の場合に重要な機能です。タイムスタンプは、再転送タイムアウトを調整するために必要な往復時間 (RTT) を TCP が正確に計測できるようにすることを目的としています。RFC 1323 からタイムスタンプ用の TCP ヘッダー オプションに関する記述を引用して次に示します。

TCP Timestamps オプション (TSopt) :

Kind: 8

Length: 10 bytes
+-------+-------+---------------------+---------------------+
|Kind=8 | 10 | TS Value (TSval) |TS Echo Reply (TSecr)|
+-------+-------+---------------------+---------------------+
1 1 4 4

「Timestamps オプションは、2 つの 4 バイト タイムスタンプ フィールドで構成される。タイムスタンプ値フィールド (TSval) には、オプションを送信している TCP のタイムスタンプ クロックの現在値が格納される。」

「Timestamp Echo Reply フィールド (TSecr) は、TCP ヘッダー内で ACK ビットが設定されている場合にのみ有効となる。このフィールドには、リモート TCP から Timestamps オプションの TSval フィールドに含めて送信されたタイムスタンプ値がエコーされる。有効でないときの TSecr の値は 0 とする。TSecr の値は、一般に、前回受信した Timestamp オプションから取得されるが、次に述べるような例外がある。」

「TCP は、最初の <SYN> セグメント (SYN ビットはあるが、ACK ビットはないセグメント) に Timestamps オプション (TSopt) を含めて送信できる。また、接続に対する最初の <SYN> セグメントに含まれている TSopt を受信した場合に限り、ほかのセグメントに TSopt を含めて送信できる。」

次のように、ネットワーク モニタ キャプチャ内で TCP オプション フィールドを展開すると、Timestamps オプション フィールドを表示できます。

TCP: Timestamps Option

TCP: Option Type = Timestamps
TCP: Option Length = 10 (0xA)
TCP: Timestamp = 2525186 (0x268802)
TCP: Reply Timestamp = 1823192 (0x1BD1D8)

既定では、タイムスタンプの使用は無効になっています。有効にするには、「付録 A」で説明する "Tcp1323Opts" レジストリ パラメータを使います。

パス最大転送ユニット (PMTU) の発見

PMTU 発見は、RFC 1191 で規定されています。接続の確立時には、接続の両側の 2 つのホストが互いに TCP 最大セグメント サイズ (MSS) の値を交換します。この 2 つの MSS 値のうち、小さい方の値が接続に使用されます。従来、リンク レイヤの MTU から IP ヘッダーおよび TCP ヘッダー用の 40 バイトを引いたものがホストの MSS として使用されていました。しかし、タイムスタンプなど、新しい TCP オプションのサポートにより、典型的な TCP+IP ヘッダーのサイズが 52 バイト以上に増加しています。

図 3 MTU と MSS

3 : MTU MSS

TCP セグメントを非ローカル ネットワークに送信する場合は、IP ヘッダー内の Don't Fragment ビットが設定されます。パス上のルーターやメディアの MTU は、ルートの両側のホストの MTU と異なっている可能性があります。メディア セグメントの MTU がルーティング対象の IP データグラムには小さすぎる場合は、ルーターがその MTU に合わせてデータグラムを断片化しようとしますが、このとき IP ヘッダー内の Don't Fragment ビットが設定されていることが検出されます。この時点で、ルーターは送信側ホストに対し、断片化を行わなければデータグラムをこれ以上転送できないことを通知する必要があります。この通知は、"ICMP Destination Unreachable Fragmentation Needed" メッセージおよび "DF Set" メッセージを通じて行われます。ほとんどのルーターでは、RFC 792 では未使用の ICMP ヘッダー フィールドの下位 16 ビットを使用して、次ホップの MTU も指定します。このメッセージの形式については、RFC 1191 のセクション 4 を参照してください。TCP は、この ICMP エラー メッセージを受信すると、今後、その接続を通じて送信されるパケットが断片化なしで転送できる最大サイズを超えないように、接続の MSS を調整し、指定された MTU から TCP ヘッダーおよび IP ヘッダーのサイズを引いた値に設定します。

メモ MTU の最小許容値は 88 バイトです。Windows 2000 TCP では、この制限が適用されます。

標準に準拠していない一部のルーターでは、断片化できない IP データグラムを通知なしで破棄したり、次ホップ MTU を正しく報告しないことがあります。その場合は、PMTU 検出アルゴリズムの構成変更が必要になることがあります。Windows 2000 の TCP/IP スタックでは、次の 2 つのレジストリ エントリを変更すると、このようなデバイスが原因となって問題が生じるのを回避できます。詳細については、「付録 A」を参照してください。

  • EnablePMTUBHDetect - ブラック ホール ルーターを検出するように PMTU 発見アルゴリズムを調整します。既定では、ブラック ホール検出は無効になっています。

  • EnablePMTUDiscovery - PMTU を完全に有効化または無効化します。PMTU を無効にすると、すべての非ローカル宛先アドレスの MSS が 536 バイトに設定されます。既定では、PMTU 発見は有効になっています。

次に示すように、"ping" コマンドを -f スイッチ (断片化禁止) 付きで使用すると、2 つのホストの間の PMTU を手動で発見できます。

ping -f -n <number of pings> -l <size> <destination ip address>

次の例に示すように、MTU が発見されるまで "size" パラメータの値を変化させます。ping の "size" パラメータでは、ヘッダーを除いた送信データ バッファのサイズを指定します。ICMP ヘッダーは 8 バイトを消費し、IP ヘッダーは通常 20 バイトを消費します。次に示す例 (イーサネット) では、最大サイズの ping バッファに 28 バイトまたは 1,500 バイトを加えたものがリンク レイヤ MTU になります。

C:\>ping -f -n 1 -l 1472 10.99.99.10

Pinging 10.99.99.10 with 1472 bytes of data:

Reply from 10.99.99.10: bytes=1472 time<10ms TTL=128

Ping statistics for 10.99.99.10:

Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),

Approximate round trip times in milli-seconds:

Minimum = 0ms, Maximum = 0ms, Average = 0ms

C:\>ping -f -n 1 -l 1473 10.99.99.10

Pinging 10.99.99.10 with 1473 bytes of data:

Packet needs to be fragmented but DF set.

Ping statistics for 10.99.99.10:

Packets: Sent = 1, Received = 0, Lost = 1 (100% loss),

Approximate round trip times in milliseconds:

Minimum = 0ms, Maximum = 0ms, Average = 0ms

上の例では、ping が解釈した ICMP エラー メッセージが IP レイヤから返されます。ルーターがブラック ホール ルーターである場合は、そのルーターで処理できるサイズを超過した時点で、ping に対する応答がなくなります。ping をこのように使用することで、ブラック ホール ルーターを検出できます。

ICMP の "Destination unreachable" エラー メッセージのサンプルを次に示します。

******************************************************************************

Src Addr Dst Addr Protocol Description
10.99.99.10 10.99.99.9 ICMP Destination Unreachable: 10.99.99.10
See frame 3
+ FRAME: Base frame properties
+ ETHERNET: ETYPE = 0x0800 : Protocol = IP: DOD Internet Protocol
+ IP: ID = 0x4401; Proto = ICMP; Len: 56
ICMP: Destination Unreachable: 10.99.99.10 See frame 3
ICMP: Packet Type = Destination Unreachable
ICMP: Unreachable Code = Fragmentation Needed, DF Flag Set
ICMP: Checksum = 0xA05B
ICMP: Next Hop MTU = 576 (0x240)
ICMP: Data: Number of data bytes remaining = 28 (0x001C)
ICMP: Description of original IP frame
ICMP: (IP) Version = 4 (0x4)
ICMP: (IP) Header Length = 20 (0x14)
ICMP: (IP) Service Type = 0 (0x0)
ICMP: Precedence = Routine
ICMP: ...0.... = Normal Delay
ICMP: ....0... = Normal Throughput
ICMP: .....0.. = Normal Reliability
ICMP: (IP) Total Length = 1028 (0x404)
ICMP: (IP) Identification = 45825 (0xB301)
ICMP: Flags Summary = 2 (0x2)
ICMP: .......0 = Last fragment in datagram
ICMP: ......1. = Cannot fragment datagram
ICMP: (IP) Fragment Offset = 0 (0x0) bytes
ICMP: (IP) Time to Live = 32 (0x20)
ICMP: (IP) Protocol = ICMP - Internet Control Message
ICMP: (IP) Checksum = 0xC91E
ICMP: (IP) Source Address = 10.99.99.9
ICMP: (IP) Destination Address = 10.99.99.10
ICMP: (IP) Data: Number of data bytes remaining = 8 (0x0008)
ICMP: Description of original ICMP frame
ICMP: Checksum = 0xBC5F
ICMP: Identifier = 256 (0x100)
ICMP: Sequence Number = 38144 (0x9500)
00000: 00 AA 00 4B B1 47 00 AA 00 3E 52 EF 08 00 45 00 ...K.G...>R...E.
00010: 00 38 44 01 00 00 80 01 1B EB 0A 63 63 0A 0A 63 .8D........cc..c
00020: 63 09 03 04 A0 5B 00 00 02 40 45 00 04 04 B3 01 c....[...@E.....
00030: 40 00 20 01 C9 1E 0A 63 63 09 0A 63 63 0A 08 00 @. ....cc..cc...
00040: BC 5F 01 00 95 00

このエラーは、イーサネット ベースのホスト上で "ping -f -n 1 -l 1000" コマンドを実行して、大きいサイズのデータグラムを送信し、576 バイトの MTU しかサポートしていないルーターを通過させたときに発生したものです。このルーターは、フレーム サイズより小さい MTU を持つネットワークにフレームを置こうとしたときに、断片化が禁止されていることを検出しました。そのため、転送可能なフレームの最大サイズが 0x240 バイト (576 バイト) であることを示すエラー メッセージを返しました。

デッドゲートウェイの検出

デッド ゲートウェイの検出では、デフォルト ゲートウェイの障害を検出し、ほかのデフォルト ゲートウェイを使用するように IP ルーティング テーブルを調整します。Microsoft TCP/IP スタックでは、RFC 816 で規定されているトリガ再選択法を使用しています。顧客からのフィードバックに基づいて、この方法に若干の修正を加えています。

デフォルト ゲートウェイを通じてルーティングされた TCP 接続で、宛先への TCP パケット送信を特定回数 (レジストリ値 "TcpMaxDataRetransmissions" の 1.5 倍) 繰り返しても応答がない場合は、そのリモート IP アドレスに対するルート キャッシュ エントリ (RCE) がアルゴリズムによって変更され、リスト内の次のデフォルト ゲートウェイが使用されます。TCP 接続の 25 パーセントが次のデフォルト ゲートウェイに移動すると、アルゴリズムが IP に対し、コンピュータのデフォルト ゲートウェイを接続で現在使用中のものに変更するようにアドバイスします。

たとえば、デフォルト ゲートウェイを通じてルーティングされている 11 の異なる IP アドレスに対して TCP 接続が確立されているとします。もう 1 つ別のデフォルト ゲートウェイが構成されており、"TcpMaxDataRetransmissions" の値は既定値の 5 になっているとします。この場合、現在のデフォルト ゲートウェイに障害が発生すると、次のように処理されます。

データを最初に送信しようとした TCP 接続に対して、肯定応答が返されません。再転送に 3 回失敗すると、そのリモート IP アドレスに対する RCE がリスト内の次のデフォルト ゲートウェイに切り替えられます。この時点で、その 1 つのリモート IP アドレスに対する TCP 接続がいずれも切り替えられますが、その他の接続では引き続き、元のデフォルト ゲートウェイを使用しようとします。

データを 2 番目に送信しようとした TCP 接続に対しても、同じことが起こります。この時点で、11 の RCE のうち 2 つが新しいゲートウェイを指すことになります。

データを 3 番目に送信しようとした TCP 接続が再転送に 3 回失敗すると、11 の RCE のうち 3 つが新しいゲートウェイを指すことになります。この時点で、25 パーセント以上の RCE が移動されているので、コンピュータ全体に対するデフォルト ゲートウェイが新しいゲートウェイに変更されます。

このデフォルト ゲートウェイは、障害が発生しデッド ゲートウェイ アルゴリズムが再びリスト内の次のゲートウェイへの切り替えを行うか、またはコンピュータが再起動されるまでの間、そのコンピュータのプライマリ ゲートウェイとなります。

最後のデフォルト ゲートウェイが検索されると、リストの先頭に戻ります。

TCP の再転送動作

TCP は、各発信セグメントが IP に渡されたときに再転送タイマを起動します。あるセグメント内のデータに対する肯定応答が受信される前にタイマがタイムアウトになると、そのセグメントは再転送されます。新しい接続要求があると、再転送タイマは 3 秒 (または、アダプタ別のレジストリ パラメータ "TcpInitialRtt" で構成した値) に初期化され、"TcpMaxConnectRetransmissions" で指定された回数 (Windows 2000 の既定値は 2 回) まで要求 (SYN) が再送信されます。既存の接続に対する再転送の回数は、"TcpMaxDataRetransmissions" レジストリ パラメータで制御されます (既定値は 5)。再転送タイムアウトは、Van Jacobson の論文『Congestion Avoidance and Control』に記載されている Smoothed Round Trip Time (SRTT) 計算を使用して、接続の特性に合わせて動的に調整されます。セグメントのタイマは、そのセグメントが再転送されるたびに 2 倍になります。TCP では、このアルゴリズムにより、接続の通常の遅延に応じたセルフ チューニングを行います。高遅延リンク上の TCP 接続は、低遅延リンク上の TCP 接続よりもタイムアウトが長くなります4

次のトレース クリップは、イーサネットを通じて接続されている同じサブネット上の 2 つのホストに対する再転送のアルゴリズムを示しています。これは、FTP ファイル転送の進行中に、受信側のホストがネットワークから切断された場合のトレースです。この接続の SRTT は非常に小さいため、最初の再転送は、約 0.5 秒後に行われています。それ以降、再転送が行われるたびに、タイマ値が 2 倍に増えていきます。5 回目の再転送の後で、タイマ値がもう一度 2 倍に増やされています。タイムアウトになる前に肯定応答が受信されなければ、接続は中止されます。

delta source ip dest ip pro flags description

0.000 10.57.10.32 10.57.9.138 TCP .A.., len: 1460, seq: 8043781, ack: 8153124, win: 8760
0.521 10.57.10.32 10.57.9.138 TCP .A.., len: 1460, seq: 8043781, ack: 8153124, win: 8760
1.001 10.57.10.32 10.57.9.138 TCP .A.., len: 1460, seq: 8043781, ack: 8153124, win: 8760
2.003 10.57.10.32 10.57.9.138 TCP .A.., len: 1460, seq: 8043781, ack: 8153124, win: 8760
4.007 10.57.10.32 10.57.9.138 TCP .A.., len: 1460, seq: 8043781, ack: 8153124, win: 8760
8.130 10.57.10.32 10.57.9.138 TCP .A.., len: 1460, seq: 8043781, ack: 8153124, win: 8760

再転送タイマがタイムアウトにならなくても、TCP がデータを再転送することがあります。これは、主に、"高速再転送" と呼ばれる機能が使用されている場合に発生します。受信側のホストが高速再転送をサポートしている場合、受信データのシーケンス番号が予想されている番号を超えていると、そのホストはデータの一部が破棄されていると判断します。送信側ホストがこのことを認識できるように、受信側のホストは、予想されているシーケンス番号を ACK 番号として使用して、即時に ACK を送信します。この後も、着信ストリーム内の欠落したデータに後続するデータを格納する TCP セグメントを受信するたびに、ACK を同様に送信します。送信側ホストでは、現在送信しているシーケンス番号よりも若い番号を返す ACK のストリームを受信し始めた時点で、1 つ以上のセグメントが破棄されていることを推定できます。送信側で高速再転送アルゴリズムをサポートしている場合は、データの欠落を埋めるために受信側が求めているセグメントを即時に再送信できます。このとき、そのセグメントに対する再転送タイマがタイムアウトになるまで送信側が待機することはありません。使用率の高いネットワーク環境では、この最適化技法によりパフォーマンスを大幅に向上できます。

Windows 2000 の既定の設定では、同じシーケンス番号の ACK を 3 つ受信し、そのシーケンス番号が現在の番号より遅れいていれば、セグメントが再送信されるようになっています。この動作は、"TcpMaxDupAcks" レジストリ パラメータで制御できます。前の「TCP Selective Acknowledgment (RFC 2018)」も参照してください。

TCP Keep-alive メッセージ

TCP Keep-alive パケットは、シーケンス番号を接続の現在のシーケンス番号より 1 つ小さい番号に設定した ACK です。これらの ACK のいずれかを受信したホストは、現在のシーケンス番号を示す ACK で応答します。Keep-alive は、接続のリモート エンドのコンピュータがまだ利用可能かどうかを確認する目的で使用できます。TCP Keep-alive は、ほかのデータや高レベルの Keep-alive が TCP 接続を通じて転送されていない状態で "KeepAliveTime" に設定した時間が経過するたびに送信されます。このパラメータの既定値は、7,200,000 ミリ秒 (2 時間) です。Keep-alive への応答がなければ、"KeepAliveInterval" に設定した秒数が経過するたびに Keep-alive が再送信されます。"KeepAliveInterval" の既定値は 1 秒です。多くの Microsoft ネットワーク コンポーネントで使用される NetBT 接続では、Keep-alive をもっと高い頻度で送信するので、通常は、NetBIOS 接続上で TCP Keep-alive が送信されることはありません。TCP Keep-alive は既定で無効になっていますが、Windows Sockets アプリケーションでは "setsockopt" 関数を使用して Keep-alive を有効にできます。

スロースタートアルゴリズムと輻輳の回避

TCP は、接続の確立時に時間をかけて起動することで、接続の帯域幅にアクセスするとともに、受信側ホストやパス内のその他のデバイスやリンクのオーバーフローを回避します。送信ウィンドウは 2 つの TCP セグメントに設定されます。応答があれば、送信ウィンドウは 3 つのセグメントに増分されます5。これらへの応答があれば、送信ウィンドウは再び増分され、バーストあたりの送信データの量がリモート ホスト上の受信ウィンドウのサイズに達するまで、この処理が繰り返されます。リモート ホスト上の受信ウィンドウのサイズに達すると、スロー スタート アルゴリズムが使用されなくなり、フロー制御が受信ウィンドウによる制御に切り替わります。ただし、この後も、転送中に輻輳が発生する可能性があります。輻輳が発生し、再転送が必要になると、輻輳回避アルゴリズムによって、送信ウィンドウのサイズが一時的に縮小され、受信ウィンドウのサイズに達するまで増分されます。スロー スタートと輻輳回避に関する記述は、RFC 1122 および RFC 2581 にあります。

Silly Window シンドローム (SWS)

RFC 1122 には、Silly Window シンドローム(SWS) に関して次の記述があります。

「SWS が発生するのは、受信側にデータの受信に利用できる新しいバッファ空間があるときに受信側でウィンドウの右端を先に進めようとした場合と、送信側で任意のサイズの増分ウィンドウを使用している場合に、より多くのデータ [TCP:5] を送信しようとした場合である。その結果、送信側と受信側の両方に接続用バッファ空間が十分にあるにもかかわらず、データがほぼ均等な小さなセグメントに分割されて送信されるという現象が発生することがある。」

Windows 2000 TCP/IP では、RFC 1122 の記述に準拠して、SWS の回避を実装しています。受信側で十分なウィンドウ サイズがアドバタイズされ、完全な TCP セグメントが送信されるようになるまで、送信側から後続のデータを送信しないようになっています。さらに、接続の受信側でも SWS を回避するために、TCP セグメントより小さい増分では受信ウィンドウをオープンしないようになっています。

Nagle アルゴリズム

Windows NT および Windows 2000 TCP/IP では、RFC 896 で規定されている Nagle アルゴリズムを実装しています。このアルゴリズムは、特に高遅延 (リモート) リンクにおける非常に小さいセグメントの送信数を減らすことを目的としています。Nagle アルゴリズムでは、同時に複数の小さいセグメントが応答のないまま未解決になるのを防ぎます。最初の小さいセグメントに対する ACK を待機している間にほかの小さいセグメントが生成されると、それらのセグメントはより大きい 1 つのセグメントとして結合されます。フルサイズのセグメントは常に即時に転送されます。これは、十分なサイズの受信ウィンドウを利用できることを前提としています。Nagle アルゴリズムは、特に低速リンク上で、Telnet などの対話型アプリケーションが送信するパケットの数を減らすのに効果を発揮します。

Nagle アルゴリズムが使用されている場合にネットワーク モニタでキャプチャしたトレースの例を下に示します。このトレースは、PPP を使用してインターネット プロバイダに 9,600 bps でダイヤルアップ接続した状態でキャプチャしたものです。Telnet セッション (キャラクタ モード) が確立されており、Windows NT Workstation 上で "Y" キーが押し下げられています。常に、1 つのセグメントが送信されており、前のセグメントへの応答が受信されるまでスタックが "Y" の文字を保持しています。この例では、バッファに "Y" の文字が 3 つまたは 4 つずつ格納され、1 つのセグメントとして送信されています。Nagle アルゴリズムにより、送信されるパケット数が大幅に低減されています。その減少率は、約 3 分の 1 です。

Time Source IP Dest IP Prot Description

0.644 204.182.66.83 199.181.164.4 TELNET To Server Port = 1901
0.144 199.181.164.4 204.182.66.83 TELNET To Client Port = 1901
0.000 204.182.66.83 199.181.164.4 TELNET To Server Port = 1901
0.145 199.181.164.4 204.182.66.83 TELNET To Client Port = 1901
0.000 204.182.66.83 199.181.164.4 TELNET To Server Port = 1901
0.144 199.181.164.4 204.182.66.83 TELNET To Client Port = 1901
. . .

各セグメントには、複数個の "Y" 文字が含まれています。最初のセグメントをさらに詳細に解析したものを次に示します。データ部は、下の方に 16 進表現で示されています。

***********************************************************************

Time Source IP Dest IP Prot Description
0.644 204.182.66.83 199.181.164.4 TELNET To Server Port = 1901
+ FRAME: Base frame properties
+ ETHERNET: ETYPE = 0x0800 : Protocol = IP: DOD Internet Protocol
+ IP: ID = 0xEA83; Proto = TCP; Len: 43
+ TCP: .AP..., len: 3, seq:1032660278, ack: 353339017, win: 7766,
src: 1901 dst: 23 (TELNET)
TELNET: To Server From Port = 1901
TELNET: Telnet Data
D2 41 53 48 00 00 52 41 53 48 00 00 08 00 45 00 .ASH..RASH....E.
00 2B EA 83 40 00 20 06 F5 85 CC B6 42 53 C7 B5 .+..@. .....BS..
A4 04 07 6D 00 17 3D 8D 25 36 15 0F 86 89 50 18 ...m..=.%6....P.
1E 56 1E 56 00 00 79 79 79 .V.V..yyy
^^^
data

Windows Sockets アプリケーションでは、"TCP_NODELAY" ソケット オプションを設定すると、接続に対して Nagle アルゴリズムを無効化できます。ただし、Nagle アルゴリズムを無効化するとネットワークの使用率が高くなるので、Nagle アルゴリズムはできるだけ有効にしておいてください。ネットワーク アプリケーションには、小さいサイズのパケットを多数転送する場合の影響と Nagle アルゴリズムの効果を考慮せずに設計されているものがあります。このようなネットワーク アプリケーションを使用している場合に Nagle アルゴリズムを適用すると、パフォーマンスが低下することがあります。Nagle アルゴリズムは、パフォーマンス上の理由によりループバック TCP 接続には適用されません。Windows 2000 Netbt では、TCP 接続上の NetBIOS には Nagle アルゴリズムを適用しません。また、ファイル操作コマンドを多数発行するアプリケーションのパフォーマンス向上に寄与するダイレクト ホストのリダイレクタ/サーバー接続についても、Nagle アルゴリズムを適用しません。これには、ファイルのロックを頻繁に設定および解除するアプリケーションなどが含まれます。

TCP TIME-WAIT 遅延

TCP 接続をクローズすると、ソケット ペアが TIME-WAIT と呼ばれる状態になります。ソケット ペアがこの状態になると、不正確にルーティングされたセグメントや遅延したセグメントの配信に問題がないと判断するに十分な時間が経過するまでの間、同じプロトコル、発信元 IP アドレス、宛先 IP アドレス、発信元ポート、および宛先ポートが新しい接続に使用されないようになります。RFC 793 では、ソケット ペアの再使用禁止時間の長さを 2 MSL (セグメントの最大有効期間の 2 倍) または 4 分と規定しています。Windows NT と Windows 2000 では、この値を既定値として使用しています。ただし、短時間に多数の発信接続を実行するアプリケーションの場合にこの既定値を適用すると、ポートの再使用が可能になる前に、すべての利用可能なポートを使い尽くしてしまう可能性があります。

Windows NT および Windows 2000 では、この動作を 2 通りの方法で制御できます。まず、"TcpTimedWaitDelay" レジストリ パラメータを使って、この値を変更できます。このパラメータの値を 30 秒まで減らすと、ほとんどの環境で問題を回避できます。さらに、"MaxUserPorts" レジストリ パラメータを使うと、発信接続の開始に使用できるユーザー アクセス可能な一時ポートの数を調整できます。既定では、アプリケーションが発信呼び出しに使用するソケットをシステムに対して要求すると、1,024 ~ 5,000 の範囲内のポートが提供されます。"MaxUserPorts" パラメータでは、管理者が発信接続用に確保するポート番号の上限を設定できます。たとえば、この値を 10,000 (10 進) に設定すると、約 9,000 個のユーザー ポートを発信接続に使用できるようになります。この概念の詳細については、RFC 793 を参照してください。"MaxFreeTcbs" レジストリ パラメータおよび "MaxHashTableSize" レジストリ パラメータについては、「付録 A」を参照してください。

マルチホームコンピュータとの間の TCP 接続

マルチホーム ホストに対して TCP 接続を確立するときには、ネーム サーバーによって示された宛先 IP アドレスがローカル コンピュータ上のインターフェイスのいずれかと同じサブネット上に存在しているかどうかを WINS クライアントとドメイン ネーム リゾルバ (DNR) の両方がチェックします。同じサブネットの場合は、アプリケーションがそれらのアドレスへの接続を別のサブネット上のアドレスへの接続より前に試行できるように、それらのアドレスがリストの先頭に移動されます。アドレスがローカル コンピュータと共通のサブネット上に存在しない場合の動作は、名前空間によって異なります。TCP/IP 用の "PrioritizeRecordData" レジストリ パラメータを使うと、DNR コンポーネントがサブネット アドレスをリストの先頭に移動しないように設定できます。

WINS 名前空間では、示されたアドレスのランダム化および負荷分散をクライアントが行う必要があります。WINS サーバーはアドレスのリストを常に同じ順序で返し、WINS クライアントは接続ごとにリスト内のアドレスを 1 つずつランダムに選択します。

DNS 名前空間では、総当り式 (ラウンド ロビン式) でアドレスを提供するように DNS サーバーを構成するのが普通です。DNR は、アドレスをそれ以上ランダム化しようとしません。マルチホーム コンピュータにインストールされている複数のインターフェイスのうち、接続先を特定のインターフェイスに限定する必要がある場合は、そのコンピュータの DNS エントリとの間のインターフェイスを用意するのが最善の方法になります。たとえば、"raincity" という名前のコンピュータに対して、両方の IP アドレス (通常は、DNS 内で同じ名前を持つ別個のレコード) と、そのコンピュータに割り当てられている各 IP アドレスに対応する DNS レコード raincity1 および raincity2 を示す 1 つの DNS エントリを作成できます。

マルチホーム ホストから TCP 接続を確立する場合の処理は、やや複雑になります。DNS 名前空間を使用する Winsock 接続の場合は、接続のターゲット IP アドレスが判明すると、TCP が最適な発信元 IP アドレスからの接続を試行します。この決定にもルート テーブルが使用されます。ターゲット IP アドレスと同じサブネット上のインターフェイスがローカル コンピュータ上に存在している場合、接続要求では、その IP アドレスが発信元として使用されます。最適な発信元 IP アドレスがない場合は、いずれかのアドレスがランダムに選択されます。

リダイレクタを使用する NetBIOS ベースの接続の場合、アプリケーション レベルで利用できるルーティング情報はほとんどありません。NetBIOS インターフェイスは、さまざまなプロトコルによる接続をサポートしており、IP には特化していません。この場合、リダイレクタが自分にバインドされているすべてのトランスポートに対して呼び出しを行います。1 つのプロトコルがインストールされているコンピュータに 2 つのインターフェイスがある場合、リダイレクタで利用できるトランスポートは 2 つあります。両方のトランスポートに対して呼び出しが行われ、NetBT からスタックに接続要求が送信されます。このとき、各インターフェイスの IP アドレスが使用されます。両方の呼び出しが成立する可能性があります。その場合は、リダイレクタがどちらかの呼び出しを取り消します。どちらを取り消すかは、リダイレクタ用の "ObeyBindingOrder" レジストリ パラメータの値によって決まります6。既定値の 0 に設定されている場合は、プライマリ トランスポート (バインド順によって決まる) が優先され、リダイレクタはプライマリ トランスポートがタイムアウトになった場合に、セカンダリ トランスポート上の接続を受け付けます。1 に設定されている場合は、バインド順が無視され、リダイレクタは最初に成立した接続を受け付けて、残りの接続を取り消します。

スループットに関する考慮事項

TCP は、さまざまなリンク条件下で最適なパフォーマンスを得ることができるように設計されています。Windows 2000 では、RFC 1323 のサポートなどの改良を TCP に付加しています。リンクの実際のスループットは、さまざまな要因に影響されます。特に、次の要因が大きく影響します。

  • リンクの速度 (毎秒の転送可能ビット数)

  • 伝達の遅延時間

  • ウィンドウのサイズ (TCP 接続上で未解決のまま残される可能性がある未応答データの量)

  • リンクの信頼性

  • ネットワークおよび中間デバイスの輻輳

  • パス MTU

TCP のスループット計算については、W. Richard Stevens 著のTCP/IP Illustratedの第 20 ~ 24 章に詳しい記述があります7。重要な考慮点を次にいくつか示します。

  • パイプの容量は、帯域幅に往復時間をかけたものになります。これは、"帯域幅 - 遅延積" と呼ばれます。信頼性のあるリンクの場合、パイプの容量以上のウィンドウ サイズを確保すると、送信スタックでパイプを容量いっぱいまで使用できるので、パフォーマンスが向上します。TCP ヘッダーのフィールドは 16 ビットなので、指定可能な最大ウィンドウ サイズは 65,535 ですが、このドキュメントで前述したようにウィンドウのスケーリングを使用すると、これより大きいウィンドウをネゴシエートできます。「付録 A」の "TcpWindowSize" を参照してください。

  • スループットの上限は、ウィンドウ サイズを往復時間で割ったものになります。

  • 信頼性の低いリンクや混雑度の高いリンクでパケットの破棄が発生している場合は、ウィンドウ サイズを大きくするとスループットを向上できることがあります。Windows 2000 では、スケーリング ウィンドウをサポートしているほか、RFC 2018 で規定されている Selective Acknowledgments (SACK) をサポートしています。これは、パケットの損失が発生している環境でのパフォーマンス改善に役立ちます。さらに、RFC 1323 で規定されているタイムスタンプもサポートしているので、RTT の見積もり精度を向上できます。

  • 伝達の遅延時間は、光ファイバの伝達速度、伝送装置の待ち時間などに依存します。

  • 転送の遅延時間は、メディアの速度に依存します。

  • 伝達の遅延時間はパスごとに一定ですが、転送の遅延時間はパケット サイズに依存します。

  • 低速では、転送の遅延時間が制限要因となります。高速では、伝達の遅延時間が制限要因となることがあります。

Windows NT と Windows 2000 TCP/IP は、ほとんどのネットワーク条件への適応が可能で、接続別のスループットと信頼性を動的に最適化できます。ネットワーク エンジニアが最初にデータ フローを綿密に調査していない限り、手動でのチューニングはしばしば逆効果になります。

ユーザー データグラム プロトコル (UDP)

UDP は、信頼性の低いコネクションレス サービスを提供します。多くのブロードキャスト IP データグラムまたはマルチキャスト IP データグラムで UDP が常套手段となります。UDP データグラムは常に正しく配信されるようには保証されないので、UDP を使用するアプリケーションでは、必要に応じて信頼性を確保するメカニズムを独自に用意します。Microsoft ネットワークでは、ログオン、参照、および名前解決に UDP を使用します。UDP は、IP マルチキャスト ストリームの転送にも使用できます。

UDP と名前解決

UDPは、NetBIOS ネーム サーバーへのユニキャストまたはサブネット ブロードキャストによって NetBIOS 名を解決するときや、DNS ホスト名を IP アドレスに解決するときに使用されます。NetBIOS 名の解決は、UDP ポート 137 を通じて行われます。DNS 照会には UDP ポート 53 が使用されます。UDP 自体にはデータグラムの配信を保証するメカニズムがないため、これらのサービスは、照会への応答がない場合に独自の転送スキームを使用するようになっています。ブロードキャスト UDP データグラムは、通常は IP ルーター経由では転送されません。このため、ルーティングした環境で NetBIOS 名を解決するには、何らかの種類のネーム サーバーを用意するか、または静的なデータベース ファイルを使用する必要があります。

UDP 上のメールスロット

多くの NetBIOS アプリケーションでは、"メールスロット" メッセージングを使用します。セカンド クラス メールスロットは、UDP 上で NetBIOS 名から別の NetBIOS 名にメッセージを送信するための簡単なメカニズムです。メールスロット メッセージは、サブネット上でブロードキャストしたり、リモート ホストにリダイレクトしたりすることができます。メールスロット メッセージをほかのホストにリダイレクトするには、何らかの方法で NetBIOS 名を解決できるようにしておく必要があります。Microsoft では、この目的で Windows インターネット ネーム サーバー (WINS) を提供しています。

NetBIOS over TCP/IP

Windows NT および Windows 2000 では、"NetBT" という名前で、NetBIOS over TCP/IP を実装しています。NetBT では、次の TCP ポートおよび UDP ポートを使用します。

  • UDP ポート 137 (ネーム サービス)

  • UDP ポート 138 (データグラム サービス)

  • TCP ポート 139 (セッション サービス)

NetBIOS over TCP/IP は、RFC 1001 および RFC 1002 で規定されています。NetBT.sys ドライバは、トランスポート ドライバ インターフェイス (TDI) インターフェイス をサポートするカーネル モード コンポーネントです。ワークステーションやサーバーなどのサービスでは TDI インターフェイスを直接使用しますが、従来型の NetBIOS アプリケーションからの呼び出しは Netbios.sys によって TDI 呼び出しにマッピングされます。TDI を使った NetBT の呼び出しにはプログラミング上の労力が要求されますが、パフォーマンスが高くなり、従来の NetBIOS に付随していた制限からも解放されます。NetBIOS の概念は、後の「ネットワーク アプリケーション インターフェイス」で説明します。

トランスポート ドライバ インターフェイス (TDI)

Microsoft では、NetBIOS や Windows Sockets などの既存のインターフェイスよりも高い柔軟性と機能性を提供する目的で トランスポート ドライバ インターフェイス (TDI) を開発しました。すべての Windows トランスポート プロバイダが TDI を公開します。TDI 仕様では、トランスポート ドライバと TDI クライアントの間の通信に使用する一式のプリミティブ関数と、それらの関数にアクセスするための呼び出しメカニズムを記述しています。現時点では、TDI はカーネル モード専用です。

Windows 2000 のリダイレクタとサーバーはともに NetBIOS マッピング レイヤを経由せずに、TDI を直接使用します。このため、Windows 2000 のリダイレクタとサーバーは、セッション数が 254 までに制限されるなどといった NetBIOS 固有の制限の多くから解放されています。

TDI の機能

TDI は、Windows ネットワーク API のなかで、最も使用が難しい部類に属します。ごく基本的な要素しか定義されていないため、メッセージの形式と意味はプログラマが判断しなければなりません。

TDI には、次のような特長と機能があります。

  • TDI は、ほとんどの Windows NT または Windows 2000 用トランスポートでサポートされています。なお、DLC ではサポートされていません。

  • 名前付けスキームとアドレス指定スキームが公開されています。

  • メッセージ転送とストリーム モード データ転送。

  • 非同期処理。

  • イベントの非請求指示のサポート。

  • 拡張性 - クライアントは、プライベート要求を認識するトランスポート ドライバにプライベート要求を送信できます。

  • データの送受信用の標準カーネル モード I/O 関数の使用制限をサポートしています。

  • 32 ビットのアドレス指定および指定値。

  • TDI アドレス オブジェクトに対してセキュリティ用のアクセス制御リスト (ACL) を使用できます。

TDI の詳細については、『Windows 2000 Device Driver Kit (DDK)』を参照してください。

セキュリティに関する考慮事項

パブリック ネットワークからアクセスされるコンピュータの管理においては、ネットワーク セキュリティが非常に重要なポイントになります。Microsoft の TCP/IP スタックは、さまざまな攻撃に対抗できるように強化されており、既定の状態でも、これまでに知られている攻撃のほとんどに対処できます。"SynAttackProtect" レジストリ キーを有効にすると、よく知られている Denial of Service 攻撃に対する保護を補強できます。このキーでは、SYN 攻撃に対する保護のレベルを選択できます。

攻撃にさらされる危険性をできるだけ少なくするための一般的なガイドラインを次に示します。

  • 不要なサービスや省略可能なサービスを無効にします。たとえば、IIS サーバー上では、Microsoft ネットワーク クライアントを無効にします。

  • TCP/IP フィルタ機能を有効にして、サーバーが機能するために必要なポート以外のポートがアクセスされないようにします。Windows の各種サービスで使用するポートの一覧については、Microsoft Knowledge Base アーティクル番号 Q150543 を参照してください。

  • NetBIOS over TCP/IP が不要な場合は、NetBIOS over TCP/IP のバインドを解除します。

  • パブリック アダプタに対しては静的な IP アドレスとパラメータを構成します。

  • 最大限の保護が得られるようにレジストリ設定値を構成します。「付録 D」を参照してください。

Microsoft Security Web site のセキュリティ掲示板を定期的にチェックします。

ネットワークアプリケーションインターフェイス

ネットワーク アプリケーションでは、さまざまな方法で TCP/IP プロトコル スタックによる通信を実行します。名前付きパイプのように、ワークステーション サービスに含まれているネットワーク リダイレクタを経由する方法もあります。古いアプリケーションの多くは NetBIOS インターフェイスに基づいて作成されていますが、NetBIOS over TCP/IP では NetBIOS インターフェイスをサポートしています。

現時点では、Windows Sockets インターフェイスがよく使われています。ここでは、Windows Sockets インターフェイスと NetBIOS インターフェイスの概要を手短に述べます。

Windows Sockets

Windows Sockets では、UCLA バークレー校の考案による、よく知られたソケット インターフェイスに基づいたプログラミング インターフェイスが規定されています。Microsoft Windows のメッセージ志向の性質を活かすように設計された一式の拡張機能が含まれています。この仕様は、1993 年 1 月にバージョン 1.1 がリリースされ、1996 年 5 月にバージョン 2.2.0 が公開されました8。Windows 2000 では、Winsock2 として一般に知られているバージョン 2.2 をサポートしています。

アプリケーション

利用可能な Windows Sockets アプリケーションには、さまざまなものがあります。Windows 2000 に付属しているユーティリティにも、FTP および DHCP のクライアントとサーバーや Telnet クライアントなど、Windows Sockets に基づくものがいくつかあります。Internet Explorer で使用されている Windows インターネット Windows Internet API (WinInet) のように、より高レベルのプログラミング インターフェイスにも、Winsock に基づくものがあります。

名前とアドレスの解決

Windows Sockets アプリケーションでは、一般に、"gethostbyname()" 関数を使用してホスト名を IP アドレスに解決します。"gethostbyname()" 関数が名前を検索する順序は、既定では、次のようになります。

  1. ローカル ホスト名に一致する名前があるかどうかをチェックします。

  2. ホスト ファイルに名前の一致するエントリがあるかどうかをチェックします。

  3. ドメイン ネーム サーバーが構成されている場合は、ドメイン ネーム サーバーに照会します。

  4. 一致する名前が見つからなければ、DNS 解決が試行される時点まで、NetBIOS 名前解決を試行します。

一部のアプリケーションでは、"gethostbyaddr()" 関数を使用して IP アドレスをホスト名に解決します。"gethostbyaddr()" 関数が名前を検索する順序は、既定では、次のようになります。

  1. ホスト ファイルにアドレスの一致するエントリがあるかどうかをチェックします。

  2. ドメイン ネーム サーバーが構成されている場合は、ドメイン ネーム サーバーに照会します。

  3. NetBIOS アダプタ ステータス要求を照会対象の IP アドレスに送信します。応答としてアダプタに登録されている NetBIOS 名のリストが返されたら、そのリストを解析してコンピュータ名を取得します。

IP マルチキャストのサポート

Winsock2 では、IP マルチキャストをサポートしています。マルチキャストは、Windows Sockets 2.0 仕様で規定されており、このドキュメントの「インターネット グループ管理プロトコル (IGMP)」でも説明しています。現時点では、IP マルチキャストは、タイプが SOCK_DGRAM および SOCK_RAW の AF_INET ソケット上でのみサポートされています。

バックログパラメータ

一般に、Windows Sockets サーバー アプリケーションはソケットを作成し、そのソケットに対し "listen()" 関数を使用して接続要求をリッスンします。アプリケーションから "listen()" を呼び出すときには、Windows Sockets のキューに入れるべき接続要求バックログをパラメータの 1 つとして渡します。この値は、キューに格納できる未受け付けの接続の数を制御します。アプリケーションが接続を "受け付ける" と、その接続が接続要求バックログから取り出され、カウントに含まれなくなります。Windows Sockets 1.1 の仕様では、バックログの最大許容値が 5 と規定されていますが、Windows NT 3.51 では 100 までのバックログが許容され、Windows NT 4.0 および Windows 2000 Server では 200 までのバックログが許容されます。ただし、Windows NT 4.0 Workstation および Windows 2000 Professional では、メモリ消費を抑えるため、バックログは 5 までに制限されています。

プッシュビットの解釈

Windows 2000 TCP/IP では、既定では、次のいずれかの場合に "recv()" の呼び出しが完了します。

  • PUSH ビットの設定されたデータが到着した場合

  • ユーザー "recv" バッファが満杯になった場合

  • データが到着してから 0.5 秒が経過した場合

各種 TCP/IP 実装には、送信操作でプッシュ ビットを設定しないものがあります。このような TCP/IP がインストールされているコンピュータでは、クライアント アプリケーションを実行したときの応答が遅延することがあります。この問題はクライアント側で修正するのが最善ですが、Afd.sys には、到着したすべてのパケットをプッシュ ビットの設定されたパケットとみなすようにする構成パラメータ "IgnorePushBitOnReceives" が追加されています。このパラメータは Windows NT 4.0 で追加されたものですが、Windows 2000 でもサポートされています。

NetBIOS over TCP/IP

NetBIOS では、プロトコルではなく、ソフトウェア インターフェイスと名前付け規則を定義しています。初期のバージョンの Microsoft ネットワーク製品では、NetBEUI ローカル エリア ネットワーク プロトコルについてのみ NetBIOS アプリケーション プログラミング インターフェイスが用意されていました。NetBEUI は、ネットワーク レイヤを持たない高速の小型プロトコルなので、ルーティングはできず、WAN の実装にはあまり適していません。NetBEUI では、名前解決とサービスの位置決定にブロードキャストを使用します。NetBIOS over TCP/IP には、TCP/IP プロトコル上の NetBIOS プログラミング インターフェイスが用意されているので、NetBIOS のクライアント プログラムとサーバー プログラムの適用範囲を WAN にまで拡張でき、ほかの各種オペレーティング システムとの相互運用性を確保できます。

Workstation サービス、サーバー サービス、ブラウザ サービス、Messenger サービス、および NetLogon サービスは、いずれも NetBT クライアント (直接のクライアント) です。これらのサービスでは、前述した TDI を使用して NetBT と通信します。Windows NT および Windows 2000 には、NetBIOS エミュレータも用意されています。このエミュレータは、標準 NetBIOS 要求を NetBIOS アプリケーションから取り込んで、対応する TDI プリミティブに変換します。

Windows 2000 では、以前のバージョンの Windows NT のクライアントや Windows 95 など、ほかのオペレーティング システムのクライアントとの通信には、引き続き NetBIOS over TCP/IP を使用します。ただし、Windows 2000 のリダイレクタ コンポーネントとサーバー コンポーネントでは、Windows 2000 が動作しているほかのコンピュータとの通信用に "ダイレクトホスト" をサポートしています。ダイレクト ホストでは、名前解決に DNS を使用します。NetBIOS 名前解決 (WINS またはブロードキャスト) は使用されません。また、NetBIOS 名前解決に比べてプロトコルがより単純です。ダイレクト ホスト TCP では、NetBIOS TCP ポート 139 ではなく、ポート 445 を使用します。

既定では、NetBIOS とダイレクト ホストがともに有効になっており、新しい接続の確立時には、この両方が並行して使用されます。最初に接続に成功した方が使用されるようになります。NetBIOS サポートを無効にして、すべてのトラフィックにダイレクト ホストを強制適用することもできます。

NetBIOS サポートを無効にするには

  1. [ スタート ] メニューの [設定] をポイントし、[ネットワークとダイヤルアップ接続] をクリックします。[ローカルエリア接続] をマウスの右ボタンでクリックし、[プロパティ] をクリックします。

  2. [ インターネットプロトコル (TCP/IP)] を選択して、[プロパティ] をクリックします。

  3. [ 詳細 ] をクリックします。

  4. [WINS] タブをクリックし、[NetBIOS over TCP/IP を使用不可にする] を選択します。

NetBIOS サポートを無効にすると、NetBIOS に依存しているアプリケーションとサービスは機能しなくなります。どのクライアントやアプリケーションでも NetBIOS サポートが不要になっていること確認したうえで、NetBIOS サポートを無効にするようにしてください。たとえば、Windows 2000 以前のコンピュータは、NetBIOS を無効にすると、Windows 2000 コンピュータに接続して参照、検索、ファイル共有とプリンタ共有の作成などの操作を実行することができなくなります。

NetBIOS

NetBIOS 名前空間は、フラットな名前空間です。つまり、NetBIOS 名前空間内では、すべての名前を一意にする必要があります。NetBIOS 名の長さは、16 文字です。リソースは、NetBIOS 名によって識別されます。NetBIOS 名は、コンピュータの起動時、サービスの開始時、アプリケーションの起動時、またはユーザーのログオン時に動的に登録されます。名前は、一意な名前 (1 所有者) またはグループ名 (複数の所有者) として登録できます。リソースの検索時には、NetBIOS 名前照会を使用して名前を IP アドレスに解決します。

ワークステーション サービスおよびサーバー サービスなどの Microsoft ネットワーク コンポーネントでは、NetBIOS 名の最初の 15 文字をユーザーまたは管理者が指定できますが、NetBIOS 名の 16 文字目はリソースの種類 (00-FF hex) を指定するために予約されています。よく使われているサード パーティ製パッケージの多くでも、各製品に固有のサービスの識別と登録に 16 番目の文字を使用しています。表 3 は、Microsoft コンポーネントで使用される NetBIOS 名の例をいくつか示しています。

3 Microsoft コンポーネントで使用される NetBIOS 名の例

一意な名前

サービス

コンピュータ名 [00h]

ワークステーション サービス

コンピュータ名 [03h]

Messenger サービス

コンピュータ名 [06h]

RAS サーバー サービス

コンピュータ名 [1Fh]

NetDDE サービス

コンピュータ名 [20h]

サーバー サービス

コンピュータ名 [21h]

RAS クライアント サービス

コンピュータ名 [BEh]

ネットワーク モニタ エージェント

コンピュータ名 [BFh]

ネットワーク モニタ アプリケーション

ユーザー名 [03]

Messenger サービス

ドメイン名 [1Dh]

マスタ ブラウザ

ドメイン名 [1Bh]

ドメイン マスタ ブラウザ

グループ名

サービス

ドメイン名 [00h]

ドメイン名

ドメイン名 [1Ch]

ドメイン コントローラ

ドメイン名 [1Eh]

ブラウザ サービス選択

\\--__MSBROWSE__[01h]

マスタ ブラウザ

コンピュータがどの名前を NetBT 上で登録したかを確認するには、コマンド プロンプトに次のように入力します。

nbtstat -n

Windows 2000 では、コンピュータを既に起動した後で、名前をネーム サーバーに再登録できます。名前を再登録するには、コマンド プロンプトに次のように入力します。

nbtstat -RR

NetBIOS 名の登録と解決

Windows TCP/IP システムでは、数通りの方法で NetBIOS リソースを検索します。

  • NetBIOS 名前キャッシュ

  • NetBIOS ネーム サーバー

  • IP サブネット ブロードキャスト

  • 静的 Lmhosts ファイル

  • ローカル ホスト名 (オプション、"EnableDns" レジストリ パラメータに依存)

  • 静的ホスト名 (オプション、"EnableDns" レジストリ パラメータに依存)

  • DNS サーバー (オプション、"EnableDns" レジストリ パラメータに依存)

NetBIOS 名の解決順序は、ノードの種類とシステムの構成によって異なります。次の種類のノードがサポートされています。

  • B ノード 名前の登録と解決にブロードキャストを使用します。

  • P ノード 名前の登録と解決に NetBIOS ネーム サーバー (WINS など) を使用します。

  • M ノード 名前の登録にブロードキャストを使用します。名前解決については、初回のみブロードキャストを使用し、受信側から応答がなければ P ノードに切り替わります。

  • H ノード 名前の登録と解決の両方に NetBIOS ネーム サーバーを使用しますが、ネーム サーバーが見つからない場合は、B ノードに切り替わります。ネーム サーバーのポーリングを引き続き行い、利用可能なネーム サーバーが見つかった時点で P ノードに戻ります。

  • Microsoft 強化 標準の種類のノードの動作に加え、ローカル Lmhosts ファイルまたは WINS プロキシと Windows Sockets の "gethostbyname" 関数を組み合わせて使用します。標準 DNS とローカル ホスト ファイルの一方または両方が使用されます。

Microsoft では、Windows インターネット ネーム サービス (WINS) と呼ばれる NetBIOS ネーム サーバーを提供しています。ほとんどの WINS クライアントは、H ノードとしてセットアップされます。H ノードでは、名前の登録と解決を最初に試行するときには WINS を使用し、最初の試行が失敗すると、ローカル サブネット ブロードキャストを使用します。次の 2 つの理由により、一般には、ブロードキャストよりも、ネーム サーバーによるリソース検索をお勧めします。

  • ブロードキャストは、常にルーターによって転送されるとは限りません。

  • ブロードキャストはサブネット上のすべてのコンピュータに受信されるので、各コンピュータの処理時間が消費されます。

マルチホームコンピュータに対する NetBIOS 名の登録と解決

前述したように、NetBT は、物理ネットワーク インターフェイスごとに 1 つの IP アドレスにのみバインドされます。NetBT の観点から見ると、コンピュータがマルチホームとなるのは、複数の NIC がインストールされている場合だけです。名前登録パケットが マルチホーム コンピュータから送信されると、同じコンピュータ内のほかのインターフェイスによって登録されている同じ名前との競合が生じないように、そのパケットにはマルチホーム名登録のフラグが立てられます。

マルチホーム コンピュータがブロードキャスト名前照会を受信すると、NetBT がバインドされているすべてのインターフェイスが自分のアドレスで名前照会に応答します。クライアントは、既定では、最初の応答を選択し、そのアドレスに接続します。この動作は、「付録 B」で説明する "RandomAdapter" レジストリ パラメータで制御できます。

リダイレクトされた名前照会が WINS サーバーに送信されると、WINS サーバーは、そのマルチホーム コンピュータによって WINS に登録されたすべての IP アドレスのリストを返します。

マルチホーム コンピュータへの接続に最も適した IP アドレスを選択するのは、クライアント側の機能です。現時点では、次の一連の処理を行うアルゴリズムが採用されています。

  1. 名前照会に対して返されたリストの IP アドレスのいずれかがローカル コンピュータ上の呼び出し元の NetBT バインドと同じ論理サブネット上に存在する場合は、そのアドレスが選択されます。複数のアドレスがこの基準を満たす場合は、そのいずれかがランダムに選択されます。

  2. リスト内の IP アドレスのいずれかがローカル コンピュータ上の呼び出し元の NetBT バインドと同じ (クラスレス) ネットワーク上に存在する場合は、そのアドレスが選択されます。複数のアドレスがこの基準を満たす場合は、そのいずれかがランダムに選択されます。

  3. リスト内の IP アドレスのいずれかがローカル コンピュータ上の任意の NetBT バインドと同じ論理サブネット上に存在する場合は、そのアドレスが選択されます。複数のアドレスがこの基準を満たす場合は、そのいずれかがランダムに選択されます。

  4. ローカル コンピュータ上の NetBT バインドと同じサブネット上の IP アドレスがリストに含まれていなければ、いずれかのアドレスがリストからランダムに選択されます。

このアルゴリズムでは、サーバーへの接続を複数の NIC に振り分けながら、直接接続 (同じサブネット) が可能な場合は直接接続を優先します。IP アドレスのリストが返されると、リストの内容は最適な順序に並べ替えられます。NetBT は、応答があるまで、リスト内のアドレスに順に ping を送信します。いずれかのアドレスから応答があれば、NetBT はそのアドレスへの接続を試行します。どのアドレスからも応答がなければ、リストの先頭のアドレスに対して接続が試行されます。これを試行するのは、ファイアウォールやその他のデバイスで ICMP トラフィックにフィルタがかかっている場合は、応答がなくても接続できる可能性があるためです。Windows 2000 では、インターフェイス別の NetBT 名キャッシュをサポートしています。"nbtstat -c" を実行すると、インターフェイス別の名前キャッシュが表示されます。

NetBT インターネット /DNS 強化と SMB デバイス

NetBT では、Windows ベースの 2 つのコンピュータがインターネット経由で相互に接続することが可能です。インターネット経由の接続には、名前解決の手段が必要になります。一般的な名前解決の方法として、Lmhosts ファイルと WINS サーバーの 2 つがあります。Windows NT 4.0 では、いくつかの機能強化が加えられており、Windows 2000 でもその機能強化が移行されました。

NetBIOS over TCP/IP リソースには、次の 2 つの新しい方法で接続できるようになりました。

  • net use \\ ip address \ share_name コマンドによる接続。NetBIOS 名前解決の構成は不要です。

  • net use \\ FQDN \ share_name コマンドによる接続。DNS を通じてコンピュータに接続するときに、そのコンピュータの完全修飾ドメイン名 (FQDN) を指定できます。

新しい機能を使ってドライブを ftp.microsoft.com にマッピングする例を次に示します。ここで示している IP アドレスは変更される可能性があります。

  • net use f: \\ftp.microsoft.com\data

  • net use \\198.105.232.1\data

  • net view \\198.105.232.1

  • dir \\ftp.microsoft.com\bussys\winnt

さらに、イベント ビューアの [ログ] メニューにある [コンピュータの選択] など、さまざまなアプリケーションで、FQDN や IP アドレスを直接入力できます。また、Windows 2000 のダイレクト ホストを使うと、NetBIOS 名前空間やマッピング レイヤを一切使用せずに複数の Windows 2000 コンピュータ間にリダイレクタ接続またはサーバー接続を確立できます。既定では、低レベルのコンピュータに対する接続をサポートできるように、両方の方法での接続が試行されます。Windows 2000 に統一された環境では、[ネットワークとダイアルアップ接続] フォルダから NetBIOS を完全に無効にできます。

Windows 2000 には、NetBIOS を使用しない操作を可能にする新しいインターフェイスが用意されています。このインターフェイスは、"SMB デバイス" と呼ばれます。リダイレクタおよびサーバーでは、SMB デバイスは、個々のネットワーク アダプタとプロトコル スタックの組み合わせと同じように、別のインターフェイスとして扱われます。ただし、TCP/IP スタックでは、SMB デバイスは ADDR_ANY にバインドされ、Windows Sockets アプリケーションと同様に、DNS 名前空間をネイティブに使用します。SMB デバイスに対して呼び出しが行われると、標準の DNS 参照を通じて DNS 名が IP アドレスに解決されます。この後、ルート テーブルで決定された最適な発信元 IP アドレスとインターフェイスを使って、単一の発信接続要求 (マルチホーム コンピュータの場合も単一の要求) が発行されます。さらに、従来の NetBIOS over TCP/IP とは異なり、TCP 接続の上層には NetBIOS セッション セットアップがありません。既定では、リダイレクタは NetBIOS デバイスと SMB デバイスの両方に対して呼び出しを行い、ファイル サーバーが両方に対する呼び出しを受信します。ファイル サーバーの SMB デバイスは、従来の NetBIOS over TCP ポート 139 ではなく、TCP ポート 445 でリッスンします。

NetBIOS over TCP/IP セッション

NetBIOS セッションは、2 つの名前の間で確立されます。たとえば、Windows 2000 Professional ベースのワークステーションが NetBIOS over TCP/IP を使用してサーバーへのファイル共有接続を確立するときには、次の一連のイベントが発生します。

  1. サーバーの NetBIOS 名が IP アドレスに解決されます。

  2. IP アドレスがメディア アクセス制御アドレスに解決されます。

  3. ワークステーションからサーバーにポート 139 を通じて TCP 接続が確立されます。

  4. ワークステーションが TCP 接続を通じて、サーバー名に NetBIOS セッション要求を送信します。サーバーがリッスンしている名前が同じであれば、肯定応答が返され、セッションが確立されます。

NetBIOS セッションが確立されると、ワークステーションとセッションが SMB プロトコルをどのレベルで使用するかをネゴシエートします。Microsoft ネットワークでは、2 つの名前の間の NetBIOS セッションは常に 1 つだけです。この後、ほかのファイル共有接続やプリンタ共有接続を確立するときは、SMB ヘッダー内で識別子を使用して、同じ NetBIOS セッション上で接続を多重化します。

接続ごとに NetBIOS Keep-alive が使用され、サーバーとワークステーションの両方がまだセッションを維持できる状態になっているかどうか確認されます。ワークステーションとサーバーのどちらか一方が突然シャットダウンされた場合は、もう一方が接続と関連リソースをクリーンアップします。NetBIOS Keep-alive は、"SessionKeepAlive" レジストリ パラメータで制御されます。既定では、1 時間に 1 回です。

LMhosts ファイルを使用している場合にエントリにスペルミスがあると、正しい IP アドレスでサーバーへの接続を試行することは可能ですが、サーバー名は不正確になります。サーバー名が不正確でも、サーバーに対する TCP 接続は確立されますが、リッスンに使用されている名前が一致しないため、NetBIOS セッション要求はサーバーによって拒否されます。この場合、エラー 51 "Remote computer not listening" が返されます。

NetBIOS データグラムサービス

データグラムは、UDP ポート 138 を通じて、2 つの NetBIOS 名の間で転送されます。データグラム サービスは、メッセージを一意な名前か、グループ名に送信できるようにします。グループ名は、IP アドレスのリストか、またはブロードキャストに解決されます。たとえば、"net send /d:mydomaintest" コマンドを実行すると、テキスト "test" を格納したデータグラムがグループ名 mydomain[03] に送信されます。グループ名 mydomain[03] は IP サブネット ブロードキャストに解決されるので、データグラムは次の特性で送信されることになります。

  • 宛先メディア アクセス制御アドレス : ブロードキャスト (FFFFFFFFFFFF)

  • 発信元メディア アクセス制御アドレス : ローカル コンピュータの NIC アドレス

  • 宛先 IP アドレス : ローカル サブネットのブロードキャスト アドレス

  • 発信元 IP アドレス : ローカル コンピュータの IP アドレス

  • 宛先名 : mydomain[03] (リモート コンピュータ上の Messenger サービス)

  • 発信元名 : username[03] (ローカル コンピュータ上の Messenger サービス)

サブネット上のすべてのホストがデータグラムを受け取って処理します。この処理は、少なくとも UDP プロトコルに準拠して行われます。NetBIOS データグラム サービスが稼動しているホストでは、ポート 138 を利用して UDP がデータグラムを NetBT に渡します。NetBT は、宛先名をチェックして、データグラム受信要求を発行したアプリケーションがないかどうかを調べ、該当するアプリケーションにデータグラムを渡します。受信要求が発行されていなければ、データグラムは破棄されます。

Windows 2000 で NetBIOS のサポートが無効になっている場合 (無効にする方法は前述したとおり)、NetBIOS データグラム サービスは利用できません。

重要なクライアントサービスとスタックコンポーネント

このホワイト ペーパーは、TCP/IP スタック コンポーネントを使用する数多くのサービスについて解説することを目的とするものではなく、あくまでコアとなる TCP/IP スタック コンポーネントの解説を主眼としています。しかし、スタック自体の構成情報と名前およびアドレスの解決にも、特定のサービスが必要です。ここでは、これらの重要なクライアント サービスをいくつか取り上げて解説します。

クライアントの自動構成と Media Sense

最も重要なクライアント サービスの 1 つは、動的ホスト構成プロトコル (DHCP) クライアントです。Windows 2000 では、DHCP クライアントの役割が拡張されています。最も大きな機能拡張は、DHCP サーバーによるアドレス割り当てを利用できない小規模なプライベート ネットワーク (ホーム ネットワークなど) で DHCP クライアントを起動したときに、IP アドレスとサブネット マスクを自動構成できるようになったことです。また、ポータブル デバイス ユーザーの移動中の利便性を向上する "Media Sense" がサポートされるようになりました。

  1. Microsoft TCP/IP クライアントがインストールされており、IP アドレスやその他のパラメータで手動構成する代わりに、DHCP サーバーから TCP/IP プロトコル構成情報を動的に取得するように設定されている場合は、コンピュータを再起動するたびに DHCP クライアント サービスが有効になります。DHCP クライアント サービスは、2 段階のプロセスを通じて、クライアントの IP アドレスやその他の構成情報を設定するようになりました。

  2. DHCP クライアントは、インストールされたときに、DHCP サーバーを検索し、DHCP サーバーから構成情報を取得します。多くの TCP/IP ネットワークでは、ネットワーク上のクライアントに自動的に情報を提供するように構成された DHCP サーバーを使用しています。DHCP サーバーの検索が失敗すると、Windows 2000 DHCP クライアントは、IANA で予約されたクラス B ネットワーク 169.254.0.0 のサブネット マスク 255.255.0.0 から選択した IP アドレスを使用して、スタックを自動構成します9。DHCP クライアントは、無償 ARP によるテストを行い、選択した IP アドレスが使用中でないことを確認します。使用中の場合は、ほかの IP アドレスを選択します。これは、最大で 10 アドレスまで繰り返されます。DHCP クライアントは、未使用のアドレスを選択すると、そのアドレスでインターフェイスを構成します。DHCP クライアントは、バックグラウンドで 5 分おきに DHCP サーバーをチェックします。DHCP サーバーが見つかると、自動構成情報は破棄され、DHCP サーバーから提供された構成情報が代わりに使用されます。この自動構成機能は、自動プライベート IP アドレシング (APIPA) として知られているもので、単一のサブネット ホーム オフィスや小規模なオフィス ネットワークで静的な構成情報を維持したり、DHCP サーバーを管理しなくても TCP/IP を利用できるようにします。

DHCP クライアントが DHCP サーバーから以前にリースを取得している場合は、次の一連のイベントが発生します。

  1. クライアントのリースが起動時にまだ有効であれば (期限切れになっていなければ)、クライアントは DHCP サーバーに接続してリースを更新しようとします。更新を試行するときに DHCP サーバーが見つからなければ、リースのリストに示されているデフォルト ゲートウェイに対して ping を送信します。デフォルト ゲートウェイへの ping が成功すると、DHCP クライアントは、自分が現在置かれているネットワークはリースの取得時と同じネットワークであると判断し、リースを継続して使用します。既定では、割り当て済みのリース期間の半分が経過したときに、リースの更新がバックグラウンドで試行されます。

  2. デフォルト ゲートウェイへの ping に失敗した場合、DHCP クライアントは、DHCP サービスを利用できないネットワーク (ホーム ネットワークなど) に移動されたものとみなし、前述の自動構成を行います。自動構成が完了すると、バックグラウンドで 5 分おきに DHCP サーバーをチェックします。

"Media Sense" のサポートは、NDIS 5.0 で追加されました。Media Sense は、ネットワーク インターフェイス カード (NIC) がプロトコル スタックにメディアの接続イベントと切断イベントを通知するためのメカニズムです。Windows 2000 TCP/IP では、これらの通知を自動構成に利用します。Windows NT 4.0 では、たとえば、DHCP が構成されているイーサネット サブネットからポータブル コンピュータをほかのサブネットに移動した場合、プロトコル スタックに移動を検出させるにはコンピュータの再起動が必要でした。このため、構成パラメータが以前のままになるため、移動先の新しいネットワークにはマッチしないという問題が発生します。さらに、コンピュータをシャットダウンしてから自宅などに持ち帰った後で再起動すると、NIC がネットワークに接続されていないことをプロトコル スタックが認識できないため、構成パラメータが不適切になるという問題が生じます。その結果、サブネット ルートやデフォルト ゲートウェイなどがダイヤルアップ パラメータと競合することになります。

Media Sense のサポートにより、プロトコル スタックがイベントに応答するようになり、不適切なパラメータを無効化できるようになりました。NIC が Media Sense をサポートしていれば、Windows 2000 が動作しているコンピュータをネットワークから取り外すと、スタックに実装されているダンプ時間 (現在のリリースでは 3 秒) の経過後に、TCP/IP が切断元のネットワークに関連するパラメータを無効化します。IP アドレスからの送信ができなくなり、インターフェイスに関連付けられているルートはすべて無効化されます。ネットワーク接続のステータスをタスク バーに表示するには、接続を選択して右クリックし、[プロパティ] をクリックして、[接続時にタスクバーにアイコンを表示する] チェック ボックスをオンにします。アダプタに接続に関する問題が発生している場合は、ネットワーク接続のアイコンに赤い "X" が示されます。

無効化されたアドレスを使用しているソケットにアプリケーションがバインドされている場合は、アプリケーション側でイベントを処理して、システム上のほかの IP アドレスを使用したり、ユーザーに切断を通知するなどの処置をとる必要があります。

動的更新 DNS クライアント

Windows 2000 では、RFC 2136 で規定されている DNS の動的更新がサポートされています。アドレス イベント (アドレスの追加または更新) が発生するたびに、DHCP クライアントがオプション 81 と自分の完全修飾名を DHCP サーバーに送信し、DNS ポインタ リソース レコード PTR RR の登録を要求します。ホスト上のどの IP アドレスがクライアント名に対応するかはクライアントにしかわからないため、A RR の登録は動的更新クライアント自身が処理します。DHCP サーバーは十分な情報を持っていないため、A RR 登録を適切に実行できない可能性がありますが、DHCP サーバーは、サーバーが両方のレコードを DNS に登録することをクライアントに許可させるように構成できます。動的更新 DNS クライアントに関連するレジストリ パラメータについては、「付録 C」を参照してください。

Windows 2000 DHCP サーバーは、暫定 RFC に規定されているとおりにオプション 81 を処理します10。Windows 2000 DHCP クライアントは、オプション 81 を処理しない下位レベルの DHCP サーバーと交信するときには、PTR RR を自分で登録します。Windows 2000 DNS サーバーは、動的更新を処理できます。

静的に構成されたクライアント (非 DHCP クライアント) は、A RR と PTR RR の両方を自分で DNS サーバーに登録します。

DNS リゾルバ キャッシュ サービス

Windows 2000 には、DNS リゾルバ キャッシュ サービスが用意されています。このサービスは、既定の設定で有効となります。トラブルシューティング時には、ほかの Windows サービスと同じように、このサービスを表示して、停止および開始することができます。キャッシュ リゾルバは、DNS 照会用のローカル キャッシュを提供することにより、DNS ネットワーク トラフィックを軽減し、名前解決の速度を向上します。名前照会への応答は、応答に指定されている TTL ("MaxCacheEntryTtlLimit" パラメータの値以内) が経過するまでキャッシュに維持され、以後、同じ名前が照会されたときには、キャッシュから応答が返されます。DNS リゾルバ キャッシュ サービスでは、否定キャッシュもサポートされています。たとえば、あるホスト名を DNS サーバーに照会したときに否定の応答があった場合は、それ以降、同じ名前の照会に対しては、"NegativeCacheTime" 秒 (既定値は 300) が経過するまでの間、キャッシュから否定の応答が返されます。また、どの DNS サーバーに照会しても名前を解決できなかった場合には、"NetFailureCacheTime" 秒 (既定値は 30) が経過するまでの間、すべての名前照会がタイムアウトなしに即時に失敗します。サービスの起動処理中に DNS を照会する場合、特にクライアントをネットワークから起動する場合は、この機能により起動時間を短縮できます。

DNS リゾルバ キャッシュ サービスには、調整可能なレジストリ パラメータがいくつかあります。詳細については、「付録 C」を参照してください。

TCP/IP のトラブルシューティングツールおよびトラブルシューティング指針

Windows では、さまざまなネットワーク トラブルシューティング ツールを利用できます。多くのツールが、製品または Windows 2000 Server リソース キットに含まれています。Microsoft Network Monitor は、優秀なネットワーク トレース ツールです。ネットワーク モニタの完全版は Microsoft Systems Management Server 製品に含まれていますが、Windows 2000 Server には Network Monitor の機能縮小版が付属しています。

問題をトラブルシューティングするときには、論理的なアプローチを踏むことが大切です。次のような点を明らかにしていきます。

  • 何が正常に機能しているか。

  • 何が正常に機能していないか。

  • 正常に機能しているものと正常に機能していないものの間にどのような関係があるか。

  • 正常に機能していないものが以前にはこのコンピュータやネットワークで正常に機能していたことがあるか。

  • 正常に機能していたことがあるなら、その後、何が変わったか。

多くの場合は、問題を根本的な部分からトラブルシューティングすれば、問題をすばやく取り除くことができます。ここでは、このアプローチに沿った順序でトラブルシューティング用のツールを示します。

IPconfig ツール

"IPconfig" は、TCP/IP に関連するホスト構成情報を出力するコマンド ライン ユーティリティです。/allスイッチを指定すると、すべてのインターフェイスに関する詳細な構成情報が報告されます。シリアル ポート (RAS) が構成されている場合は、それらの情報も含まれます。出力は、ファイルにリダイレクトして、ほかのドキュメントに貼り付けることができます。

C:\>ipconfig /allWindows 2000 IP configuration:

Host Name . . . . . . . . . . . . : DAVEMAC2
Primary DNS Suffix . . . . . . . : mytest.microsoft.com
Node Type . . . . . . . . . . . . : Hybrid
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
DNS Suffix Search List. . . . . . : microsoft.com
Ethernet adapter Local Area Connection 2:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : 3Com EtherLink III EISA (3C579-TP)
Physical Address. . . . . . . . . : 00-20-AF-1D-2B-91
DHCP Enabled. . . . . . . . . . . : No
Autoconfiguration Enabled . . . . : Yes
IP Address. . . . . . . . . . . . : 10.57.8.190
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
DNS Servers . . . . . . . . . . . : 10.57.9.254
Primary WINS Server . . . . . . . : 10.57.9.254
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : AMD Family PCI Ethernet Adapter
Physical Address. . . . . . . . . : 00-80-5F-88-60-9A
DHCP Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 199.199.40.22
Autoconfiguration Enabled . . . . : Yes
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 199.199.40.1
DNS Servers . . . . . . . . . . . : 199.199.40.254
Primary WINS Server . . . . . . . : 199.199.40.254

Ping ツール

"Ping" は、IP レベルでの到達のしやすさを確認するのに役立つツールです。ping コマンドを使うと、ICMP エコー要求をターゲット名またはターゲット IP アドレスに送信できます。ここでは、簡単なテストの方法を示します。まず最初に、ターゲット ホストの IP アドレスに対して ping を送信し、ホストが応答するかどうかを確認します。応答があったら、今度は、ホスト名に対して ping を送信します。ping では、Windows Sockets スタイルの名前解決を通じて、名前をアドレスに解決します。したがって、アドレスへの ping に応答があるのに、名前への ping に応答がない場合は、ネットワークの接続ではなく、名前解決に問題があります。

ping -? と入力すると、利用可能なコマンド ライン オプションのリストが表示されます。ping では、使用するパケットのサイズ、送信するパケットの数、ルートの記録の有無、使用する TTL 値、don't fragment フラグの設定の有無を指定できます。ping を使用して 2 つのコンピュータの間の PMTU を手動で求める方法については、前の「パス最大転送ユニット (PMTU) の発見」を参照してください。

次の例では、それぞれ 1,450 バイトのサイズの 2 つの ping をアドレス 10.99.99.2 に送信しています。

C:\>ping -n 2 -l 1450 10.99.99.2

Pinging 10.99.99.2 with 1450 bytes of data:

Reply from 10.99.99.2: bytes=1450 time<10ms TTL=32

Reply from 10.99.99.2: bytes=1450 time<10ms TTL=32

Ping statistics for 10.99.99.2:

Packets: Sent = 2, Received = 2, Lost = 0 (0% loss),

Approximate round trip times in milliseconds:

Minimum = 0ms, Maximum = 0ms, Average = 0ms

ping は、既定では、1 秒間待機しても応答がなければタイムアウトになります。対象となるリモート システムとの間に、衛星リンクなどの高遅延リンクがある場合は、応答があるまでの時間が 1 秒を超えることがあります。タイムアウトを長くするには、-w スイッチを使います。IPSec を使用しているコンピュータでは、ping に応答する前にセキュリティ アソシエーションのセットアップに数秒かかることがあります。

PathPing ツール

"PathPing" は、ping の機能と tracert の機能を組み合わせて、新しい機能をいくつか追加したコマンド ライン ユーティリティです。pathping コマンドは、指定された時間が経過するまで、最終的な宛先に至るまでのルート上にある各ルーターにパケットを送信し、各ホップから返されたパケット数に基づいて結果を計算します。このコマンドでは、任意のルーターやリンクにおけるパケットの損失度合が示されるので、どのルーターやリンクでネットワーク上の問題が生じているかを容易に判断できます。pathping-R -Tスイッチを指定すると、パス上のデバイスが 802.1p 準拠および RSVP 対応かどうかを確認できます。

次の例は、www.sectur.gov.ar [200.1.247.2] へのルートを 30 ホップ以内でトレースしたときの既定出力を示しています。

0 warren.microsoft.com [163.15.2.217]

1 tnt2.seattle2.wa.da.uu.net [206.115.150.106]
2 206.115.169.217
3 119.ATM1-0-0.HR2.SEA1.ALTER.NET [152.63.104.38]
4 412.atm11-0.gw1.sea1.ALTER.NET [137.39.13.73]
5 teleglobe2-gw.customer.ALTER.NET [157.130.177.222]
6 if-0-3.core1.Seattle.Teleglobe.net [207.45.222.37]
7 if-1-3.core1.Burnaby.Teleglobe.net [207.45.223.113]
8 if-1-2.core1.Scarborough.Teleglobe.net [207.45.222.189]
9 if-2-1.core1.Montreal.Teleglobe.net [207.45.222.121]
10 if-3-1.core1.PennantPoint.Teleglobe.net [207.45.223.41]
11 if-5-0-0.bb1.PennantPoint.Teleglobe.net [207.45.222.94]
12 BOSQUE-aragorn.tecoint.net [200.43.189.230]
13 ARAGORN-bosque.tecoint.net [200.43.189.229]
14 GANDALF-aragorn.tecoint.net [200.43.189.225]
15 Startel.tecoint.net [200.43.189.18]
16 200.26.9.245
17 200.26.9.26
18 200.1.247.2

Computing statistics for 450 seconds:

Source to Here This Node/Link

Hop RTT Lost/Sent = Pct Lost/Sent = Pct Address
0 warren.microsoft.com [63.15.2.217]
0/ 100 = 0% |
1 115ms 0/ 100 = 0% 0/ 100 = 0% tnt2.seattle2.wa.da.uu.net [206.115.150.106]
0/ 100 = 0% |
2 121ms 0/ 100 = 0% 0/ 100 = 0% 206.115.169.217
0/ 100 = 0% |
3 122ms 0/ 100 = 0% 0/ 100 = 0% 119.ATM.ALTER.NET [152.63.104.38]
0/ 100 = 0% |
4 124ms 0/ 100 = 0% 0/ 100 = 0% 412.atm.sea1.ALTER.NET [137.39.13.73]
0/ 100 = 0% |
5 157ms 0/ 100 = 0% 0/ 100 = 0% teleglobe2-gw.ALTER.NET [157.130.177.222]
0/ 100 = 0% |
6 156ms 0/ 100 = 0% 0/ 100 = 0% if-0-3.Teleglobe.net [207.45.222.37]
0/ 100 = 0% |
7 198ms 0/ 100 = 0% 0/ 100 = 0% if-1-3.core1.Teleglobe.net [207.45.223.113]
0/ 100 = 0% |
8 216ms 0/ 100 = 0% 0/ 100 = 0% if-1-2.core1. Teleglobe.net [207.45.222.189]
0/ 100 = 0% |
9 207ms 0/ 100 = 0% 0/ 100 = 0% if-2-1.Teleglobe.net [207.45.222.121]
0/ 100 = 0% |
10 220ms 0/ 100 = 0% 0/ 100 = 0% if-3-1.core1.Teleglobe.net [207.45.223.41]
0/ 100 = 0% |
11 240ms 0/ 100 = 0% 0/ 100 = 0% if-5-0-0.bb1.Teleglobe.net [207.45.222.94]
0/ 100 = 0% |
12 423ms 1/ 100 = 1% 1/ 100 = 1% BOSQUE-aragorn.tecoint.net [200.43.189.230]
0/ 100 = 0% |
13 412ms 0/ 100 = 0% 0/ 100 = 0% ARAGORN-bosque.tecoint.net [200.43.189.229]
0/ 100 = 0% |
14 415ms 1/ 100 = 1% 1/ 100 = 1% GANDALF-aragorn.tecoint.net [200.43.189.225]
0/ 100 = 0% |
15 578ms 0/ 100 = 0% 0/ 100 = 0% Startel.tecoint.net [200.43.189.18]
2/ 100 = 2% |
16 735ms 2/ 100 = 2% 0/ 100 = 0% 200.26.9.245
5/ 100 = 5% |
17 1005ms 8/ 100 = 8% 1/ 100 = 1% 200.26.9.26
0/ 100 = 0% |
18 1089ms 7/ 100 = 7% 0/ 100 = 0% 200.1.247.2

Trace complete.

pathping を実行すると、ルートのテスト結果が最初に表示されます。このパスは、tracert コマンドで示されるものと同じです。この後、pathping コマンドは、次の 450 秒間、ビジー メッセージを表示します (実際の時間は、ホップ カウントによって異なります)。この時間が経過する間、pathping は、リストに示したすべてのルーターとその間のリンクから情報を取得します。取得が完了すると、テスト結果が表示されます。

右側に示される "This Node/Link Lost/Sent=Pct""Address" の 2 つの列には、最も有用な情報が含まれています。200.26.9.245 (ホップ 16) と 200.26.9.26 (ホップ 17) の間のリンクで、8 パーセントのパケットが損失しています。

リンクに対して示されている損失率 (一番右側の列で | マークが付いている値) は、パスに沿った転送中のパケット損失です。この損失は、リンクの輻輳を示します。ルーターに対して示されている損失率 (一番右側の列で IP アドレスで示されている値) は、ルーターの CPU が過負荷になっている可能性があることを意味します。輻輳が発生しているルーターは、end-to-end の問題の要因になります。

Arp ツール

"Arp" コマンドでは、ARP キャッシュを表示できます。同じサブネット上の 2 つのホストの間で ping を相互に送信できない場合は、各コンピュータ上でarp -aコマンドを実行して、コンピュータの MAC アドレスが互いに正しく登録されているかどうかを確認してください。ホストのメディア アクセス制御アドレスを確認するには、ipconfig を使います。ネットワーク上のほかのホストとの間で IP アドレスが重複している場合は、その別のコンピュータのメディア アクセス制御アドレスが ARP キャッシュに格納されている可能性があります。不正確なエントリがある場合は、arp -dを使用してそのエントリを削除します。エントリを追加するには、arp -sを使います。

Tracert ツール

"Tracert" は、ルート トレース用のユーティリティです。tracert では、IP TTL フィールドと ICMP エラー メッセージを使用して、あるホストから別のホストへのルートを判別します。tracert のサンプル出力については、前の「ICMP (Internet Control Message Protocol)」を参照してください。

Route ツール

"Route" は、ルート テーブルを表示または変更するためのツールです。route print コマンドを使うと、特定のホストに対して IP で現在認識されているルートのリストが表示されます。サンプル出力については、前の「インターネット プロトコル (IP)」を参照してください。なお、Windows 2000 では、ルートのリストの末尾に現在アクティブなデフォルト ゲートウェイが示されます。テーブルにルートを追加するにはroute addコマンドを使い、テーブルからルートを削除するにはroute deleteコマンドを使います。

テーブルに追加したルートは、-pスイッチを指定しない限り、コンピュータを再起動するまでの間のみ有効な非恒久的ルートになります。

2 つのホストの間で IP データグラムを交換するには、両方のホストの間で相互にルートが設定されているか、またはルートを決定できるデフォルト ゲートウェイが存在する必要があります。ルーター間の情報交換には、通常、ルーティング情報プロトコル (RIP) や Open Shortest Path First (OSPF) などのプロトコルが使用されます。Windows 2000 Professional ではサイレント RIP を使用でき、Windows 2000 Server ではルーティングとリモート アクセス サービスを通じてルーティング プロトコルが完全にサポートされています。

Netstat

"Netstat" は、プロトコルの統計と現在の TCP/IP 接続を表示するツールです。すべての接続を表示するにはnetstat -aコマンドを使い、ルート テーブルとアクティブな接続を表示するにはnetstat -rコマンドを使います。-nスイッチを指定すると、netstat がアドレスとポート番号を名前に変換しなくなるので、実行速度が高くなります。-eスイッチを指定すると、イーサネットの統計が表示されます。このスイッチは、プロトコル統計を表示する-sスイッチと組み合わせて使用することもできます。サンプル出力を次に示します。

C:\>netstat -e

Interface statistics:

Received Sent

Bytes 372959625 123567086
Unicast packets 134302 145204
Non-unicast packets 55937 886
Discards 0 0
Errors 0 0
Unknown protocols 1757381
C:\>netstat -an

Active connections:

Proto Local Address Foreign Address State

TCP 0.0.0.0:42 0.0.0.0:0 LISTENING
TCP 0.0.0.0:88 0.0.0.0:0 LISTENING
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
TCP 0.0.0.0:389 0.0.0.0:0 LISTENING
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP 0.0.0.0:593 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1038 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1041 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1048 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1054 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1077 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1080 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1088 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1092 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1723 0.0.0.0:0 LISTENING
TCP 0.0.0.0:3268 0.0.0.0:0 LISTENING
TCP 10.99.99.1:53 0.0.0.0:0 LISTENING
TCP 10.99.99.1:139 0.0.0.0:0 LISTENING
TCP 10.99.99.1:389 10.99.99.1:1092 ESTABLISHED
TCP 10.99.99.1:1092 10.99.99.1:389 ESTABLISHED
TCP 10.99.99.1:3604 10.99.99.1:135 TIME_WAIT
TCP 10.99.99.1:3605 10.99.99.1:1077 TIME_WAIT
UDP 0.0.0.0:42 *:*
UDP 0.0.0.0:88 *:*
UDP 0.0.0.0:123 *:*
UDP 0.0.0.0:135 *:*
UDP 0.0.0.0:389 *:*
UDP 0.0.0.0:445 *:*
UDP 0.0.0.0:1073 *:*
UDP 0.0.0.0:1076 *:*
UDP 0.0.0.0:1087 *:*
UDP 10.99.99.1:53 *:*
UDP 10.99.99.1:67 *:*
UDP 10.99.99.1:137 *:*
UDP 10.99.99.1:138 *:*
UDP 127.0.0.1:1052 *:*
D:\>netstat -s

IP statistics:

Packets Received = 3175996

Received Header Errors = 0
Received Address Errors = 38054
Datagrams Forwarded = 0
Unknown Protocols Received = 0
Received Packets Discarded = 0
Received Packets Delivered = 3142564
Output Requests = 3523906
Routing Discards = 0
Discarded Output Packets = 0
Output Packet No Route = 0
Reassembly Required = 0
Reassembly Successful = 0
Reassembly Failures = 0
Datagrams Successfully Fragmented = 0
Datagrams Failing Fragmentation = 0
Fragments Created = 0

ICMP statistics:

Received Sent

Messages 462 33
Errors 0 0
Destination Unreachable 392 4
Time Exceeded 0 0
Parameter Problems 0 0
Source Quenchs 0 0
Redirects 0 0
Echos 1 22
Echo Replies 12 1
Timestamps 0 0
Timestamp Replies 0 0
Address Masks 0 0
Address Mask Replies 0 0

TCP statistics:

Active Opens = 12164

Passive Opens = 12
Failed Connection Attempts = 79
Reset Connections = 11923
Current Connections = 1
Segments Received = 2970519
Segments Sent = 3505992
Segments Retransmitted = 18

UDP statistics:

Datagrams Received = 155620

No Ports = 16578
Receive Errors = 0
Datagrams Sent = 17822

NBTstat ツール

"NBTstat" は、NetBIOS 名解決に関する問題のトラブルシューティングに役立つツールです。nbtstat -nは、サーバーやリダイレクタなどのアプリケーションがシステム上にローカルに登録した名前を表示します。nbtstat -cは、ほかのコンピュータに対して名前からアドレスへのマッピングを格納する NetBIOS 名前キャッシュを表示します。nbtstat -Rは、名前キャッシュ内のエントリを削除し、Lmhosts ファイルの内容を名前キャッシュに再ロードします。nbtstat -RR (Windows 2000 および NT 4.0 SP5 でサポート) は、すべての名前を同じネーム サーバーに再登録します。nbtstat -a name 」 は、 name で指定されたコンピュータに対して NetBIOS アダプタ ステータス コマンドを実行します。アダプタ ステータス コマンドは、そのコンピュータの NetBIOS 名テーブルとアダプタ カードのメディア アクセス制御アドレスの名前テーブルを返します。NBTStat -sは、現在の NetBIOS セッションとそのステータスを統計値とともに表示します。

Nslookup ツール

Windows NT 4.0 で追加された "nslookup" は、ホスト名の解決など、DNS に関する問題のトラブルシューティングに役立つツールです。nslookup を起動すると、ローカル システムに対して構成されている DNS サーバーのホスト名と IP アドレスが表示され、その後、コマンド プロンプトが表示されます。疑問符 (?) を入力すると、利用可能なコマンドが表示されます。

DNS を使用して ホストの IP アドレスを取得するには、ホスト名を入力し、Enter キーを押します。nslookup は、既定の設定では、実行元のコンピュータに対して構成されている DNS サーバーを使用します。別の DNS サーバーを使用したい場合は、そのサーバーの名前 (name) を servername の構文で入力します。

nslookup を使用するときは、ドメイン名の転移方法に注意する必要があります。単にホスト名を入力して Enter キーを押した場合、nslookup は、コンピュータのドメイン サフィックス (cswatcp.microsoft.com など) をホスト名に付加して DNS への照会を行います。名前が見つからなければ、ドメイン サフィックスが 1 レベル転移されます (cswatcp.microsoft.com の場合は、cswatcp が削除され、microsoft.com がサフィックス になります)。そのうえで、照会が繰り返されます。Windows 2000 ベースのコンピュータでは、名前の転移は第 2 レベルのドメイン (cswatcp.microsoft.com の場合は microsoft.com) に対してのみ行われるので、この照会が失敗すると、名前の解決がそれ以上試行されることはありません。完全修飾ドメイン名を入力すると、その名前についてのみ DNS サーバーへの照会が行われるので、ドメイン名は転移されません。完全にドメインの外側にあるホスト名を参照するには、完全修飾名を入力する必要があります。

デバッグ モードは、トラブルシューティングに特に役立つ機能です。デバッグ モードを有効にするには、set debugと入力します。また、set d2と入力すると、さらに詳細なレベルのデバッグが可能になります。デバッグ モードでは、nslookup は、次の例に示すようにコマンドを完了するまでのステップを表示します。

C:\>nslookup

(null) davemac3.cswatcp.microsoft.com
Address: 10.57.8.190
> set d2
> rain-city
(null) davemac3.cswatcp.microsoft.com
Address: 10.57.8.190
------------
SendRequest(), len 49
HEADER:
opcode = QUERY, id = 2, rcode = NOERROR
header flags: query, want recursion
questions = 1, answers = 0, authority records = 0, additional = 0
QUESTIONS:
rain-city.cswatcp.microsoft.com, type = A, class = IN
------------
Got answer (108 bytes):
HEADER:
opcode = QUERY, id = 2, rcode = NOERROR
header flags: response, auth. answer, want recursion, recursion avail.
questions = 1, answers = 2, authority records = 0, additional = 0
QUESTIONS:
rain-city.cswatcp.microsoft.com, type = A, class = IN
ANSWERS:
-> rain-city.cswatcp.microsoft.com
type = CNAME, class = IN, dlen = 31
canonical name = seattle.cswatcp.microsoft.com
ttl = 86400 (1 day)
-> seattle.cswatcp.microsoft.com
type = A, class = IN, dlen = 4
internet address = 10.1.2.3
ttl = 86400 (1 day)
------------
(null) seattle.cswatcp.microsoft.com
Address: 10.1.2.3
Aliases: rain-city.cswatcp.microsoft.com

この例では、set d2 を発行して、nslookup をデバッグ モードに設定し、ホスト名 "rain-city" に対するアドレス参照を行っています。出力の最初の 2 行には、参照の送信先の DNS サーバーのホスト名と IP アドレスが示されます。3 行目以降に示されるように、ローカル マシン (cswatcp.microsoft.com) のドメイン サフィックスを名前 "rain-city" に付加したものを DNS サーバーに照会しています。その後の一連の行は、nslookup が DNS から応答を得た結果、照会に一致するレコードが 2 つ存在することを示しています。2 つのレコードとともに、照会が繰り返されています。この場合、最初のレコードは rain-city.cswatcp.microsoft.com が実際にはホスト名 seattle.cswatcp.microsoft.comcname、つまり "正規名" (エイリアス) であることを示しています。2 番目のレコードは、そのホストの IP アドレスが 10.1.2.3 であることを示しています。

Microsoft Network Monitor

Microsoft Network Monitor は、ネットワークに関する複雑な問題のトラブルシューティングを効率化するツールです。Network Monitor は Microsoft Systems Management Server 製品の一部として用意されていますが、スタンドアロン ツールとしても使用できます。さらに、Windows NT と Windows 95 にはネットワーク モニタ エージェント ソフトウェアが付属しており、Windows NT Server と Windows 2000 には Network Monitor の機能縮小版が付属しています。ネットワーク モニタを実行しているステーションは、ネットワークやダイヤルアップ接続 (リモート アクセス) を通じて、エージェント ソフトウェアを実行しているステーションと接続できます。これにより、リモート ネットワーク セグメントのモニタやトレースを実行できるので、リモートでのトラブルシューティングを容易に実施できます。

ネットワーク モニタでは、キャプチャ側ホストの NIC をプロミスカス モードに設定して、ネットワーク上のすべてのフレームをトレース ツールに渡せるようにします。ただし、Windows 2000 Server に付属している機能縮小版の Network Monitor では、コンピュータとの間のトラフィックのトレースのみが可能です。キャプチャ フィルタを定義すると、特定のフレームだけを分析用に保存できます。フィルタは、発信元 および宛先の NIC アドレス、プロトコル アドレス、およびパターン マッチに基づいて定義できます。フレームのキャプチャが完了すると、表示フィルタで問題の範囲をさらに絞り込むことができます。表示フィルタでは、特定のプロトコルを選択することもできます。

Windows NT ベースのコンピュータでは、ファイルとプリンタの共有など、さまざまな機能にサーバー メッセージ ブロック (SMB) プロトコルを使用します。このプロトコルを解釈するには、Netmon parser ディレクトリの smb.hlp ファイルが参考になります。

まとめ

詳細情報

Windows 2000 Server の最新情報については、http://www.microsoft.com/japan/technet/prodtechnol/windows2000serv/default.mspx の Web サイトを参照してください。

付録 A : TCP/IP 構成パラメータ

Windows 2000 の TCP/IP プロトコル実装では、すべての構成情報をレジストリから取得します。これらの情報は、セットアップ プログラムによってレジストリに書き込まれます。動的ホスト構成プロトコル (DHCP) クライアントが有効になっている場合に、DHCP クライアントによって書き込まれる情報もあります。標準的な TCP/IP ネットワーク プロトコルは、プロトコル ドライバ Tcpip.sys に実装されています。この付録では、Tcpip.sys の構成用レジストリ パラメータについて説明します。

プロトコル スイート は、ほとんどの環境で、セットアップと DHCP が収集する構成情報を使用するだけで適切かつ効率的に動作するように実装されています。プロトコルのその他の構成可能な部分についても、最適な既定値がドライバにコーディングされています。実際の使用環境によっては、特定の既定値の変更が必要になることがあります。既定値の変更が必要な場合は、オプションのレジストリ パラメータを作成して、プロトコル ドライバの既定の動作を変更することができます。

メモ Windows の TCP/IP 実装は、多くの場合、セルフ チューニングだけで最適に動作します。レジストリ パラメータを調整すると、システムのパフォーマンスが悪影響を受ける可能性があります。

すべての TCP/IP パラメータは、次のレジストリ キーの下層にレジストリ値として格納されます。

HKEY_LOCAL_MACHINE

\SYSTEM
\CurrentControlSet
\Services:
\Tcpip
\Parameters

アダプタ固有の値は、各アダプタのサブキーの下層に格納されます。システムやアダプタは DHCP で構成される場合と、静的な上書き値で構成される場合があるため、パラメータが DHCP 構成値と静的構成値の両方を持つことがあります。一般に、これらのパラメータをレジストリ エディタで変更した場合に変更内容を適用するには、システムの再起動が必要になります。ネットワーク接続インターフェイスを使用して値を変更した場合は、通常、再起動は不要です。

レジストリ エディタで構成できるパラメータ

ここで示すパラメータは、TCP/IP コンポーネントのインストール中に既定値に設定されます。これらのパラメータの値を変更するには、レジストリ エディタ (Regedt32.exe) を使います。一部のパラメータは既定の状態でレジストリに含まれていますが、ほとんどのパラメータは TCP/IP プロトコル ドライバの既定動作を変更するときに、レジストリ内に作成する必要があります。ユーザー インターフェイスから構成できるパラメータは、これらのパラメータとは別に示します。

AllowUserRawAccess

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータは、raw ソケットへのアクセスを制御します。TRUE に設定すると、非管理ユーザーが raw ソケットにアクセスできるようになります。既定では、管理者だけが raw ソケットにアクセスできます。raw ソケットの詳細については、http://technet.microsoft.com/library/bb726981.aspx にある 『Windows Sockets 2 Platform SDK』 (英語) を参照してください。

ArpAlwaysSourceRoute

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0、1、またはなし (FALSE、TRUE、またはなし)

既定値 : なし

説明 : 既定では、スタックは最初にソース ルーティングなしで ARP 照会を転送し、応答がなければ、ソース ルーティングを有効にして再試行します。このパラメータを 0 に設定すると、すべての IP ブロードキャストがソース ルーティングなしで送信されます。このパラメータを 1 に設定すると、TCP/IP が ARP 照会を転送するときにトークン リング ネットワーク上で必ずソース ルーティングが有効になります。このパラメータの定義は、Windows NT 4.0 SP2 で変更されました。

ArpCacheLife

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 秒数

有効範囲 : 0 ~ 0xFFFFFFFF

既定値 : ArpCacheLife パラメータがレジストリ内に存在しなければ、未使用のエントリについては 2 分、使用中のエントリについては 10 分が ARP キャッシュの既定タイムアウトとして適用されます。

説明 : ArpCacheMinReferencedLife を参照してください。

ArpCacheMinReferencedLife

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 秒数

有効範囲 : 0 ~ 0xFFFFFFFF

既定値 : 600 秒 (10 分)

説明 : ArpCacheMinReferencedLife は、参照済み ARP キャッシュ エントリの期限が切れるまでの最短時間を制御します。このパラメータは、次のように ArpCacheLife パラメータと組み合わせて使用できます。

  • ArpCacheLife の値が ArpCacheMinReferencedLife の値より大きければ、参照済みの ARP キャッシュ エントリと未参照の ARP キャッシュ エントリは ArpCacheLife 秒後に期限切れになります。

  • ArpCacheLife の値が ArpCacheMinReferencedLife の値より小さければ、未参照の ARP キャッシュ エントリは ArpCacheLife 秒後に期限切れになり、参照済みの ARP キャッシュ エントリは ArpCacheMinReferencedLife 秒後に期限切れになります。

IP アドレスに発信パケットを送信するときに、その IP アドレスが含まれている ARP キャッシュ エントリがその都度参照されます。

ArpRetryCount

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 1 ~ 3

既定値 : 3

説明 : このパラメータは、コンピュータが初期化中に自分の IP アドレスに無償 ARP を送信する回数を制御します。無償 ARP は、IP アドレスがネットワーク上のほかのコンピュータに使用されていないことを確認するために送信されます。このパラメータで制御するのは、再試行の回数ではなく、ARP の実送信回数です。

ArpTRSingleRoute

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータを 1 に設定すると、トークン リング ネットワーク上でソース ルーティングされた ARP ブロードキャストが全ルート ブロードキャストではなく単一ルート ブロードキャストとして送信されるようになります。

ArpUseEtherSNAP

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータを 1 に設定すると、TCP/IP がイーサネット パケットの送信に 802.3 SNAP 暗号化を使用するようになります。既定では、スタックは DIX イーサネット形式でパケットを転送します。受信に関しては、常に両方の形式がサポートされます。

DatabasePath

キー : Tcpip\Parameters

値の種類 : REG_EXPAND_SZ - 文字列

有効範囲 : 有効な Windows NT ファイル パス

既定値 : %SystemRoot%\system32\drivers\etc

説明 : このパラメータでは、標準のインターネット データベース ファイル (Hosts、Lmhosts、Network、Protocols、Services) へのパスを指定します。このパスは、Windows Sockets インターフェイスで使用されます。

DefaultTTL

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 秒数/ホップ数

有効範囲 : 0 ~ 0xff (10 進値では 0 ~ 255)

既定値 : 128

説明 : 発信 IP パケットのヘッダーに設定する Time-to-live (TTL) 値を指定します。TTL は、宛先に到着していない IP パケットがネットワーク内に存在できる最長時間を決定します。実際には、この値によって IP パケットが破棄されるまでに通過できるルーターの数が制限されます。

DisableDHCPMediaSense

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータを使うと、DHCP Media Sense の動作を制御できます。1 に設定すると、DHCP クライアントがインターフェイスからの Media Sense イベントを無視するようになります。既定では、Media Sense イベントがトリガとなって、DHCP クライアントがリースの取得 (接続イベント発生時)、インターフェイスやルートの無効化 (切断イベントの発生時) などのアクションを実行します。

DisableIPSourceRouting

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0、1、2

0 - すべてのパケットを転送します。

1 - ソース ルーティングされたパケットを転送しません。
2 - 着信パケットのうち、ソース ルーティングされたパケットをすべて破棄します。

既定値 : 1 (TRUE)

説明 : IP ソース ルーティングは、ネットワーク上でデータグラムの転送に使用する IP ルートを送信側で指定できるようにするメカニズムです。主に、tracert.exe や ping.exe などのツールで使用されます。

このパラメータは、Windows NT 4.0 Service Pack 5 で追加されました。Microsoft Knowledge Base アーティクル Q217336を参照してください。Windows 2000 では、IP ソース ルーティングが既定で無効になります。

DisableMediaSenseEventLog

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータを使うと、DHCP Media Sense イベントをログに記録しないように設定できます。既定では、Media Sense イベント (ネットワークに対する接続/切断) は、トラブルシューティング用の情報としてイベント ログに記録されます。

DisableTaskOffload

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータは、TCP/IP スタックに対し、ネットワーク カードへのタスク オフロードを無効にするように指示します。トラブルシューティングおよびテスト用のパラメータです。

DisableUserTOSSetting

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 1 (TRUE)

説明 : このパラメータでは、発信 IP パケットのヘッダー内の Type Of Service (TOS) ビットをプログラムから操作できないように設定します。Windows 2000 では、このパラメータは既定で "TRUE" に設定されています。個々のアプリケーションから TOS ビットを操作すると、前の「QoS (Quality of Service) および RSVP (Resource Reservation Protocol)」で述べたようなシステム ポリシー メカニズムが影響を受けるので、一般には、個々のアプリケーションから TOS ビットを操作しない方が安全です。

DontAddDefaultGateway

キー : Tcpip\Parameters \Interfaces\interface

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0

説明 : PPTP をインストールすると、LAN アダプタごとに既定のルートがインストールされます。いずれかの LAN アダプタの既定ルートを無効にしたい場合は、このパラメータをレジストリに追加して、1 に設定します。その後、デフォルト ゲートウェイ以外のルーターから到達されるホストに対して、静的なルートの構成が必要になることがあります。

EnableAddrMaskReply

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータでは、コンピュータが ICMP アドレス マスク要求に応答するかどうかを制御します。

EnableBcastArpReply

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 1 (TRUE)

説明 : このパラメータでは、ARP 内の発信元イーサネット アドレスがユニキャストされていない場合にコンピュータが ARP 要求に応答するかどうかを制御します。この値が 0 の場合は、ネットワーク負荷分散サービス (NLBS) が正しく動作しません。

EnableDeadGWDetect

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 1 (TRUE)

説明 : このパラメータが 1 に設定されている場合は、TCP がデッド ゲートウェイの検出を実行できます。この機能を有効にすると、複数の接続で問題が発生している場合に TCP が IP に対してバックアップ ゲートウェイへの切り替えを要求することがあります。バックアップ ゲートウェイは、ネットワーク コントロール パネルの [TCP/IP 設定] ダイアログの [詳細] タブで設定できます。詳細については、前の「デッド ゲートウェイの検出」を参照してください。

EnableICMPRedirects

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 1 (TRUE)

推奨値 : 0 (FALSE)

説明 :このパラメータでは、ルーターなどのネットワーク デバイスから ICMP リダイレクト メッセージが送信されたときに Windows 2000 がルート テーブルを変更するかどうかを制御します。

EnableFastRouteLookup

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このフラグが設定されている場合は、高速ルート参照が有効になります。高速ルート参照では、非ページ プール メモリを使用してルート参照を高速化します。このフラグは、中以上の容量 (64 MB 以上のメモリ) を持つコンピュータで Windows 2000 Server が実行されている場合にのみ使用されます。このパラメータは、ルーティングとリモート アクセス サービスによって作成されます。

EnableMulticastForwarding

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータでは、ルーティング サービスで IP マルチキャストを転送するかどうかを制御します。このパラメータは、ルーティングとリモート アクセス サービスによって作成されます。

EnablePMTUBHDetect

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータを 1 に設定すると、TCP がパス MTU 発見の実行中に "ブラック ホール" ルーターを検出できるようになります。ブラック ホール ルーターとは、ICMP Destination Unreachable メッセージを返さずに Don't Fragment ビットが設定されている IP データグラムを断片化しようとするルーターです。TCP では、これらのメッセージを受信することを前提にパス MTU 発見を実行します。ブラック ホール ルーターの検出を有効にした場合、あるセグメントを数回再転送しても応答がなければ、TCP が Don't Fragment ビットの設定を解除してセグメントを送信しようとします11。その結果、セグメントへの応答があれば、MSS が減らされ、その接続を通じて今後送信するパケットに Don't Fragment ビットが設定されます。ブラック ホールの検出を有効にすると、1 つのセグメントに対して実行される再転送の最大回数が増えます。

EnablePMTUDiscovery

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 1 (TRUE)

説明 : このパラメータが 1 (TRUE) に設定されいる場合は、TCP がリモート ホストへのパスの最大転送ユニット (MTU または 最大パケット サイズ) の発見を試行します。TCP では、パス MTU を発見して TCP セグメントをそのサイズに制限することで、ネットワークを異なる MTU に接続するパスに沿って存在する各ルーターで断片化が行われるのを防ぐことができます。断片化は、TCP のスループットに悪影響を与え、ネットワークの輻輳を招きます。このパラメータを 0 に設定すると、ローカル サブネット上に存在しないホストへのすべての接続に対して、MTU が 576 バイトに設定されます。

FFPControlFlags

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 1 (TRUE)

説明 : このパラメータが 1 に設定されている場合は、高速転送パス (FFP) が有効になります。 0 に設定すると、TCP/IP がすべての FFP 対応アダプタに対して、このコンピュータでの高速転送を行わないように指示します。高速転送パスに対応したネットワーク アダプタでは、スタックからルーティング情報を受信して、それ以降のパケットをスタックに渡さずにハードウェア レベルで転送できます。FFP パラメータは TCP/IP レジストリ キーに格納されますが、実際の値はルーティングとリモート アクセス サービス (RRAS) によって設定されます。詳細については、RRAS のドキュメントを参照してください。

FFPFastForwardingCacheSize

キー : Tcpip\Parameters

値の種類 : REG_DWORD - バイト数

有効範囲 : 0 ~ 0xFFFFFFFF

既定値 : 100,000 バイト

説明 : 高速転送 (FFP) をサポートしているドライバでシステム メモリをキャッシュに使用している場合に、そのドライバが高速転送キャッシュに割り当てることができるメモリの最大量を指定します。高速転送用のメモリがデバイス自体に内蔵されている場合には、この値は無視されます。

ForwardBufferMemory

キー : Tcpip\Parameters

値の種類 : REG_DWORD - バイト数

有効範囲 : ネットワーク MTU ~ 0xFFFFFFFF 未満の妥当な値

既定値 : 74,240 (50 個の 1,480 バイト パケットに十分となる値を 256 の倍数に丸めたもの)

説明 : このパラメータでは、ルーター パケット キューに最初にパケット データを格納するために IP が割り当てるメモリの量を決定します。このバッファ空間が満杯になると、システムはメモリの割り当て量を増やそうとします。パケット キュー データ バッファの長さは 256 バイトなので、このパラメータには 256 の倍数となる値を指定する必要があります。サイズの大きいパケットに対しては、複数のバッファがチェーンされます。パケットの IP ヘッダーは、別に保存されます。IP ルーティング機能が無効になっている場合には、このパラメータは無視され、バッファは割り当てられません。この機能に割り当てることのできるメモリの最大量は、MaxForwardBufferMemory によって制御されます。

GlobalMaxTcpWindowSize

キー : Tcpip\Parameters

値の種類 : REG_DWORD - バイト数

有効範囲 : 0 ~ 0x3FFFFFFF (10 進値では 1,073,741,823)。ただし、64 KB より大きい値が有効となるのは、接続先のシステムで RFC 1323 のウィンドウ スケーリングがサポートされている場合だけです。ウィンドウ スケーリングについては、前の「伝送制御プロトコル (TCP)」を参照してください。さらに、ウィンドウ スケーリングは、Tcp1323Opts レジストリ パラメータで有効にする必要があります。

既定値 : 既定では、このパラメータはレジストリに含まれていません。

説明 : このパラメータでは、TCP ウィンドウ サイズのグローバルな制限をシステム全体に対して設定します。このパラメータは、Windows 2000 で新しく追加されたものです。なお、インターフェイス別に受信ウィンドウを設定するには、TcpWindowSize パラメータを使います。

IPAutoconfigurationAddress

キー : Tcpip\Parameters\Interfaces\<interface>

値の種類 : REG_SZ - 文字列

有効範囲 : 有効な IP アドレス

既定値 : なし

説明 : このパラメータが示す IP アドレスは、自動構成で選択され、DHCP クライアントに格納されているものです。この値は、変更しないでください。

IPAutoconfigurationEnabled

キー : Tcpip\Parameters、Tcpip\Parameters\Interfaces\interface

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 1 (TRUE)

説明 : このパラメータでは、IP の自動構成を有効にするかどうかを決定します。詳細については、前の「クライアントの自動構成と Media Sense」を参照してください。このパラメータは、グローバルに設定することも、インターフェイス別に設定することもできます。インターフェイス別の値を指定すると、そのインターフェイスについては、グローバル値ではなくインターフェイス別の値が適用されます。

IPAutoconfigurationMask

キー : Tcpip\Parameters、Tcpip\Parameters\Interfaces\interface

値の種類 : REG_SZ - 文字列

有効範囲 : 有効な IP サブネット マスク

既定値 : 255.255.0.0

説明 : このパラメータでは、自動構成によってクライアントに割り当てられるサブネット マスクを制御します。詳細については、前の「クライアントの自動構成と Media Sense」を参照してください。このパラメータは、グローバルに設定することも、インターフェイス別に設定することもできます。インターフェイス別の値を指定すると、そのインターフェイスについては、グローバル値ではなくインターフェイス別の値が適用されます。

IPAutoconfigurationSeed

キー : Tcpip\Parameters、Tcpip\Parameters\Interfaces\interface

値の種類 : REG_DWORD - 数値

有効範囲 : 0 ~ 0xFFFF

既定値 : 0

説明 : このパラメータは、DHCP クライアントによって内部的に使用されるものなので、値を変更しないでください。

IPAutoconfigurationSubnet

キー : Tcpip\Parameters、Tcpip\Parameters\Interfaces\interface

値の種類 : REG_SZ - 文字列

有効範囲 : 有効な IP サブネット

既定値 : 169.254.0.0

説明 : このパラメータでは、自動構成でクライアント用の IP アドレスを選択するときに使用するサブネット アドレスを制御します。詳細については、前の「クライアントの自動構成と Media Sense」を参照してください。このパラメータは、グローバルに設定することも、インターフェイス別に設定することもできます。インターフェイス別の値を指定すると、そのインターフェイスについては、グローバル値ではなくインターフェイス別の値が適用されます。

IGMPLevel

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 0、1、2

既定値 : 2

説明 : このパラメータでは、システムでどのレベルまで IP マルチキャストをサポートし、インターネット グループ管理プロトコル (IGMP) に参加するかを決定します。レベル 0 では、マルチキャストがサポートされません。レベル 1 では、IP マルチキャストの送信が可能ですが、受信はできません。レベル 2 では、IP マルチキャストの送信が可能で、なおかつ IGMP に完全に参加してマルチキャスト パケットを受信することができます。

IPEnableRouter

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータを 1 (TRUE) に設定すると、システムが複数のネットワーク間で IP パケットをルーティングします。

IPEnableRouterBackup

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このキーには、IPEnableRouter の前回の値がセットアップによって書き込まれます。この値は、手動で調整しないでください。

KeepAliveInterval

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ミリ秒単位の時間

有効範囲 : 1 ~ 0xFFFFFFFF

既定値 : 1,000 (1 秒)

説明 : このパラメータでは、応答が受信されるまで行われる Keep-alive 再転送の間隔を決定します。応答が受信されると、次の Keep-alive 転送までの遅延時間が KeepAliveTime の値によって再度制御されます。再転送の回数が TcpMaxDataRetransmissions の値に達しても応答がなければ、接続は中止されます。

KeepAliveTime

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ミリ秒単位の時間

有効範囲 : 1 ~ 0xFFFFFFFF

既定値 : 7,200,000 (2 時間)

説明 : このパラメータでは、TCP がアイドル状態の接続に Keep-alive パケットを送信して、その接続が維持されていることを確認する頻度を制御します。リモート システムが Keep-alive 転送に応答すれば、そのシステムがまだ到達可能で、機能しているものとみなされます。Keep-alive パケットは、既定では送信されません。この機能は、アプリケーションから接続に対して有効化されることがあります。

MaxForwardBufferMemory

キー : Tcpip\Parameters

値の種類 : REG_DWORD - バイト数

有効範囲 : ネットワーク MTU ~ 0xFFFFFFFF

既定値 : 2,097,152 (10 進値、2 MB)

説明 : このパラメータでは、ルーター パケット キューにパケットを格納するために IP が割り当てることのできるメモリの総量を制限します。このパラメータの値は、ForwardBufferMemory パラメータの値以上にする必要があります。詳細については、ForwardBufferMemory を参照してください。

MaxForwardPending

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_DWORD - パケット数

有効範囲 : 1 ~ 0xFFFFFFFF

既定値 : 0x1,388 (10 進値では 5,000)

説明 : このパラメータでは、IP 転送エンジンが任意の時点で特定のネットワーク インターフェイスへの転送対象として処理できるパケットの数を制限します。この数を超えるパケットは、インターフェイス上の未解決の転送が完了するまで IP のキューに入れられます。ほとんどのネットワーク アダプタは、パケットをすばやく転送するので、既定値のままで十分です。ただし、RAS の場合は、1 つのインターフェイスに多数の低速シリアル回線が接続されていることがあります。その場合は、このパラメータの値を増やすと、パフォーマンスが向上する可能性があります。発信回線とそれらの負荷特性に基づいて、適切な値を決定してください。

MaxFreeTcbs

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 0 ~ 0xFFFFFFFF

既定値 : 次に示すように、システムが "小容量" (RAM 容量 19 MB 未満)、"中容量" (RAM 容量 19 ~ 63 MB)、"大容量" (RAM 容量 64 MB 以上) のいずれであるかによって、異なる既定値が適用されます。ただし、今日のコンピュータのほとんどすべては、"大容量" に該当します。

Windows 2000 Server の場合 :

  • 小容量システム - 500

  • 中容量システム - 1,000

  • 大容量システム - 2,000

Windows 2000 Professional の場合 :

  • 小容量システム - 250

  • 中容量システム - 500

  • 大容量システム - 1,000

説明 : このパラメータでは、キャッシュから利用できる (事前割り当ての) トランスポート制御ブロック (TCB) の数を制御します。トランスポート制御ブロックは、TCP 接続ごとに維持されるデータ構造体です。

MaxFreeTWTcbs

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 1 ~ 0xFFFFFFFF

既定値 : 1,000

説明 : このパラメータでは、TIME-WAIT 状態リスト内で TIME-WAIT 状態にできるトランスポート制御ブロック (TCB) の数を制御します。この数を超えると、古い TCB がリストから清掃されます。接続が少なくとも 60 秒間 TIME-WAIT 状態に維持されるように、コンピュータの毎秒の正常接続クローズ速度に 60 をかけた値か、それより大きい値をこのパラメータに指定する必要があります。ほとんどのシステムでは、既定値が適切な設定になります。

MaxHashTableSize

キー : Tcpip\Parameters

値の種類 : REG_DWORD - number (2 の累乗)

有効範囲 : 0x40 ~ 0x10,000 (10 進値で 64 ~ 65,536)

既定値 : 512

説明 : このパラメータには、2 の累乗となる値 (512、1,024、2,048 など) を設定する必要があります。値が 2 の累乗でなければ、システムがハッシュ テーブルのサイズを 2 の累乗に切り上げます。たとえば、513 に設定すると、1,024 に切り上げられます。この値によりシステムが TCP 制御ブロックを検索する速度が決まるので、MaxFreeTcbs を既定値より大きい値に設定した場合は、このパラメータの値も増やす必要があります。

MaxNormLookupMemory

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 任意の DWORD (0xFFFFFFFF に設定するとメモリ制限なし)

既定値 : 次に示すように、システムが小容量 (RAM 容量 19 MB 未満)、中容量 (RAM 容量 19 ~ 63 MB)、大容量 (RAM 容量 64 MB 以上) のいずれであるかによって、異なる既定値が適用されます。ただし、今日のコンピュータのほとんどすべては、大容量に該当します。

Windows 2000 Server の場合 :

  • 小容量システム - 150,000 バイト (1,000 ルート分に相当)

  • 中容量システム - 1,500,000 バイト (10,000 ルート分に相当)

  • 大容量システム - 5,000,000 バイト (40,000 ルート分に相当)

Windows 2000 Professional の場合 :

  • 150,000 バイト (1,000 ルート分に相当)

説明 : このパラメータでは、システムがルート テーブルおよびルートそのものの保持用に割り当てるメモリの最大量を制御します。多数のルートを追加したときにメモリ不足になるのを防止するために用意されています。

MaxNumForwardPackets

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 1 ~ 0xFFFFFFFF

既定値 : 0xFFFFFFFF

説明 : このパラメータでは、ルーター パケット キューに割り当てることのできる IP パケット ヘッダーの総数を制限します。このパラメータの値は、NumForwardPackets パラメータの値以上にする必要があります。詳細については、NumForwardPackets を参照してください。

MaxUserPort

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 最大ポート番号

有効範囲 : 5,000 ~ 65,534 (10 進)

既定値 : 0x1,388 (10 進値では 5,000)

説明 : このパラメータでは、アプリケーションがシステムに対して利用可能なポート番号を要求するときに使用できるポート番号の上限を制御します。通常、有効期間の短いポートは、1,024 ~ 5,000 の範囲内で割り当てられます。このパラメータの値を有効範囲外に設定すると、それに最も近い有効値 (5,000 または 65,534) が適用されます。

MTU

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_DWORD - 数値

有効範囲 : 88 ~ ネットワークの MTU

既定値 : 0xFFFFFFFF

説明 : このパラメータは、ネットワーク インターフェイスの既定の最大転送ユニット (MTU) より優先して適用されます。MTU は、トランスポートがネットワークを通じて転送できるパケットの最大サイズ (バイト単位) です。このサイズには、トランスポート ヘッダーが含まれます。IP データグラムは、複数のパケットにまたがることがあります。ネットワークの既定値より大きい値を指定した場合、トランスポートはネットワークの既定 MTU を使用します。88 より小さい値を指定すると、トランスポートは MTU を 88 に設定します。

メモ Windows 2000 TCP/IP では、既定で PMTU 検出を使用し、サポートされている ローカル MTU を NIC ドライバに照会します。MTU パラメータの値は、通常は、変更する必要がありません。変更すると、パフォーマンスが低下する可能性があります。PMTU 検出の詳細については、前の「伝送制御プロトコル (TCP)」を参照してください。

NumForwardPackets

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 1 ~ 0xFFFFFFFF 未満の妥当な値

既定値 : 0x32 (10 進値では 50)

説明 : このパラメータでは、ルーター パケット キューに割り当てる IP パケット ヘッダーの数を決定します。すべてのヘッダーが使用中の場合、システムは MaxNumForwardPackets の値に達するまで、新しいヘッダーの割り当てを試行します。ルーターに接続されているネットワークの最大 IP データ サイズで ForwardBufferMemory の値を割ったものが、このパラメータの値の下限となります。さらに、転送バッファ メモリのうち少なくと 256 バイトが各パケットに使用されるので、ForwardBufferMemory の値を 256 で割ったものが、このパラメータの値の上限となります。この下限と上限の間の範囲内で、ネットワーク上のトラフィックの種類に応じて、ForwardBufferMemory で指定したサイズとのバランスが最適となる転送パケット数を決定してください。IP ルーティング機能が無効になっている場合には、このパラメータは無視され、ヘッダーは割り当てられません。

NumTcbTablePartitions

キー : Tcpip\Parameters\

値の種類 : REG_DWORD - TCB テーブル パーティションの数

有効範囲 : 1 ~ 0xFFFF

既定値 : 4

説明 : このパラメータでは、TCB テーブル パーティションの数を制御します。マルチプロセッサ システムでは、TCB テーブルを分割すると、TCB テーブル上の競合が減るので、スケーラビリティが向上します。このパラメータの値は、パフォーマンスを綿密に調査したうえで変更してください。推奨される最大値は、CPU 数に 2 をかけたものです。

PerformRouterDiscovery

Key: Tcpip\Parameters\Interfaces\interface

値の種類 : REG_DWORD

有効範囲 : 0、1、2

0 - 無効

1 - 有効
2 - DHCP がルーター発見オプションを送信する場合のみ有効

既定値 : 2 (DHCP によって制御されるが、既定ではオフ)

説明 : このパラメータでは、RFC 1256 で規定されているルーター発見を Windows 2000 でインターフェイス別に実行するかどうかを制御します。SolicitationAddressBcast も参照してください。

PerformRouterDiscoveryBackup

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : なし

説明 : このパラメータは、内部的に PerformRouterDiscovery 値のバックアップ コピーを維持するために使用されます。この値は、変更しないでください。

PPTPTcpMaxDataRetransmissions

キー : Tcpip\Parameters

値の種類 : REG_DWORD - PTP パケットの再転送回数

有効範囲 : 0 ~ 0xFF

既定値 : 5

説明 : このパラメータでは、応答があるまで PPTP パケットを再転送する回数を制御します。このパラメータは、PPTP トラフィックの再転送を通常の TCP トラフィックとは別に構成できるようにするために追加されました。

SackOpts

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 1 (TRUE)

説明 : このパラメータでは、RFC 2018 で規定されている Selective Acknowledgment (SACK) のサポートを有効にするかどうかを制御します。SACK の詳細については、前の「伝送制御プロトコル (TCP)」を参照してください。

SolicitationAddressBcast

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータを使うと、RFC 1256 に規定されているように、ルーター発見メッセージをマルチキャストとしてではなく、ブロードキャストとして送信するように Windows を構成できます。既定では、ルーター発見を有効にすると、ルーター発見要請が all-routers マルチキャスト グループ (224.0.0.2) に送信されます。PerformRouterDiscovery も参照してください。

SynAttackProtect

キー : Tcpip\Parameters

値の種類 : REG_DWORD

有効範囲 : 0、1、2

0 - synattack 保護なし。

1 - TcpMaxHalfOpen および TcpMaxHalfOpenRetried の設定値に一致すれば、再転送の試行回数を減らし、RCE ルート (ルート キャッシュ エントリ) の作成を遅延します。
2 - synattack 保護なしで、かつ、Winsock への指示を遅延します。

メモ システムが攻撃にさらされていることを検出すると、スケーラブル ウィンドウ (RFC 1323) およびアダプタ別構成の TCP パラメータ (初期 RTT、ウィンドウ サイズ) は、どのソケットについても有効ではなくなります。これは、保護が機能していると、SYN-ACK の送信前にルート キャッシュ エントリが照会されず、また、接続のこの段階では Winsock オプションが利用できなくなるためです。

既定値 : 0 (FALSE)

推奨値 : 2

説明 : Synattack 保護では、SYN-ACKS の再転送回数を減らすことで、リソースが割り当てられた状態になる時間を短縮します。ルート キャッシュ エントリ リソースの割り当ては、接続確立まで遅延されます。synattackprotect = 2 の場合は、3 方向ハンドシェイクが完了するまで AFD への接続指示が遅延されます。なお、保護メカニズムによる対処が行われるのは、TcpMaxHalfOpen および TcpMaxHalfOpenRetried の設定値を超過した場合だけです。

Tcp1323Opts

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 数値 (フラグ)

有効範囲 : 0、1、2、3

0 - RFC 1323 オプションを無効にします。

1 - window scale オプションだけを有効にします。
2 - timestamps オプションだけを有効にします。
3 - 両方のオプションを有効にします。

既定値 : 値なし。既定の動作では、オプションを最初は設定せず、要求があったときに設定します。

説明 : このパラメータでは、RFC 1323 で規定されているタイムスタンプとウィンドウ スケーリングのオプションを制御します。タイムスタンプとウィンドウ スケーリングは既定で有効になっていますが、このフラグ ビットで操作できます。ビット 0 はウィンドウ スケーリングを、ビット 1 はタイムスタンプを制御します。

TcpDelAckTicks

Key: Tcpip\Parameters\Interfaces\interface

値の種類 : REG_DWORD - 数値

有効範囲 : 0 ~ 6

既定値 : 2 (200 ミリ秒)

説明 : インターフェイス別の遅延 ACK タイマに適用する 100 ミリ秒間隔の数を指定します。既定では、遅延 ACK タイマは 200 ミリ秒になります。この値を 0 に設定すると、遅延肯定応答 が無効になり、コンピュータがパケットを受信したときに即時に肯定応答を返すようになります。環境を綿密に調査した場合以外は、この値を既定値のままにしておくことをお勧めします。

TcpInitialRTT

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_DWORD - 数値

有効範囲 : 0 ~ 0xFFFF

既定値 : 3 秒

説明 : このパラメータでは、インターフェイス別の TCP 接続要求および初期データ転送に適用する初期タイムアウトを制御します。このパラメータをチューニングする場合は、exponential backoff が使用されるため、十分に注意する必要があります。このパラメータを 3 より大きい値に設定すると、存在しないアドレスに対するタイムアウトが予想外に長くなります。

TcpMaxConnectResponseRetransmissions

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 0 ~ 255

既定値 : 2

説明 : このパラメータでは、接続要求に対して SYN-ACK を転送するときに、応答があるまで再転送を繰り返す回数を制御します。この値を 2 以上に設定すると、スタックは内部的に SYN-ATTACK 保護を使用します。この値を 2 未満に設定すると、スタックは SYN-ATTACK 保護に関するレジストリ値を一切読み取らなくなります。SynAttackProtectTCPMaxPortsExhaustedTCPMaxHalfOpen、および TCPMaxHalfOpenRetried も参照してください。

TcpMaxConnectRetransmissions

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 0 ~ 255 (10 進)

既定値 : 2

説明 : このパラメータでは、TCP が接続要求 (SYN) を何回まで再転送するかを決定します。再転送タイムアウトは、接続試行で再転送が行われるたびに 2 倍になります。初期タイムアウトは、TcpInitialRtt レジストリ値によって制御されます。

TcpMaxDataRetransmissions

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 0 ~ 0xFFFFFFFF

既定値 : 5L

説明 : このパラメータでは、TCP が個々のデータ セグメント (接続要求セグメントではなく) を何回まで再転送するかを決定します。再転送タイムアウトは、接続で再転送が行われるたびに 2 倍になります。応答が再開すると、このタイムアウトはリセットされます。再転送タイムアウト (RTO) の値は、各接続で計測された往復時間の履歴 (SRTT: Smoothed Round Trip Time) に基づいて、動的に調整されます。新しい接続の初期 RTO は、TcpInitialRtt レジストリ値によって制御されます。

TcpMaxDupAcks

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 1 ~ 3

既定値 : 2

説明 : このパラメータでは、送信データの同一シーケンス番号に対して重複する ACK を何個受信したときに、再転送をトリガして、通過中の損失セグメントを再送信するかを決定します。このメカニズムの詳細については、前の「伝送制御プロトコル (TCP)」を参照してください。

TcpMaxHalfOpen

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 100 ~ 0xFFFF

既定値 : 100 (Professional、Server)、500 (Advanced Server)

説明 : このパラメータでは、SYN-RCVD 状態の接続の数がいくつになったときに、SYN-ATTACK 保護の適用を開始するかを制御します。SynAttackProtect が 1 に設定されている場合は、保護対象のポート上の AFD リッスン バックログよりも、このパラメータの値を低く設定する必要があります (バックログのパラメータについては、「付録 C」参照)。詳細については、SynAttackProtect を参照してください。

TcpMaxHalfOpenRetried

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 80 ~ 0xFFFF

既定値 : 80 (Professional、Server)、400 (Advanced Server)

説明 : このパラメータでは、SYN が少なくとも 1 回再転送されている SYN-RCVD 状態の接続の数がいくつになったときに、SYN-ATTACK 保護の適用を開始するかを制御します。詳細については、SynAttackProtect を参照してください。

TcpMaxPortsExhausted

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 0 ~ 0xFFFF

既定値 : 5

説明 : このパラメータでは、SYN-ATTACK 保護の適用を開始するタイミングを制御します。接続の利用可能バックログが 0 に設定されているためにシステムによって拒否された接続要求の数が TcpMaxPortsExhausted の値に達すると、SYN-ATTACK 保護の適用が開始します。

TcpMaxSendFree

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 0 ~ 0xFFFF

既定値 : 5,000

説明 : このパラメータでは、TCB テーブル ヘッダー テーブルのサイズ制限を制御します。RAM 容量の大きいコンピュータでは、この値を増やすと、Synattack 中の応答性を向上できます。

TcpNumConnections

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 0 ~ 0xFFFFFE

既定値 : 0xFFFFFE

説明 : このパラメータでは、TCP が同時にオープンできる接続の最大数を制限します。

TcpTimedWaitDelay

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 秒単位の時間

有効範囲 : 30 ~ 300 (10 進)

既定値 : 0xF0 (10 進値では 240)

説明 : このパラメータでは、接続がクローズ前に TIME_WAIT 状態になる時間の長さを決定します。接続が TIME_WAIT 状態になっている間は、ソケット ペアを再使用できません。この値は、ネットワーク上のセグメントの最大有効期間の 2 倍にする必要があります。このため、この状態は 2MSL 状態とも呼ばれます。詳細については、RFC 793 を参照してください。

TcpUseRFC1122UrgentPointer

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータでは、緊急データに関する RFC 1122 仕様と BSD 派生システムのモードのどちらを TCP で使用するかを決定します。この 2 つのメカニズムは、TCP ヘッダー内の緊急ポインタと緊急データの長さの解釈方法が異なっているため、相互運用できません。Windows 2000 では、既定で BSD モードを使用します。

TcpWindowSize

キー : Tcpip\Parameters、Tcpip\Parameters\Interfaces\interface

値の種類 : REG_DWORD - バイト数

有効範囲 : 0 ~ 0x3FFFFFFF (10 進では 1,073,741,823)。このパラメータの設定値は、TCP/IP スタックによって、最大セグメント サイズ (MSS) の倍数に切り上げられます。64 KB より大きい値が有効となるのは、接続先のシステムで RFC 1323 のウィンドウ スケーリングがサポートされている場合だけです。ウィンドウ スケーリングについては、前の「伝送制御プロトコル (TCP)」を参照してください。

既定値 : 次の値のうち、最も小さい値が既定値となります。

  • 0xFFFF

  • GlobalMaxTcpWindowSize レジストリ パラメータの値

  • ネットワーク上の TCP データ サイズの 4 倍

  • 16,384 をネットワーク TCP データ サイズの偶数倍に切り上げた結果

イーサネットでは最初の既定値が 17,520 になることがありますが、SACK や TIMESTAMPS などの拡張 TCP ヘッダー オプションがサポートされているコンピュータへの接続を確立すると、既定値がやや小さい値に変更される可能性があります。これは、拡張 TCP ヘッダー オプションが使用されていると、TCP ヘッダーのサイズが通常の 20 バイトより大きくなり、データ用の領域が若干少なくなるからです。

説明 : このパラメータでは、提示可能な TCP 受信ウィンドウ の最大サイズを決定します。受信ウィンドウでは、送信側が肯定応答の受信なしに送信できるバイト数が指定されます。一般に、高遅延、高帯域幅のネットワークでは、受信ウィンドウのサイズを大きくするとパフォーマンスが向上します。最大限の効率を得るには、受信ウィンドウのサイズを TCP 最大セグメント サイズ (MSS) の偶数倍にする必要があります。このパラメータは、レジストリ キーの位置によって、グローバルに設定することも、インターフェイス別に設定することもできます。インターフェイス別の値を指定すると、そのインターフェイスについては、グローバル値ではなくインターフェイス別の値が適用されます。GlobalMaxTcpWindowSize も参照してください。

TrFunctionalMcastAddress

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 1 (TRUE)

説明 : このパラメータでは、IP マルチキャストの送信に RFC 1469 で規定されているトークン リングのマルチキャスト アドレスを使用するか、それともサブネット ブロードキャスト アドレスを使用するかを決定します。既定では 1 に設定され、IP マルチキャストに RFC1469 のトークン リングのマルチキャスト アドレスが使用されます。0 に設定すると、IP マルチキャストにサブネット ブロードキャスト アドレスが使用されます。

TypeOfInterface

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_DWORD

有効範囲 : 0、1、2、3

既定値 : 0 (マルチキャストとユニキャストがともに有効)

説明 : このパラメータでは、インターフェイスでルートを取得するトラフィックの種類として、ユニキャストとマルチキャストの一方または両方を指定し、その種類のトラフィックを転送可能にするかどうかを決定します。0 に設定すると、ユニキャスト トラフィックとマルチキャスト トラフィックの両方が可能になります。1 に設定すると、ユニキャスト トラフィックが無効になります。2 に設定すると、マルチキャスト トラフィックが無効になります。3 に設定すると、ユニキャスト トラフィックとマルチキャスト トラフィックの両方が無効になります。このパラメータは転送とルートに影響を及ぼすので、コンピュータ内のほかのインターフェイスマルチキャストが有効に設定されておらず、既定のルートが存在していれば、ローカル アプリケーションからインターフェイスを通じてマルチキャストを送出することは可能です。

UseZeroBroadcast

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータが 1 (TRUE) に設定されている場合は、すべて 1 のブロードキャスト (255.255.255.255) ではなく、すべて 0 のブロードキャスト (0.0.0.0) が IP に使用されます。ほとんどのシステムでは、すべて 1 のブロードキャストを使用しますが、BSD 実装から派生した一部のシステムでは、すべて 0 のブロードキャストを使用します。使用するブロードキャストが異なるシステムは、同じネットワーク上で相互運用できません。

ユーザー インターフェイスから構成できるパラメータ

ここでは、ユーザーが指定した情報に基づいて NCPA が自動的に作成および変更するパラメータを示します。通常は、これらのパラメータをレジストリ内で直接構成する必要はありません。

DefaultGateway

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_MULTI_SZ - ドット形式の 10 進 IP アドレスのリスト

有効範囲 : 有効な IP アドレスの任意の集合

既定値 : なし

説明 : このパラメータでは、現在のコンピュータが直接接続されているサブネットを宛先としておらず、ルートが確定していないパケットをルーティングするために使用するゲートウェイのリストを指定します。このパラメータに有効な値を指定すると、その値は DhcpDefaultGateway パラメータより優先して適用されます。1 つのコンピュータに対してアクティブになるデフォルト ゲートウェイは常に 1 つだけなので、複数のアドレスを追加した場合は、あくまで冗長性が確保されるだけです。詳細については、前の「デッド ゲートウェイの検出」を参照してください。

Domain

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_SZ - 文字列

有効範囲 : 任意の有効な DNS ドメイン名

既定値 : なし

説明 : このパラメータでは、インターフェイスの DNS ドメイン名を指定します。Windows 2000 では、このパラメータと NameServer パラメータは、システム全体に適用するパラメータではなく、インターフェイス別のパラメータとして扱われます。このパラメータは、DHCP クライアントから設定される DhcpDomain パラメータより優先して適用されます。

EnableDhcp

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータが 1 (TRUE) に設定されている場合は、DHCP クライアント サービスが DHCP を使用して現在のアダプタ上の最初の IP インターフェイスを構成しようとします。

EnableSecurityFilters

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータが 1 (TRUE) に設定されている場合は、IP セキュリティ フィルタが有効になります。TcpAllowedPortsUdpAllowedPorts、および RawIPAllowedPorts を参照してください。これらの値を構成するには、[スタート] メニューの [設定] をポイントし、[ネットワークとダイヤルアップ接続] をクリックします。次に、[ローカルエリア接続] を右クリックし、[プロパティ] をクリックします。[インターネットプロトコル (TCP/IP)] を選択して、[プロパティ] をクリックし、[詳細] をクリックします。[オプション] タブを選択して、[TCP/IP フィルタ] をクリックし、[プロパティ] をクリックします。

Hostname

キー : Tcpip\Parameters

値の種類 : REG_SZ - 文字列

有効範囲 : 任意の有効な DNS ホスト名

既定値 : システムのコンピュータ名

説明 : このパラメータでは、システムの DNS ホスト名を指定します。これは、hostname コマンドが返す名前です。

IPAddress

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_MULTI_SZ - ドット形式の 10 進 IP アドレスのリスト

有効範囲 : 有効な IP アドレスの任意の集合

既定値 : なし

説明 : このパラメータでは、アダプタにバインドする IP インターフェイスの IP アドレスを指定します。リストの先頭のアドレスが 0.0.0.0 であれば、アダプタ上のプライマリ インターフェイスが DHCP から構成されます。1 つの IP インターフェイスに対して複数の IP インターフェイスを持つシステムは、"論理マルチホーム" システムと呼ばれます。このパラメータに指定する各 IP アドレスに対応する有効なサブネット マスク値が SubnetMask パラメータに指定されている必要があります。パラメータを Regedt32.exe で追加するには、このキーを選択し、IP アドレスを入力するたびに Enter キーを押して、アドレスのリストを作成します。その後で、SubnetMask パラメータに移動し、対応するサブネット マスクのリストを入力します。

NameServer

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_SZ - ドット形式の 10 進 IP アドレスのスペース区切りリスト

有効範囲 : 有効な IP アドレスの任意の集合

既定値 : なし (空白)

説明 : このパラメータでは、Windows Sockets が名前を解決するときに照会する DNS ネーム サーバーを指定します。Windows 2000 では、このパラメータと NameServer パラメータは、インターフェイス別のパラメータとして扱われます。

PPTPFiltering

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータでは、PPTP フィルタをアダプタ別に有効にするかどうかを制御します。このパラメータが 1 に設定されている場合は、アダプタが PPTP 接続だけを受け付けます。アダプタをインターネットのようなパブリック ネットワークに接続している場合は、このパラメータをハッキング対策に使用できます。

RawIpAllowedProtocols

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_MULTI_SZ - IP プロトコル番号のリスト

有効範囲 : 有効な IP プロトコル番号の集合

既定値 : なし

説明 : このパラメータでは、セキュリティ フィルタが有効に設定 (EnableSecurityFilters = 1) されている場合に IP インターフェイス上で受け付け可能な着信データグラムを特定する IP プロトコル番号のリストを指定します。このパラメータは、raw ソケット用の raw IP トランスポート による IP データグラム受け付けを制御します。ほかのトランスポート (TCP など) に渡される IP データグラムを制御するものではありません。リストを空にすると、どの値も受け付けられなくなります。0 を 1 つだけ指定すると、すべての値が受け付けられます。値 0 をほかの 0 以外の値と組み合わせたリストの場合の動作は定義されていません。インターフェイスにこのパラメータがない場合は、すべての値が受け付け可能になります。このパラメータは、特定のアダプタ上で構成されているすべての IP インターフェイスに適用されます。

SearchList

キー : Tcpip\Parameters

値の種類 : REG_SZ - DNS ドメイン名サフィックスのスペース区切りリスト

有効範囲 : 1 ~ 50

既定値 : なし

説明 : このパラメータでは、DNS で非修飾名の解決に失敗した場合に名前に付加するドメイン名サフィックスのリストを指定します。既定では、Domain パラメータの値だけが付加されます。このパラメータは、Windows Sockets インターフェイスで使用されます。AllowUnqualifiedQuery も参照してください。

SubnetMask

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_MULTI_SZ - ドット形式の 10 進 IP アドレスのリスト

有効範囲 : 有効な IP アドレスの任意の集合

既定値 : なし

説明 : このパラメータでは、アダプタにバインドする IP インターフェイスで使用するサブネット マスクを指定します。リストの先頭のマスクが 0.0.0.0 であれば、アダプタ上のプライマリ インターフェイスが DHCP で構成されます。このパラメータには、IPAddress パラメータに指定する各 IP アドレスに対応する有効なサブネット マスク値を指定する必要があります。

TcpAllowedPorts

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_MULTI_SZ - TCP ポート番号のリスト

有効範囲 : 有効な TCP ポート番号の集合

既定値 : なし

説明 : このパラメータでは、セキュリティ フィルタが有効に設定 (EnableSecurityFilters = 1) されている場合に IP インターフェイス上で受け付け可能な SYN を特定する TCP ポート番号のリストを指定します。リストを空にすると、どの値も受け付けられなくなります。0 を 1 つだけ指定すると、すべての値が受け付けられます。値 0 をほかの 0 以外の値と組み合わせたリストの場合の動作は定義されていません。インターフェイスにこのパラメータがない場合は、すべての値が受け付け可能になります。このパラメータは、指定したアダプタ上で構成されているすべての IP インターフェイスに適用されます。

UdpAllowedPorts

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_MULTI_SZ - UDP ポート番号のリスト

有効範囲 : 有効な UDP ポート番号の集合

既定値 : なし

説明 : このパラメータでは、セキュリティ フィルタが有効に設定 (EnableSecurityFilters = 1) されている場合に IP インターフェイス上で受け付け可能な着信データグラムを特定する UDP ポート番号のリストを指定します。リストを空にすると、どの値も受け付けられなくなります。0 を 1 つだけ指定すると、すべての値が受け付けられます。値 0 をほかの 0 以外の値と組み合わせたリストの場合の動作は定義されていません。インターフェイスにこのパラメータがない場合は、すべての値が受け付け可能になります。このパラメータは、指定したアダプタ上で構成されているすべての IP インターフェイスに適用されます。

route コマンドで構成できるパラメータ

route コマンドを使うと、固定 IP ルートをレジストリ キー Tcpip\Parameters\PersistentRoutes の下層の値として保存できます。各ルートは、次の形式のカンマ区切りリストとして値の名前に関連付けられます。

destination,subnet mask,gateway,metric

例を次に示します。

route add 10.99.100.0 MASK 255.255.255.0 10.99.99.1 METRIC 1 /p

上のコマンドを実行すると、次のレジストリ値が作成されます。

10.99.100.0,255.255.255.0,10.99.99.1,1

値の種類は REG_SZ です。値データはありません (空の文字列)。これらの値を追加または削除するには、route コマンドを使います。通常は、これらの値を直接構成する必要はありません。

構成できないパラメータ

ここでは、レジストリ エディタでは構成できないパラメータを示します。これらのパラメータは、TCP/IP コンポーネントによって作成され、内部的に使用されるものです。ここでは、これらのパラメータをあくまで参考用に示しています。

DhcpDefaultGateway

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_MULTI_SZ - ドット形式の 10 進 IP アドレスのリスト

有効範囲 : 有効な IP アドレスの任意の集合

既定値 : なし

説明 : このパラメータでは、現在のコンピュータが直接接続されているサブネットを宛先としておらず、ルートが確定していないパケットをルーティングするために使用するデフォルト ゲートウェイのリストを指定します。このパラメータは、DHCP クライアント サービスによって書き込まれます (サービスが有効になっている場合)。DefaultGateway パラメータに有効な値が指定されている場合は、DefaultGateway パラメータがこのパラメータより優先して適用されます。このパラメータはインターフェイス別に設定されますが、1 つのコンピュータに対してアクティブになれるデフォルト ゲートウェイは常に 1 つだけです。ほかのデフォルト ゲートウェイは、前のデフォルト ゲートウェイがダウンしている場合に使用されます。

DhcpIPAddress

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_SZ - ドット形式の 10 進 IP アドレス

有効範囲 : 任意の有効な IP アドレス

既定値 : なし

説明 :このパラメータは、DHCP がインターフェイスに対して構成した IP アドレスを示します。IPAddress パラメータの先頭の値が 0.0.0.0 以外の場合は、その値がこのパラメータより優先して適用されます。

DhcpDomain

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_SZ - 文字列

有効範囲 : 任意の有効な DNS ドメイン名

既定値 : なし (DHCP サーバーによる設定)

説明 : このパラメータは、インターフェイスの DNS ドメイン名を示します。Windows 2000 では、このパラメータと NameServer パラメータは、システム全体に適用するパラメータではなく、インターフェイス別のパラメータとして扱われます。Domain キーが存在する場合は、Domain の値が DhcpDomain の値より優先して適用されます。

DhcpNameServer

キー : Tcpip\Parameters

値の種類 : REG_SZ - ドット形式の 10 進 IP アドレスのスペース区切りリスト

有効範囲 : 有効な IP アドレスの任意の集合

既定値 : なし

説明 : このパラメータは、Windows Sockets が名前を解決するときに照会する DNS ネーム サーバーを示します。このパラメータは、DHCP クライアント サービスによって書き込まれます (サービスが有効になっている場合)。NameServer パラメータが有効な値に設定されている場合は、その値がこのパラメータより優先して適用されます。

DhcpServer

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_SZ - ドット形式の 10 進 IP アドレス

有効範囲 : 任意の有効な IP アドレス

既定値 : なし

説明 : このパラメータは、DhcpIPAddress パラメータの IP アドレスのリースを許可した DHCP サーバーの IP アドレスを示します。

DhcpSubnetMask

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_SZ - ドット区切り 10 進 サブネット マスク

有効範囲 : 構成されている IP アドレスに対して有効となる任意のサブネット マスク

既定値 : なし

説明 : このパラメータは、DhcpIPAddress パラメータのアドレスに対して DHCP が構成したサブネット マスクを示します。

DhcpSubnetMaskOpt

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_SZ - ドット区切り 10 進 サブネット マスク

有効範囲 : 構成されている IP アドレスに対して有効となる任意のサブネット マスク

既定値 : なし

説明 : このパラメータは、DHCP クライアント サービスによって設定されます。このパラメータの値に基づいて、DhcpSubnetMask パラメータが作成され、その値がスタックに使用されます。DhcpSubnetMask パラメータに値を挿入するときには、妥当性チェックが行われます。

Lease

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_DWORD - 秒単位の時間

有効範囲 : 1 ~ 0xFFFFFFFF

既定値 : なし

説明 : DHCP クライアント サービスによって使用されるパラメータです。現在のアダプタに対する IP アドレスのリースの有効期間を秒単位で示します。

LeaseObtainedTime

キー : Tcpip\Parameters\Interfaces\interface

値の種類 :REG_DWORD - 1970/1/1 の深夜を基点とする秒単位の絶対時間

有効範囲 : 1 ~ 0xFFFFFFFF

既定値 : なし

説明 : DHCP クライアント サービスによって使用されるパラメータです。現在のアダプタに対する IP アドレスのリースを取得した日時を示します。

LeaseTerminatesTime

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_DWORD - 1970/1/1 の深夜を基点とする秒単位の絶対時間

有効範囲 : 1 ~ 0xFFFFFFFF

既定値 : なし

説明 : DHCP クライアント サービスによって使用されるパラメータです。現在のアダプタに対する IP アドレスのリース期限が切れる日時を示します。

LLInterface

キー : Tcpip\Parameters\Adapters\interface

値の種類 : REG_SZ - Windows 2000 デバイス名

有効範囲 : 有効な Windows 2000 デバイス名

既定値 : 空の文字列 (空白)

説明 : 組み込みの ARP モジュールとは異なるリンク レイヤ プロトコルに IP をバインドするためのパラメータです。IP のバインド先の Windows 2000 デバイスの名前がこのパラメータの値になります。このパラメータは、RAS コンポーネントなどと組み合わせて使用されます。このパラメータは、LAN 以外の ARP モジュールが IP にバインドされている場合にのみ存在します。

NTEContextList

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_MULTI_SZ - 数値

有効範囲 : 0 ~ 0xFFFF

既定値 : なし

説明 : このパラメータは、インターフェイスに関連付けられている IP アドレスのコンテキストを示します。インターフェイスに関連付けられている各 IP アドレスには、固有のコンテキスト番号があります。このパラメータは、IP アドレスの識別に内部的に使用されるものなので、値を変更しないでください。

T1

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_DWORD - 1970/1/1 の深夜を基点とする秒単位の絶対時間

有効範囲 : 1 ~ 0xFFFFFFFF

既定値 : なし

説明 : DHCP クライアント サービスによって使用されるパラメータです。現在のアダプタに対する IP アドレスのリースを更新するために、DHCP クライアント サービスが最初にリースの許可元のサーバーと交信した日時を示します。

T2

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_DWORD - 1970/1/1 の深夜を基点とする秒単位の絶対時間

有効範囲 : 1 ~ 0xFFFFFFFF

既定値 : なし

説明 : DHCP クライアント サービスによって使用されるパラメータです。現在のアダプタに対する IP アドレスのリースを更新するために、DHCP クライアント サービスが更新要求をブロードキャストした日時を示します。T2 パラメータが書き込まれるのは、何らかの理由で元のサーバーとの間でリースを更新できなかった場合だけです。

ATM ARP クライアント パラメータ

ATM ARP クライアント パラメータは、各インターフェイスの TCP/IP パラメータとともに、AtmArpC サブキーの下層に格納されます。単一の TCP/IP インターフェイスが ATM アダプタに対応している場合のレジストリのサンプル ダンプを次に示します。

HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parame

ters\Interfaces\{A24B73BE-D2CD-11D1-BE08-8FF4D413E1BE}\AtmArpC

SapSelector = REG_DWORD 0x00000001

AddressResolutionTimeout = REG_DWORD 0x00000003
ARPEntryAgingTimeout = REG_DWORD 0x00000384
InARPWaitTimeout = REG_DWORD 0x00000005
MaxResolutionAttempts = REG_DWORD 0x00000004
MinWaitAfterNak = REG_DWORD 0x0000000a
ServerConnectInterval = REG_DWORD 0x00000005
ServerRefreshTimeout = REG_DWORD 0x00000384
ServerRegistrationTimeout = REG_DWORD 0x00000003
DefaultVcAgingTimeout = REG_DWORD 0x0000003c
MARSConnectInterval = REG_DWORD 0x00000005
MARSRegistrationTimeout = REG_DWORD 0x00000003
JoinTimeout = REG_DWORD 0x0000000a
LeaveTimeout = REG_DWORD 0x0000000a
MaxJoinLeaveAttempts = REG_DWORD 0x00000005
MaxDelayBetweenMULTIs = REG_DWORD 0x0000000a
ARPServerList = REG_MULTI_SZ "4700790001020000000000000000A03E00000200"
MARServerList = REG_MULTI_SZ "4700790001020000000000000000A03E00000200"
MTU = REG_DWORD 0x000023dc
PVCOnly = REG_DWORD 0x00000000

ここでは、上のダンプに示されている各パラメータについて説明します。

SapSelector

キー : Tcpip\Parameters\Interfaces\interface\AtmArpC

値の種類 : REG_DWORD - 数値

有効範囲 : 1 ~ 255

既定値 : 1

説明 : ATMARP クライアントの ATM アドレスの 12 バイト目として使用されるセレクタ バイト値を指定します。これにより、ATMARP サーバーおよびマルチキャスト アドレス解決サーバー (MARS) に登録するアドレスが得られます。

AddressResolutionTimeout

キー : Tcpip\Parameters\Interfaces\interface\AtmArpC

値の種類 : REG_DWORD - 秒数

有効範囲 : 1 ~ 60

既定値 : 3

説明 : ユニキャスト IP アドレスに対する ARP 要求か、またはマルチキャスト/ブロードキャスト IP アドレスに対する MARS 要求を送信した後で ATMARP クライアントが応答を待機する時間の長さを指定します。この時間が経過すると、ATMARP クライアントは要求を再転送します。再転送の回数は、MaxResolutionAttempts の値から 1 を引いた値が上限になります。

ARPEntryAgingTimeout

キー : Tcpip\Parameters\Interfaces\interface\AtmArpC

値の種類 : REG_DWORD - 秒数

有効範囲 : 90 ~ 1,800

既定値 : 900 秒 (15 分)

説明 : ATMARP クライアントがユニキャスト IP アドレスの解決情報を無効化前に何秒間保持するかを指定します。この時間が経過すると、ATMARP クライアントは、次のいずれかの処理を行います。

  • IP アドレスに仮想回線 (VC) が関連付けられている場合は、この IP アドレスの ARP エントリを削除します。

  • IP アドレスに少なくとも 1 つの恒久仮想回線 (PVC) が関連付けられている場合は、PVC 上で逆 ARP を使用して ARP エントリを再有効化します。

  • IP アドレスに少なくとも 1 つの SVC が関連付けられている場合は、ARP サーバーに ARP 要求を送信して ARP エントリを再有効化します。

InARPWaitTimeout

キー : Tcpip\Parameters\Interfaces\interface\AtmArpC

値の種類 : REG_DWORD - 秒数

有効範囲 : 1 ~ 60

既定値 : 5

説明 : ATM アドレス マッピングに対してユニキャスト IP アドレスを ARP エントリとして再有効化するために逆 ARP (InARP) 要求を送信した後で、ATMARP クライアントが応答を待機する時間の長さを指定します。この時間が経過すると、ATMARP クライアントは、ARP テーブルから IP アドレスが含まれているエントリを削除します。

MaxResolutionAttempts

キー : Tcpip\Parameters\Interfaces\interface\AtmArpC

値の種類 : REG_DWORD - 数値

有効範囲 : 1 ~ 255

既定値 : 4

説明 : ATMARP クライアントがユニキャスト、マルチキャスト、またはブロードキャスト IP アドレスから ATM アドレスへの解決を何回まで試行するかを指定します。

MinWaitAfterNak

キー : Tcpip\Parameters\Interfaces\interface\AtmArpC

値の種類 : REG_DWORD - 秒数

有効範囲 : 1 ~ 60

既定値 : 10

説明 : ATMARP クライアントが ARP サーバーまたは MARS から否定応答 (ARP NAK) を受信した後で待機する時間の長さを指定します。この待機時間は、存在しない IP アドレスや未知の IP アドレスの照会が ATMARP クライアントから短時間で大量にサーバーに送信されるのを防止するために設定されます。

ServerConnectInterval

キー : Tcpip\Parameters\Interfaces\interface\AtmArpC

値の種類 : REG_DWORD - 秒数

有効範囲 : 1 ~ 30

既定値 : 5

説明 : ATMARP クライアントが ARP サーバーへの接続に失敗したときに、何秒間待機してから接続を再試行するかを指定します。

ServerRefreshTimeout

キー : Tcpip\Parameters\Interfaces\interface\AtmArpC

値の種類 : REG_DWORD - 秒数

有効範囲 : 90 ~ 1,800

既定値 : 900 秒 (15 分)

説明 : ATMARP クライアントが何秒おきに自分の IP/ATM アドレス情報を示す ARP 要求を送信して ATMARP サーバーのキャッシュを更新するかを指定します。

ServerRegistrationTimeout

キー : Tcpip\Parameters\Interfaces\interface\AtmArpC

値の種類 : REG_DWORD - 秒数

有効範囲 : 1 ~ 60

既定値 : 3

説明 : ATMARP クライアントが自分の IP/ATM 情報を ATMARP サーバーに登録するために送信した ARP 要求に対する ARP 応答パケットを待機する時間の長さを指定します。この時間が経過すると、ATMARP クライアントは ARP 要求パケットを再転送します。

DefaultVcAgingTimeout

キー : Tcpip\Parameters\Interfaces\interface\AtmArpC

値の種類 : REG_DWORD - 秒数

有効範囲 : 10 ~ 1,800

既定値 : 60

説明 : ATMARP クライアントが開始したすべての VC に適用する非アクティブ タイムアウトを指定します。PVC は適用対象外です。データがどちらの方向にも転送されていない状態を非アクティブとみなします。この時間が経過すると、ATMARP クライアントは VC を切断します。

MARSConnectInterval

キー : Tcpip\Parameters\Interfaces\interface\AtmArpC

値の種類 : REG_DWORD - 秒数

有効範囲 : 1 ~ 30

既定値 : 5

説明 : ATMARP クライアントが MARS への接続に失敗したときに、何秒間待機してから接続を再試行するかを指定します。

MARSRegistrationTimeout

キー : Tcpip\Parameters\Interfaces\interface\AtmArpC

値の種類 : REG_DWORD - 秒数

有効範囲 : 1 ~ 60

既定値 : 3

説明 : ATMARP クライアントが自分の ATM アドレスを MARS に登録するために送信した MARS Join パケットに応答する MARS Join パケットを待機する時間の長さを指定します。この時間が経過すると、ATMARP クライアントは MARS Join パケットを再転送します。

JoinTimeout

キー : Tcpip\Parameters\Interfaces\interface\AtmArpC

値の種類 : REG_DWORD - 秒数

有効範囲 : 5 ~ 60

既定値 : 10

説明 : ATMARP クライアントが IP マルチキャスト グループ (または IP ブロードキャスト グループ) へのメンバシップを開始するために送信した MARS Join パケットに応答する MARS Join パケットを待機する時間の長さを指定します。この時間が経過すると、ATMARP クライアントは MARS Join パケットを再転送します。再転送の回数は、MaxJoinLeaveAttempts の値が上限となります。

LeaveTimeout

キー : Tcpip\Parameters\Interfaces\interface\AtmArpC

値の種類 : REG_DWORD - 秒数

有効範囲 : 5 ~ 60

既定値 : 10

説明 : ATMARP クライアントが IP マルチキャスト グループ (または IP ブロードキャスト グループ) へのメンバシップを終了するために送信した MARS Leave パケットに応答する MARS Leave パケットを待機する時間の長さを指定します。この時間が経過すると、ATMARP クライアントは MARS Leave パケットを再転送します。再転送の回数は、MaxJoinLeaveAttempts の値が上限となります。

MaxJoinLeaveAttempts

キー : Tcpip\Parameters\Interfaces\interface\AtmArpC

値の種類 : REG_DWORD - 数値

有効範囲 : 1 ~ 10

既定値 : 5

説明 : ATMARP クライアントが IP マルチキャスト グループまたは IP ブロードキャスト グループに対する参加を開始または終了するときの再試行の最大回数を指定します。

MaxDelayBetweenMULTIs

キー : Tcpip\Parameters\Interfaces\interface\AtmArpC

値の種類 : REG_DWORD - 秒数

有効範囲 : 2 ~ 60

既定値 : 5

説明 : 単一の MARS 要求に対応する連続した複数の MARS MULTI パケットの間の遅延を ATMARP クライアントが最大で何秒まで許容するかを指定します。

ARPServerList

キー : Tcpip\Parameters\Interfaces\interface\AtmArpC

値の種類 : REG_MULTI_SZ

有効範囲 : ATM アドレスを含む文字列のリスト

既定値 : 4700790001020000000000000000A03E00000200

説明 : ARP クライアントが登録先として使用できる ARP サーバーのリストを指定します。ARP クライアントは、登録に成功するまでリスト内のアドレスを順に使用します。

MARServerList

キー : Tcpip\Parameters\Interfaces\interface\AtmArpC

値の種類 : REG_MULTI_SZ - 文字列のリスト

有効範囲 : ATM アドレスを含む文字列のリスト

既定値 : 4700790001020000000000000000A03E00000200

説明 : ARP クライアントが登録先として使用できる MARS サーバーのリストを指定します。ARP クライアントは、登録に成功するまでリスト内のアドレスを順に使用します。

MTU

キー : Tcpip\Parameters\Interfaces\interface\AtmArpC

値の種類 : REG_DWORD - バイト数

有効範囲 : 9,180 ~ 65,527

既定値 : 9,180

説明 : このインターフェイスの IP レイヤに報告する最大転送ユニットを指定します。

付録 B : NetBIOS over TCP/IP の構成パラメータ

すべての NetBT パラメータは、HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Services の 2 つの異なるサブキーのいずれかの下層にレジストリ値として格納されます。

  • NetBT\Parameters

  • NetBT\Adapters\Interfaces\interface - ここで、interface は NetBT のバインド先のネットワーク インターフェイスのサブキーを指します。

後者のキーの下層には、各インターフェイスに固有の値が格納されます。システムが DHCP で構成されている場合は、コマンド プロンプトから ipconfig /renew コマンドを実行すると、パラメータへの変更が適用されます。DHCP で構成されていない場合は、システムを再起動する必要があります。

レジストリ エディタで構成できるパラメータ

ここで示すパラメータは、TCP/IP コンポーネントのインストール中に NCPA によって既定値に設定されます。これらのパラメータの値を変更するには、レジストリ エディタ (Regedt32.exe) を使います。一部のパラメータは既定の状態でレジストリに含まれていますが、ほとんどのパラメータは NetBT ドライバの既定動作を変更するときに、レジストリ内に作成する必要があります。

BacklogIncrement

キー : Netbt\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 3 ~ 0x14 (10 進値では 1 ~ 20)

既定値 : 3

説明 : インターネット SYN-ATTACK の問題に対処するために追加されたパラメータです。NetBIOS TCP ポート (139) への接続試行時に空き接続ブロック数が 2 未満であれば、システムによって BackLogIncrement 個の新しい接続ブロックが作成されます。各接続ブロックは、78 バイトのメモリを消費します。接続ブロックの最大許容数は、MaxConnBackLog パラメータで設定できます。NetBT 接続ごとに、接続ブロックが 1 つずつ必要です。

BcastNameQueryCount

キー : Netbt\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 1 ~ 0xFFFF

既定値 : 3

説明 : NetBT が特定の名前を照会するときに応答がなければ、その照会を何回までブロードキャストするかを指定します。

BcastQueryTimeout

キー : Netbt\Parameters

値の種類 : REG_DWORD - ミリ秒単位の時間

有効範囲 : 100 ~ 0xFFFFFFFF

既定値 : 0x2ee (10 進値では 750)

説明 : 同じ名前の照会を繰り返しブロードキャストする場合の間隔を指定します。

BroadcastAddress

キー : Netbt\Parameters

値の種類 : REG_DWORD - 4 バイトのリトル エンディアン暗号化 IP アドレス

有効範囲 : 0 ~ 0xFFFFFFFF

既定値 : 各ネットワークに対応するすべて 1 のブロードキャスト アドレス

説明 : このパラメータを使うと、ブロードキャスト名に関連するすべてのパケットに対して、特定のアドレスを強制的に使用させることができます。既定では、NetBT は、各ネットに適切なすべて 1 のブロードキャスト アドレスを使用します。たとえば、サブネット マスク 255.255.0.0 を持つネットワーク 10.101.0.0 の場合、サブネット ブロードキャスト アドレスは 10.101.255.255 となります。このパラメータが設定されるのは、UseZeroBroadcast TCP/IP パラメータを通じてネットワークがすべて 0 のブロードキャストを使用するように構成されている場合などです。上の例の場合、適切なサブネット ブロードキャスト アドレスは 10.101.0.0 となり、このパラメータの設定値は 0x0b650,000 となります。このパラメータは、NetBT のバインド先のすべてのサブネットに対してグローバルに適用されます。

CachePerAdapterEnabled

キー : Netbt\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 1 (TRUE)

説明 : NetBIOS リモート名のキャッシュをアダプタ別に維持するかどうかを決定します。Nbtstat -c は、アダプタ別の名前キャッシュを表示するように強化されています。

CacheTimeout

キー : Netbt\Parameters

値の種類 : REG_DWORD - ミリ秒単位の時間

有効範囲 : 0xEA60 ~ 0xFFFFFFFF

既定値 : 0x927c0 (600,000 ミリ秒 = 10 分)

説明 : リモート名テーブルに名前をキャッシュする時間間隔を決定します。nbtstat -c コマンドを使うと、キャッシュ内のそれぞれの名前の残り時間を確認できます。

ConnectOnRequestedInterfaceOnly

キー : Netbt\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : 要求のあったアダプタでのみ NetBT 接続を可能にするかどうかを決定します。マルチホーム コンピュータ上のリダイレクタがほかのコンピュータ名を呼び出すと、バインド先のすべての NetBT トランスポート (プロトコルとアダプタの組み合わせ) に対して呼び出しが行われます。各トランスポートは、個別にターゲット名への到達を試行します。このパラメータを使うと、各トランスポートが自分のアダプタを経由して到達できるリモート コンピュータにのみ接続するように制限できるので、クロスオーバー トラフィックを防止できます。詳細については、前の「マルチホーム コンピュータに対する NetBIOS 名の登録と解決」を参照してください。

EnableDns

キー : Netbt\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 1 (TRUE)

説明 : このパラメータが 1 (TRUE) に設定されている場合は、WINS、ブロードキャスト、および Lmhosts ファイルで解決できない名前を NetBT が DNS サーバーに照会します。

EnableProxyRegCheck

キー : Netbt\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータを 1 に設定すると、ブロードキャストで登録しようとした名前が既に WINS に登録されているか、または同じ名前がプロキシのローカル名前キャッシュに含まれており、異なる IP アドレスが関連付けている場合にプロキシ ネーム サーバーが否定応答を返すようになります。これにより、WINS に名前のマッピングがある限り、システムのアドレスが変更されないようになります。既定では、この機能は無効になっています。

InitialRefreshT.O.

キー : Netbt\Parameters

値の種類 : REG_DWORD - ミリ秒単位の時間

有効範囲 : 960,000 ~ 0xFFFFFFF

既定値 : 960,000 (16 分)

説明 : このパラメータでは、NetBT が名前の登録中に使用する初期更新タイムアウトを指定します。NetBT は、名前を最初に登録するときに、この値の 8 分の 1 の時間間隔で WINS サーバーへの接続を試行します。登録完了の応答があれば、その応答に含まれている更新間隔が適用されます。

LmhostsTimeout

キー : Netbt\Parameters

値の種類 : REG_DWORD - ミリ秒単位の時間

有効範囲 : 1,000 ~ 0xFFFFFFFF

既定値 : 6,000 (6 秒)

説明 : このパラメータでは、Lmhosts および DNS に対する名前照会を NetBT が送信するときのタイムアウト値を指定します。このタイムアウト値がタイマの粒度になるので、実際のタイムアウトはこの値の 2 倍になる可能性があります。

MaxConnBackLog

キー : Netbt\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 2 ~ 0x9c40 (10 進値では 1 ~ 40,000)

既定値 : 1,000

説明 : NetBT が割り当てる接続ブロックの最大数を決定します。詳細については、BackLogIncrement を参照してください。

MaxPreloadEntries

キー : Netbt\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 0x3E8 ~ 0x7D0 (10 進値で 1,000 ~ 2,000)

既定値 : 1,000 (10 進)

説明 : Lmhosts ファイルからプリロードするエントリの最大数を決定します。Lmhosts ファイル内では、キャッシュにプリロードするエントリに #PRE タグが付与されます。

MaxDgramBuffering

キー : Netbt\Parameters

値の種類 : REG_DWORD - バイト数

有効範囲 : 0x20,000 ~ 0xFFFFFFFF

既定値 : 0x20,000 (128 KB)

説明 : このパラメータでは、未解決のデータグラム送信用に NetBT が動的に割り当てるメモリの最大量を指定します。この上限に達すると、それ以降の送信はリソース不足のため失敗します。

MinimumRefreshSleepTime

キー : Netbt\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 21,600,000 ~ 4,294,967,295

既定値 : 21,600,000 ミリ秒 (6 時間)

説明 : このパラメータでは、コンピュータがスタンバイ モードまたは休止状態になっている間、TTL の 2 分の 1 が 6 時間より短くなった場合に WakeupTimer の TTL をリセットするように設定します。

MinimumFreeLowerConnections

キー : Netbt\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 20 ~ 500

既定値 : 50

説明 : このパラメータでは、ブート直後のシステムに着信接続受け付け用の空きハンドルを何個用意するかを指定します。これらのハンドルは、サービス提供中のアクティブな接続とは別に割り当てられます。コンピュータが定常状態になると、空きハンドルの数は使用中のハンドルの値の 1/2 に増やされます。レジストリ内で指定しない限り、空きハンドル数が 50 未満になることはありません。

NameServerPort

キー : Netbt\Parameters

値の種類 : REG_DWORD - UDP ポート番号

有効範囲 : 0 ~ 0xFFFF

既定値 : 0x89

説明 : このパラメータでは、名前照会や名前登録など、名前サービス関係のパケットを NetBT から WINS に送信するときに使用する宛先ポート番号を決定します。Microsoft WINS Server は、ポート 0x89 (10 進数では 138) をリッスンに使用します。サードパーティ製の NetBIOS ネーム サーバーでは、異なるポートをリッスンに使用することがあります。

NameSrvQueryCount

キー : Netbt\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 0 ~ 0xFFFF

既定値 : 3

説明 : NetBT が WINS サーバーに特定の名前を照会するときに応答がなければ、その照会を何回まで再送信するかを指定します。

NameSrvQueryTimeout

キー : Netbt\Parameters

値の種類 : REG_DWORD - ミリ秒単位の時間

有効範囲 : 100 ~ 0xFFFFFFFF

既定値 : 1500 (1.5 秒)

説明 : 特定の名前の照会を WINS に繰り返し送信する場合の間隔を指定します。

NodeType

キー : Netbt\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 1、2、4、8 (b ノード、p ノード、 m ノード、 h ノード)

既定値 : 1 または 8 (WINS サーバーの構成に依存)

説明 : このパラメータでは、NetBT が名前の登録と解決に使用する方法を決定します。b ノード システムでは、ブロードキャストを使用します。p ノード システムでは、ネーム サーバー (WINS) への ポイントツーポイント 名前照会だけを使用します。m ノード システムでは、最初にブロードキャストを使用し、その後、ネーム サーバーに照会します。h ノード システムでは、最初にネーム サーバーに照会し、その後、ブロードキャストを使用します。Lmhosts および DNS を通じた解決にも、これらの方法が反映されます。このキーが存在する場合は、このキーの値が DhcpNodeType キーより優先して適用されます。どちらのキーも存在しない場合、クライアントに対して WINS サーバーが構成されていなければ、b ノードが既定で使用されます。少なくとも 1 つの WINS サーバーが構成されていれば、h ノードが既定で使用されます。

NoNameReleaseOnDemand

キー : Netbt\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータでは、コンピュータがネットワークから名前解放要求を受信したときに自分の NetBIOS 名を解放するかどうかを決定します。これは、名前解放を悪用した攻撃からコンピュータを保護できるようにするために追加されたパラメータです。

RandomAdapter

キー : Netbt\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : マルチホーム ホストにのみ適用されるパラメータです。1 (TRUE) に設定すると、バインドされているすべてのインターフェイスからの名前照会応答に挿入する IP アドレスを NetBT がランダムに選択するようになります。通常、この応答には、照会が到着したインターフェイスのアドレスが含まれます。この機能は、同じネットワーク上に 2 つのインターフェイスを持つサーバーによる負荷分散に使用されます。

RefreshOpCode

キー : Netbt\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 8、9

既定値 : 8

説明 : NetBT に名前更新パケット内の特定の opcode フィールドを使用させます。NetBT プロトコルの仕様には、opcode フィールドに関してあいまいな点があります。Microsoft の実装では既定値として 8 を使用していますが、Ungermann-Bass による実装などでは値 9 を使用していることがあります。2 つの実装を相互運用するには、同じ opcode フィールドを使用する必要があります。

ScopeId

Key: Netbt\Parameters

値の種類 : REG_SZ - 文字列

有効範囲 : ドットで区切られた 2 つの部分またはアスタリスク (*) からなる任意の有効な DNS ドメイン名

既定値 : なし

説明 : このパラメータでは、ノードの NetBIOS 名を指定します。ピリオドで始まる値は指定できません。このパラメータに有効な値を設定すると、その値が同じ名前の DHCP パラメータの値より優先して適用されます。空白の値 (空の文字列) は無視されます。このパラメータを "*" に設定すると、スコープが NULL になり、DHCP パラメータが無効になります。

SessionKeepAlive

キー : Netbt\Parameters

値の種類 : REG_DWORD - ミリ秒単位の時間

有効範囲 : 60,000 ~ 0xFFFFFFFF

既定値 : 3,600,000 (1 時間)

説明 : このパラメータでは、セッション上の Keep-alive 転送の時間間隔を決定します。このパラメータを 0xFFFFFFF に設定すると、Keep-alive が無効になります。

SingleResponse

キー : Netbt\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : マルチホーム ホストにのみ適用されるパラメータです。1 (TRUE) に設定すると、NetBT は、バインドされているインターフェイスのいずれか 1 つのアドレスだけを名前照会応答に含めます。既定では、すべてのバインドされているインターフェイスのアドレスが含まれます。

Size/Small/Medium/Large

キー : Netbt\Parameters

値の種類 : REG_DWORD

有効範囲 : 1, 2, 3 (小、中、大)

既定値 : 1 (小)

説明 : ローカル名とリモート名を保存するための名前テーブルのサイズを決定します。一般には、設定値 1 (小) で十分です。システムがプロキシ ネーム サーバーとして機能している場合は、名前キャッシュ ハッシュ テーブルのサイズを拡張するために、このパラメータが自動的に 3 (大) に設定されます。各設定値におけるハッシュ テーブル バケットのサイズは、次のとおりです。

  • 小 : 16

  • 中 : 128

  • 大 : 256

SMBDeviceEnabled

キー : Netbt\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 1 (TRUE)

説明 : Windows 2000 では、SMB デバイスと呼ばれる新しいネットワーク トランスポートがサポートされており、既定で有効になります。このパラメータを使うと、トラブルシューティング時に SMB デバイスを無効にできます。詳細については、前の「NetBT インターネット/DNS 強化と SMB デバイス」を参照してください。

TryAllNameServers

キー : Netbt\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータでは、構成済みサーバーのリストに含まれているいずれかの IP アドレスへの NetBIOS セッション セットアップ要求が失敗したときに、クライアントがリスト内のほかのネーム サーバーに対して照会を続行するかどうかを制御します。このパラメータを 1 に設定すると、リスト内のすべての WINS サーバーに対する照会とすべての IP アドレスへの接続が試行されます。

TryAllIPAddrs

キー : Netbt\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 1 (TRUE)

説明 : WINS サーバーが名前照会に対して IP アドレスのリストを返すと、クライアントに所属しているインターフェイスと同じサブネット上に存在するかどうかに基づいて、それらのIP アドレスが並べ替えられます。このパラメータの設定により、クライアントの動作は、リスト内の IP アドレスに ping を送信して、最初に応答があったアドレスへの接続を試行するか、または、並べ替えられたリスト内の最初の IP アドレスへの接続を試行し、接続できなければその場で照会が失敗したものと判断するかのいずれかになります。既定では、クライアントはリスト内の各アドレスに ping を送信し、最初に応答のあったアドレスへの接続を試行します。

UseDnsOnlyForNameResolutions

キー : Netbt\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータでは、すべての NetBIOS 名の照会を無効にするかどうかを指定します。NetBIOS 名の照会を無効にしても、NetBIOS 名の登録と更新は引き続き行われ、NetBIOS セッションも可能です。インターフェイス上の NetBIOS を完全に無効にする方法については、NetbiosOptions パラメータを参照してください。

WinsDownTimeout

キー : Netbt\Parameters

値の種類 : REG_DWORD - ミリ秒単位の時間

有効範囲 : 1,000 ~ 0xFFFFFFFF

既定値 : 15,000 (15 秒)

説明 : このパラメータでは、WINS サーバーへの接続に失敗したときに、NetBT がどれだけの時間待機してから WINS の使用を再試行するかを決定します。この待機時間は、主に、ラップトップのように、コンピュータから一時的に切断されたコンピュータが各 WINS 名登録や WINS 名照会のタイムアウトを待機しなくても起動プロセスを進行できるようにすることを目的としています。

接続 UI から構成できるパラメータ

ここでは、ネットワーク コントロール パネル ツール (NCPA) で設定できるパラメータを示します。通常は、これらの値を直接構成する必要はありません。

EnableLmhosts

キー : Netbt\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 1 (TRUE)

説明 : このパラメータが 1 (TRUE) に設定されている場合は、WINS またはブロードキャストで解決できない名前を NetBT が Lmhosts ファイルから検索します (ファイルが存在する場合)。既定では、Lmhosts ファイル データベース ディレクトリ (Tcpip\Parameters\DatabasePath で指定) は存在しないので、このパラメータを 1 に設定しても無視されます。この値は、NCPA の [TCP/IP 詳細設定] ダイアログ ボックスから書き込まれます。

EnableProxy

キー : Netbt\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータを 1 (TRUE) に設定すると、NetBT がバインドされているネットワークに対し、システムがプロキシ ネーム サーバーとして機能します。プロキシ ネーム サーバーは、WINS で解決した名前に対するブロードキャスト照会に応答します。プロキシ ネーム サーバーは、b ノード実装のネットワークが WINS に登録されているほかのサブネット上のサーバーに接続できるようにします。

NameServerList

キー : Netbt\Parameters\Interfaces\interface

値の種類 : REG_MULTI_SZ - スペースで区切られたドット形式の 10 進 IP アドレス (10.101.1.200 など)

有効範囲 : 有効な WINS サーバー IP アドレスの任意のリスト

既定値 : 空白 (アドレスなし)

説明 : このパラメータでは、コンピュータに対して構成されている WINS サーバーのリストの IP アドレスを指定します。このパラメータに有効な値を設定すると、その値が同じ名前の DHCP パラメータの値より優先して適用されます。Windows NT 4.0 で使用されていた NameServer パラメータおよび NameServerBackup は廃止されており、代わりにこのパラメータが追加されています。

NetbiosOptions

キー : Netbt\Parameters\Interfaces\interface

値の種類 : REG_DWORD - 数値

有効範囲 : 1、2

既定値 : 1

説明 : このパラメータでは、NetBIOS をインターフェイス別に有効にするかどうかを制御します。[スタート] メニューの [設定] をポイントし、[ネットワークとダイヤルアップ接続] をクリックします。[ローカルエリア接続] をマウスの右ボタンでクリックし、[プロパティ] をクリックします。[インターネットプロトコル (TCP/IP)] を選択して、[プロパティ] をクリックし、[詳細] をクリックします。[WINS] タブをクリックします。NetBIOS オプションには、[NetBIOS over TCP/IPを使用可能にする][NetBIOS over TCP/IPを使用不可にする] 、および既定の [DHCPサーバーのNetBios設定を使用する] があります。有効にすると値が 1 に設定され、無効にすると値が 2 に設定されます。このキーが存在しない場合は、DHCPNetbiosOptions キーが読み取られます。このキーが存在すれば、DHCPNetbiosOptions キーは無視されます。

構成できないパラメータ

ここでは、レジストリ エディタでは構成できないパラメータを示します。これらのパラメータは、TCP/IP コンポーネントによって作成され、内部的に使用されるものです。直接変更すると、コンポーネントが不安定になる可能性があります。ここでは、これらのパラメータをあくまで参考用に示しています。

DHCPNameServerList

キー : Netbt\Parameters\Interfaces\interface

値の種類 : REG_MULTI_SZ - スペースで区切られたドット形式の 10 進 IP アドレス (10.101.1.200 など)

有効範囲 : 有効な WINS サーバー IP アドレスの任意のリスト

既定値 : 空白 (アドレスなし)

説明 : このパラメータは、DHCP サービスによって提供される WINS サーバーのリストの IP アドレスを示します。Windows NT 4.0 で使用されていた DHCPNameServer パラメータおよび DHCPNameServerBackup は廃止されており、代わりにこのパラメータが追加されています。NameServerList が存在する場合、このパラメータは無視されます。詳細については、NameServerList を参照してください。

DHCPNetbiosOptions

キー : Netbt\Parameters\Interfaces\interface

値の種類 : REG_DWORD - 数値

有効範囲 : 1、2

既定値 : 1

説明 : このパラメータは、DHCP クライアント サービスによって書き込まれます。詳細については、NetbiosOptions を参照してください。

DhcpNodeType

キー : Netbt\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 1 ~ 8

既定値 : 1

説明 : このパラメータは、NetBT ノードの種類を示します。このパラメータは、DHCP クライアント サービスによって書き込まれます (サービスが有効になっている場合)。NodeType の値は、このパラメータより優先して適用されます。詳細については、NodeType を参照してください。

DhcpScopeId

キー : Netbt\Parameters

値の種類 : REG_SZ - 文字列

有効範囲 : microsoft.com のようにドットで区切られた名前文字列

既定値 : なし

説明 : このパラメータは、ノードの NetBIOS 名を示します。このパラメータは、DHCP クライアント サービスによって書き込まれます (サービスが有効になっている場合)。ピリオドで始まる値は指定できません。詳細については、ScopeId を参照してください。

NbProvider

キー : Netbt\Parameters

値の種類 : REG_SZ - 文字列

有効範囲 : _tcp

既定値 : _tcp

説明 : このパラメータは、RPC コンポーネントによって内部的に使用されます。既定値から変更しないでください。

TransportBindName

キー : Netbt\Parameters

値の種類 : REG_SZ - 文字列

有効範囲 : なし

既定値 : \Device\

説明 : 製品開発時に内部的に使用されるパラメータです。既定値から変更しないでください。

付録 C:Windows Sockets および DNS のレジストリ パラメータ

AFD のレジストリ パラメータ

afd.sys は、Windows Sockets アプリケーションのサポート用のカーネル モード ドライバです。メモリ容量に依存するパラメータの場合は、次に示すように、3 つの既定値のうち、システム内で検出されたメモリ容量に応じた値が適用されます。

  • 1 番目の既定値は、小容量 (19 MB 未満) のコンピュータに適用します。

  • 2 番目の既定値は、中容量のコンピュータ (Windows 2000 Professional では 32 MB 未満、Windows 2000 Server では 64 MB 未満) に適用します。

  • 3 番目の既定値は、大容量のコンピュータ (Windows 2000 Professional では 32 MB 以上、Windows 2000 Server では 64 MB 以上) に適用します。

たとえば、既定値が "0/2/10" と示されている場合、12.5 MB ~ 20 MB の RAM が搭載されているコンピュータに適用される既定値は 2 です。

ここで示すパラメータは、次のキーの下層に格納されます。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Afd\Parameters:

DefaultReceiveWindow

値の種類 : REG_DWORD

既定値 : 4096/8192/8192

説明 : フロー制御を適用する前に AFD が接続上でバッファに格納する受信バイトの数。アプリケーションによっては、この値を増やすと、パフォーマンスが若干向上することがあります。ただし、リソースの使用率が大きくなります。アプリケーションからこの値をソケット別に変更するには、SO_RCVBUF ソケット オプションを使用します。

DefaultSendWindow

値の種類 : REG_DWORD

既定値 : 4096/8192/8192

説明 : DefaultReceiveWindow パラメータに似ていますが、接続の送信側に適用される点が異なります。

DisableAddressSharing

値の種類 : REG_DWORD

既定値 : 0

範囲 : 0, 1

説明 : このパラメータを使うと、プロセス間のアドレス共有 (SO_REUSEADDR) を禁止して、プロセスがソケットをオープンしたときに、ほかのプロセスがそのソケットのデータを使用できないようにすることができます。新しいソケット オプションである SO_EXCLUSIVEADDRUSE をアプリケーションから使用した場合も同様の結果が得られますが、SO_EXCLUSIVEADDRUSE を認識しない古いアプリケーションについては、DisableAddressSharing パラメータを使うとセキュリティを確保できます。

DisableRawSecurity

値の種類 : REG_DWORD

既定値 : 0

範囲 : 0, 1

説明 : raw ソケットをオープンしようとするときに、管理者特権のチェックを無効にするかどうかを指定します。Windows 2000 トランスポートでは、TCP/IP と同様に、raw ソケットに対して独自のセキュリティを管理し、TDI_SERVICE_FORCE_ACCESS_CHECK が設定されるので、このパラメータは適用されません。TCP/IP の AllowUserRawAccess レジストリ パラメータを参照してください。

DynamicBacklogGrowthDelta

値の種類 : REG_DWORD

有効範囲 : 0 ~ 0xFFFFFFFF

既定値 : 0

説明 : 新しい接続を追加する必要があるときに作成する空き接続の数を制御します。この値を大きくしすぎると、空き接続の数が爆発的に増加する可能性があるので十分注意してください。Windows 2000 では、TCP スタック自体が SYN-ATTACK に対抗できるように強化されているので、通常は、AFD のこの機能を使用する必要はありません。

FastCopyReceiveThreshold

値の種類 : REG_DWORD

既定値 : 1024

説明 : アプリケーションで受信に使用するバッファが Winsock によってバッファに格納されるパケットより小さい場合に AFD が行う処理には、パケットの別コピーを作成して、データをアプリケーション バッファに直接コピーする方法 (ロックされているアプリケーション バッファは直接アクセスできないので、これは 2 段階のコピー処理になります) か、またはアプリケーション バッファのロックとマッピングを同時に実行してデータを一度にコピーする方法があります。このパラメータの値は、データのコピーに必要となる余分なコード実行と、I/O サブシステムおよびメモリ マネージャでの余分なコード実行の間のバランスを表します。テストの結果、全体的なパフォーマンスが最も高くなる値が既定値として選定されています。一般には、この値を変更することはお勧めできません。

FastSendDatagramThreshold

値の種類 : REG_DWORD

既定値 : 1024

説明 : このパラメータの値より小さいサイズのデータグラムは、高速 I/O を通過するか、または送信バッファに格納されます。このパラメータの値より大きいサイズのデータグラムは、実際に送信されます。テストの結果、全体的なパフォーマンスが最も高くなる値が既定値として選定されています。高速 I/O では、I/O サブシステムをバイパスして、データをコピーします。メモリのマッピングと I/O サブシステムを経由した転送は行われません。高速 I/O は、小量のデータの場合に効果を発揮します。一般には、この値を変更することはお勧めできません。

IgnorePushBitOnReceives

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : 通常、Windows 2000 では、次のいずれかのイベントが発生したときに Windows Sockets の "Receive" を完了します。

  • PUSH ビットの設定されたデータが到着した場合

  • ユーザー recv バッファが満杯になった場合

  • データが到着してから 0.5 秒が経過した場合

このパラメータを 1 に設定すると、Afd.sys では、どの着信パケットも PUSH ビットが設定されているものとして扱われます。ただし、クライアント TCP/IP でデータのプッシュが適切に行われない場合の回避策としてのみ、このパラメータを使用してください。

IrpStackSize

値の種類 : REG_DWORD

有効範囲 : 1・55

既定値 : 4

説明 : 既定で AFD に使用される IRP スタック位置のカウント。この値を変更することはお勧めできません。

LargeBufferSize

値の種類 : REG_DWORD

既定値 : PAGE_SIZE (i386 では 4096 バイト、Alpha では 8192 バイト)

説明 : AFD に使用されるラージ バッファのサイズ (バイト数)。値を小さくするとメモリ消費が減り、値を大きくするとパフォーマンスが向上します。

LargeBufferListDepth

値の種類 : REG_DWORD

既定値 : 0/2/10

説明 : ラージ バッファのルックアサイド リストの深さ。

MaxActiveTransmitFileCount

値の種類 : REG_DWORD

有効範囲 : 0 ~ 0xffff (サーバー) または 2 (ワークステーション)

既定値 : 0 (サーバー) または 2 (ワークステーション)

説明 : 未解決の同時 TransmitFile 要求の最大数を構成できます。0 に設定すると、システム リソース以外に制限がなくなります。Windows 2000 Professional では、このパラメータを構成できません。

MaxFastTransmit

値の種類 : REG_DWORD

有効範囲 : 0 ~ 0xffffffff

既定値 : 64 KB

説明 : このパラメータでは、高速パス上の TransmitFile 要求で転送されるデータの最大量を制御します。高速 I/O では、I/O サブシステムをバイパスして、データをコピーします。メモリのマッピングと I/O サブシステムを経由した転送は行われません。高速 I/O は、小量のデータの場合に効果を発揮します。一般には、この値を変更することはお勧めできません。

MaxFastCopyTransmit

値の種類 : REG_DWORD

有効範囲 : 0 ~ 0xFFFFFFFF

既定値 : 128

説明 : このパラメータでは、高速パス上でキャッシュ メモリの代わりにコピーを使用するデータの最大サイズを制御します。高速 I/O では、I/O サブシステムをバイパスして、データをコピーします。メモリのマッピングと I/O サブシステムを経由した転送は行われません。高速 I/O は、小量のデータの場合に効果を発揮します。一般には、この値を変更することはお勧めできません。

MediumBufferSize

値の種類 : REG_DWORD

既定値 : 1504

説明 : AFD に使用されるミディアム バッファのサイズ (バイト数)。

MediumBufferListDepth

値の種類 : REG_DWORD

既定値 : 4/8/24

説明 : ミディアム バッファのルックアサイド リストの深さ。

OverheadChargeGranularity

値の種類 : REG_DWORD

既定値 : 1 ページ

有効範囲 : 2 の累乗

説明 : このパラメータでは、オーバーヘッドを実際に発生させる増分を決定します。既定では 1 ページの増分になります。このパラメータは、システムをメモリ不足にしようとする攻撃アプリケーションに適切にオーバーヘッドを与えて、囲い込むことを目的としています。

PriorityBoost

値の種類 : REG_DWORD

既定値 : 2

有効範囲 : 0・6

説明 : I/O を完了したスレッドに対して AFD が与える優先度。マルチスレッド アプリケーションのいくつかのスレッドでリソース不足が発生する場合は、この値を減らすと問題を解決できることがあります。

SmallBufferListDepth

値の種類 : REG_DWORD

既定値 : 8/16/32

説明 : スモール バッファのルックアサイド リストの深さ。

SmallBufferSize

値の種類 : REG_DWORD

既定値 : 128

説明 : AFD に使用されるスモール バッファのサイズ (バイト数)。

StandardAddressLength

値の種類 : REG_DWORD

既定値 : 22

説明 : コンピュータで使用する典型的な TDI アドレスのサイズ。TP4 のように、使用アドレスが非常に長いトランスポート プロトコルを使用している場合は、この値を増やすとパフォーマンスが若干向上します。

TransmitIoLength

値の種類 : REG_DWORD

既定値 : PAGE_SIZE/PAGE_SIZE*2/65536

説明 : TransmitFile() で実行する I/O (読み取りおよび送信) の既定サイズ。Windows 2000 Professional では、既定 I/O サイズはちょうど 1 ページになります。

TransmitWorker

値の種類 : REG_DWORD

既定値 : 0x10

有効範囲 : 0x10、0x20

説明 : このパラメータでは、Afd.sys がシステム スレッドをどのように使用するかを制御します。このパラメータを 0x10 に設定すると、AFD は、長い TransmitFile 要求 (SendPacketLength の 2 倍相当より長いデータ) があったときの I/O 実行にシステム スレッドを使用します。0x20 に設定すると、AFD は、カーネル モード APC を I/O に使用し、すべての処理を同じスレッドのコンテキストで実行します。このパラメータは、Windows 2000 で追加されたものです。長い TransmitFile 要求に含まれるコンテキスト スイッチを減らすことでパフォーマンスを向上できます。

動的 DNS の登録に関するパラメータ

ここでは、動的 DNSの登録クライアントの動作制御用パラメータを示します。パラメータがレジストリ内に存在しない場合は、既定値が適用されます。

DNSQueryTimeouts

キー : Tcpip\Parameters

値の種類 : REG_MULTI_SZ - 0 で終わるタイムアウトのリスト

有効範囲 : 有効な数値のリスト

既定値 : 1 2 2 4 8 0 (数を入力するたびに Return キーを押し、最後に 0 を入力)

説明 : このパラメータを使うと、DNS クライアントが使用する DNS 照会タイムアウトを変更できます。管理の行き届いた非インターネット環境や低遅延環境では、照会が失敗したとみなすまでの時間を減らすことができます。

DefaultRegistrationTTL

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 秒数

既定値 : 0x4B0 (10 進値では 1200 秒、つまり 20 分)

有効範囲 : 0 ~ 0xFFFFFFFF

説明 :このパラメータを使うと、動的 DNS 登録とともに送信する TTL 値を制御できます。

EnableAdapterDomainNameRegistration

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータを使うと、特定のアダプタのドメイン名情報の DNS 動的更新登録を有効にできます。このパラメータは、アダプタのドメイン名の下層にアダプタ アドレスを登録する必要があるときに役立ちます。このキーを TRUE に設定し DisableDynamicUpdate を FALSE に設定すると、指定したアダプタのアドレスが特定のアダプタのドメイン名の下層とシステムのプライマリ ドメイン名の下層に登録されます。

DisableDynamicUpdate

キー : Tcpip\Parameters、Tcpip\Parameters\Interfaces\interface

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE、動的 DNS 有効)

説明 : このパラメータを使うと、DNS 動的更新登録を完全に無効にできます。このパラメータは、レジストリ キーの位置によって、グローバルに設定することも、インターフェイス別に設定することもできます。Tcpip\Parameters レベルの値を 1 に設定すると、システム全体に対して動的更新が無効になります。Tcpip\Parameters レベルの値を 0 に設定すると、アダプタ別に動的更新を無効にできます。

DisableReplaceAddressesInConflicts

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータでは、アドレス登録の競合時に最もタイミングの遅い書き込みを優先する規則を無効にするかどうかを制御します。既定では、DNS サーバー上の現在のレコードのうち、あるコンピュータが以前に所有したと判断されないレコードをそのコンピュータが置換することはありません。

DisableReverseAddressRegistrations

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE、PTR レコードの登録有効)

説明 : このパラメータを使うと、DNS 動的更新反転アドレス (PTR) レコードの登録を無効にできます。このコンピュータの構成に使用されている DHCP サーバーが Windows 2000 Server であれば、その DHCP サーバーは DNS 動的更新プロトコルで PTR レコードを登録することが可能です。DHCP サーバーで DNS 動的更新 PTR を登録できない場合に、PTR レコードが DNS 動的更新プロトコルで登録されないようにするには、このパラメータを 1 に設定します。

UpdateSecurityLevel

キー : Tcpip\Parameters

値の種類 : REG_DWORD - フラグ

既定値 : 0

有効範囲 : 0,0x00000010、0x00000020、0x00000100

説明 : このパラメータを使うと、DNS 動的更新に適用するセキュリティを制御できます。既定では 0 に設定され、セキュリティで保護されていない更新が試行されます。更新が拒否されると、Windows 2000 のセキュリティで保護された動的更新が試行されます。有効な値は、次のとおりです。

  • 0x00000000 - 既定値、セキュリティで保護されていない更新

  • 0x00000010 - セキュリティ オフ

  • 0x00000100 - セキュリティで保護された動的更新のみ有効

DNS リゾルバ キャッシュ サービスのレジストリ パラメータ

Windows 2000 には、DNS リゾルバ キャッシュ サービスが用意されています。このサービスは、DNS サーバーが同じ情報の照会に繰り返し応答する必要がないように、DNR の応答をキャッシュします。このサービスを停止するには、MMC スナップインとして用意されているサービス コントロール マネージャを使います。このサービスに関するレジストリ パラメータは、\System\CurrentControlSet\Services\Dnscache\Parameters キーの下層に格納されます。

AdapterTimeoutCacheTime

値の種類 : REG_DWORD - 秒数

有効範囲 : 0 ~ 0xFFFFFFFF

既定値 : 300 (5 分)

説明 : マルチホーム コンピュータ上の特定のアダプタのどの DNS サーバーについても DNS 照会の試行が失敗した (タイムアウトになった) ときにアダプタを無効にする時間の長さ。たとえば、2 つのアダプタがあり、いずれかのネットワーク上の DNS サーバーに到達できない場合は、対応するアダプタがこの期間中、使用不可としてマークされます。プラグ アンド プレイ イベントやキャッシュ タイムアウトが発生すると、リゾルバがこのインターフェイスを試行し、必要に応じて無効のマークを付けます。

CacheHashTableSize

値の種類 : REG_DWORD - 数値

既定値 : 0xD3 (10 進値では 211)

有効範囲 : 0 より大きい任意の素数

説明 : このパラメータを使うと、DNS リゾルバ キャッシュ サービスで使用するハッシュ テーブルの最大行数を制御できます。通常は、この値を調整する必要はありません。

CacheHashTableBucketSize

値の種類 : REG_DWORD - 数値

既定値 : 0xa (10 進値では 10)

範囲 : 0 ~ 0x32 (10 進では 50)。

説明 : このパラメータを使うと、DNS リゾルバ キャッシュ サービスで使用するハッシュ テーブルの最大列数を制御できます。通常は、この値を調整する必要はありません。

DefaultRegistrationRefreshInterval

値の種類 : REG_DWORD - 秒単位の時間

既定値 : 0x15180 (10 進値では 86,400 秒、つまり 24 時間)

範囲 : 0 ~ 0xFFFFFFFF

説明 : このパラメータを使うと、動的 DNS の登録更新間隔を制御できます。

MaxCacheEntryTtlLimit

値の種類 : REG_DWORD - 秒単位の時間

既定値 : 0x15180 (10 進値では 86,400)

有効範囲 : 0 ~ 0xFFFFFFFF (レコードが古くなりすぎないように 1 日未満の値を推奨)

説明 : このパラメータを使うと、キャッシュ エントリの最大 Time-to-live (TTL) 値を制御できます。特定のレコードでこれより大きい値が指定されている場合、その値は無視され、このパラメータの値が適用されます。

MaxSOACacheEntryTtlLimit

値の種類 : REG_DWORD - 秒単位の時間

有効範囲 : 0 ~ 0xFFFFFFFF

既定値 : 120 (2 分)

説明 : リゾルバ キャッシュが任意の SOA レコードをキャッシュする秒数の最大値。DNS 照会から返された特定の SOA レコードにこれより長い TTL 値が含まれている場合、その値は無視され、このパラメータの値が適用されます。SOA レコードは、動的更新に不可欠です。DNS Start of Authority で必ず最新のデータを使用できるように、SOA レコードがキャッシュ内に維持される時間は短く制限されます。

NegativeCacheTime

値の種類 : REG_DWORD - 秒単位の時間

既定値 : 0x12c (10 進値では 300 秒、つまり 5 分)

有効範囲 : 0 ~ 0xFFFFFFFF (レコードが古くなりすぎないように 1 日未満の値を推奨)

説明 : このパラメータを使うと、否定レコードのキャッシュ時間を制御できます。

NegativeSOACacheTime

値の種類 : REG_DWORD - 秒単位の時間

既定値 : 0x78 (10 進値では 120 秒、つまり 2 分)

有効範囲 : 0 ~ 0xFFFFFFFF (5 分未満の値を推奨)

説明 : このパラメータを使うと、否定 Start of Authority (SOA) レコードのキャッシュ時間を制御できます。失敗した DNS 登録は、5 分後および 10 分後に再試行されます。したがって、このパラメータを 5 分以上に設定すると、サーバーが利用可能になった場合でも、サーバーではなくキャッシュから再試行に対して否定応答が返されてしまいます。

NetFailureErrorPopupLimit

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

説明 : このパラメータでは、構成済み DNS サーバーに対して照会を繰り返し試行してもサーバーに照会できない (到達できない) 場合に、そのことを UI ポップアップで通知するかどうかを制御します。

NetFailureCacheTime

値の種類 : REG_DWORD - 秒単位の時間

既定値 : 0x1e (10 進値では 30)

有効範囲 : 0 ~ 0xFFFFFFFF (5 分未満の値を推奨)

説明 : このパラメータでは、一般的なネットワーク障害のキャッシュ時間を制御します。すべての既知の DNS サーバーに対してタイムアウト エラーが発生していることが検出されたときに、リゾルバからの照会を一定期間禁止します。これにより、ネットワークが応答しない場合に、タイムアウトになるまで待機する必要がなくなります。

名前解決に関するパラメータ

ここでは、ドメイン ネーム リゾルバ サービスに適用するパラメータを示します。

AllowUnqualifiedQuery

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0

説明 : このパラメータでは、後ろにドット (.) が付いただけのホスト名 (非修飾名) をドメイン ネーム リゾルバからドメイン ネーム サーバーに照会するかどうかを制御します。たとえば、mydomain.com というコンピュータから target に対して ping を送信する場合、既定では、target.mydomain.com という名前だけが DNS に対して照会されます。このパラメータを 1 に設定すると、target も照会されるようになります。

DisjointNameSpace

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 1

説明 : このパラメータでは、DNR に対して、各インターフェイスをディスジョイント名前空間として扱うように指示します。マルチホーム コンピュータでは、1 つのインターフェイスに対して構成されている 1 つ以上の DNS サーバーに照会を送信すると、名前エラーが発生することがあります。このパラメータを使うと、ほかのインターフェイスに構成されている DNS サーバーに対しても照会を行った後で結果を返すようにリゾルバに指示できます。

PrioritizeRecordData

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 1

説明 : このパラメータでは、マルチホーム ホストの照会に対して返されたアドレスをドメイン ネーム リゾルバが並べ替えるかどうかを制御します。既定では、DNR は、照会元のコンピュータのインターフェイスのいずれかと同じサブネット上に存在するアドレスをリストの先頭に並べ替えます。これは、共通サブネット (非ルーティング) IP アドレスを優先するために行われます。

QueryIpMatching

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0

説明 : このパラメータでは、照会先の DNS サーバーの IP アドレスを DNS 応答の送信元の IP アドレスと照合するかどうかを制御します。これは、目的とする DNS サーバーとは異なるコンピュータからのランダムな照会応答によってリゾルバが攻撃されるのを防止するための原始的なセキュリティ対策です。

UseDomainNameDevolution

キー : Tcpip\Parameters

値の種類 : REG_DWORD - バイナリ

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 1 (TRUE)

説明 : このパラメータでは、非修飾 DNS 照会に対するドメイン名の転移を有効にするかどうかを制御します。転移では、最初にクライアントのドメイン サフィックスをホスト名に付加してホストを検索し、その後で、完全な文字列を照会します。照会が失敗すると、ラベルを 1 つずつ取り除いて、照会を再送信します。たとえば、mycomputer.support.microsoft.com というコンピュータのユーザーまたはアプリケーションが target というホストに到達しようとする場合、DNR は、既定では、target.support.microsoft.comtarget.microsoft.com を試行し、さらに AllowUnqualifiedQuery パラメータが 1 に設定されていれば、target も試行します。

付録 D: 攻撃に対する TCP/IP の応答のチューニング

TCP/IP セキュリティ設定値

これまでに示したパラメータのほかに、システムがより効果的に攻撃に対処できるようにするためのパラメータが用意されています。ここで示す推奨事項は、システムを攻撃から完全に保護することを目的とするものではなく、あくまで攻撃に対する TCP/IP スタックの応答のチューニングを主眼としています。これらのキーをチューニングしても、システムへの攻撃に利用される可能性のあるそのほかのコンポーネントは制御できません。管理者は、ほかのレジストリ パラメータを変更する場合と同様に、これらのセキュリティ設定値がシステムの既定の機能にどのような影響を及ぼすか、また、それらを変更することが実際の環境で適切となるかどうかを十分に理解する必要があります。

SynAttackProtect

キー : Tcpip\Parameters

値の種類 : REG_DWORD

有効範囲 : 0、1、2

0 - synattack 保護なし。

1 - TcpMaxHalfOpen および TcpMaxHalfOpenRetried の設定値に一致すれば、再転送の試行回数を減らし、RCE ルート (ルート キャッシュ エントリ) の作成を遅延します。
2 - synattack 保護なしで、かつ、Winsock への指示を遅延します。

メモ システムが攻撃にさらされていることを検出すると、スケーラブル ウィンドウ (RFC 1323) およびアダプタ別構成の TCP パラメータ (初期 RTT、ウィンドウ サイズ) は、どのソケットについても有効ではなくなります。これは、保護が機能していると、SYN-ACK の送信前にルート キャッシュ エントリが照会されず、また、接続のこの段階では Winsock オプションが利用できなくなるためです。

既定値 : 0 (FALSE)

推奨値 : 2

説明 : Synattack 保護では、SYN-ACKS の再転送回数を減らすことで、リソースが割り当てられた状態になる時間を短縮します。ルート キャッシュ エントリ リソースの割り当ては、接続確立まで遅延されます。synattackprotect = 2 の場合は、3 方向ハンドシェイクが完了するまで AFD への接続指示が遅延されます。なお、保護メカニズムによる対処が行われるのは、TcpMaxHalfOpen および TcpMaxHalfOpenRetried の設定値を超過した場合だけです。

TcpMaxHalfOpen

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 100 ~ 0xFFFF

既定値 : 100 (Professional、Server)、500 (Advanced Server)

説明 : このパラメータでは、SYN-RCVD 状態の接続の数がいくつになったときに、SYN-ATTACK 保護の適用を開始するかを制御します。SynAttackProtect が 1 に設定されている場合は、保護対象のポート上の AFD リッスン バックログよりも、このパラメータの値を低く設定する必要があります (バックログのパラメータについては、「付録 C」参照)。詳細については、SynAttackProtect を参照してください。

TcpMaxHalfOpenRetried

キー : Tcpip\Parameters

値の種類 : REG_DWORD - 数値

有効範囲 : 80 ~ 0xFFFF

既定値 : 80 (Professional、Server)、400 (Advanced Server)

説明 : このパラメータでは、SYN が少なくとも 1 回再転送されている SYN-RCVD 状態の接続の数がいくつになったときに、SYN-ATTACK 保護の適用を開始するかを制御します。詳細については、SynAttackProtect を参照してください。

EnablePMTUDiscovery

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 1 (TRUE)

推奨値 : 0

説明 : このパラメータが 1 (TRUE) に設定されいる場合は、TCP がリモート ホストへのパスの最大転送ユニット (MTU または 最大パケット サイズ) の発見を試行します。TCP では、パス MTU を発見して TCP セグメントをそのサイズに制限することで、ネットワークを異なる MTU に接続するパスに沿ったルーターで断片化が行われるのを防ぐことができます。断片化は、TCP のスループットに悪影響を与え、ネットワークの輻輳を招きます。このパラメータを 0 に設定すると、ローカル サブネット上に存在しないホストへのすべての接続に対して、MTU が 576 バイトに設定されます。

NoNameReleaseOnDemand

キー : Netbt\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 0 (FALSE)

推奨値 : 1

説明 : このパラメータでは、コンピュータがネットワークから名前解放要求を受信したときに自分の NetBIOS 名を解放するかどうかを決定します。これは、名前解放を悪用した攻撃からコンピュータを保護できるようにするために追加されたパラメータです。

EnableDeadGWDetect

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ブール値

有効範囲 : 0 または 1 (FALSE または TRUE)

既定値 : 1 (TRUE)

推奨値 : 0

説明 : このパラメータが 1 に設定されている場合は、TCP がデッド ゲートウェイの検出を実行できます。この機能を有効にすると、複数の接続で問題が発生している場合に TCP が IP に対してバックアップ ゲートウェイへの切り替えを要求することがあります。バックアップ ゲートウェイは、ネットワーク コントロール パネルの [TCP/IP設定] ダイアログの [詳細] タブで設定できます。詳細については、前の「デッド ゲートウェイの検出」を参照してください。

KeepAliveTime

キー : Tcpip\Parameters

値の種類 : REG_DWORD - ミリ秒単位の時間

有効範囲 : 1 ~ 0xFFFFFFFF

既定値 : 7,200,000 (2 時間)

推奨値 : 300,000

説明 : このパラメータでは、TCP がアイドル状態の接続に Keep-alive パケットを送信して、その接続が維持されていることを確認する頻度を制御します。リモート システムが Keep-alive 転送に応答すれば、そのシステムがまだ到達可能で、機能しているものとみなされます。Keep-alive パケットは、既定では送信されません。この機能は、アプリケーションから接続に対して有効化されることがあります。

PerformRouterDiscovery

キー : Tcpip\Parameters\Interfaces\interface

値の種類 : REG_DWORD

有効範囲 : 0、1、2

0 - 無効

1 - 有効
2 - DHCP がルーター発見オプションを送信する場合のみ有効

既定値 : 2 (DHCP によって制御されるが、既定ではオフ)

推奨値 : 0

説明 : このパラメータでは、RFC 1256 で規定されているルーター発見を Windows 2000 でインターフェイス別に実行するかどうかを制御します。SolicitationAddressBcast も参照してください。

© 2000 Microsoft Corporation. All rights reserved.

本書に記載されている情報は、発行時点で議論されている問題点に関する Microsoft Corporation の最新の見解を示しています。Microsoft は変化する市場状況に対処しなければならないため、本書の内容を Microsoft の確約事項として解釈してはならず、Microsoft は発行日以降に提示された情報の精度についてはいかなるものであれ保証致しません。

本書は、情報の通知のみを目的としており、Microsoft は本書に記載されている情報について明示的にも暗黙的にも一切の保証を致しません。

Microsoft、Windows、Windows NT は米国 Microsoft Corporation の米国およびその他の国における登録商標または商標です。

その他、記載されている会社名および製品名は、各社の商標および登録商標です。

Microsoft Corporation ・One Microsoft Way ・Redmond, WA 98052-6399 ・USA

2000 年 2 月

1 仕様およびプログラミング情報は、『Windows 2000 Device Driver Kit (DDK)』に含まれています。

2 ほとんどの NIC には、メディア上のフレームにアドレス フィルタを適用しないモードがあります。このモードでは、アドレス フィルタを適用する代わりに、巡回冗長検査 (CRC) を経たすべてのフレームを渡します。この機能は、Microsoft ネットワーク モニタなど、一部のプロトコル分析ソフトウェアで使用されます。

3 従来、TOS ビットと呼ばれていたビットは、DiffServ で定義されている 6 つのビットに置き換えられているため、Winsock では TOS ビットの設定がサポートされていません。DisableUserTOSSetting レジストリ パラメータ (「付録 A」) を変更しない限り、IP TOS に対する要求はすべて GQoS API を通じて行われます。

4 レジストリ パラメータ TcpMaxDataRetransmissions または TcpMaxConnectRetransmissions に [1] を追加すると、再転送タイムアウトの合計期間がおよそ 2 倍になります。タイムアウトを特に長くする必要がない限り、これらのパラメータの値は少しづつ増やすようにしてください。

5 Windows NT/Windows 2000 TCP では、最初に 1 つの TCP セグメントではなく、2 つの TCP セグメントを使用します。これにより、ターゲット コンピュータへの最初の送信時に遅延 ACK タイマがタイムアウトになるまで待機する必要がなく、一部のアプリケーションのパフォーマンスが向上します。

6 リダイレクタのレジストリ パラメータについては、Microsoft Windows NT または Windows 2000 のリソース キットか、Microsoft Knowledge Base を参照してください。

7 Stevens, Richard. TCP/IP Illustrated, Volume 1:The Protocols. Reading, MA: Addison-Wesley Publishing Co., 1993.

8 この 2 つの仕様は、どちらも、Microsoft インターネット サイト www.microsoft.com から入手できます。

9 IP の自動構成は、IPAutoconfigurationEnabled レジストリ キーを使って無効にできます。適用されるサブネットとサブネット マスクを制御するには、レジストリ キー IPAutoconfigurationSubnet および IPAutoconfigurationMask を使います。このキーについては、「付録 A」を参照してください。

10 "draft-ietf-dhc-dhcp-dns-*.txt" を参照してください。

© 2009 Microsoft Corporation. All rights reserved. 使用条件 | 商標 | プライバシー
Page view tracker