「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
「Windowsネットワークの基礎知識、設定・トラブルシュート」3部作の第1部。
- イーサネット上でネットワーク基盤として機能するネットワーク サーバ。
- これらのネットワーク基盤として機能するネットワーク サーバの機能により、
などの自動化が図られ、ネットワーク、ネットワーク中の
リソース(ファイル サーバ等)の使い易さ・管理のし易さが向上する。
DHCPを使用する。
名前解決のためのサーバ †
現在のイーサネットではTCP/IPプロトコルが標準的に使われており、
ネットワーク上でコンピュータやネットワーク機器につけられた名前は、
IPアドレスに変換され通信が実行される。これを名前解決と言う。
DNSサーバ †
WINSサーバ †
- ルータを跨ぐ場合は、クライアントが存在するネットワーク内に中継機能を追加する必要がある。
名前解決のためのファイル(クライアント) †
ネットワーク資源管理のサーバ †
- ネットワーク リソースをグループ化するサーバについて纏める。
- ネットワーク リソースのグループ化の仕組みには、ワークグループとドメインがある。
ワークグループ環境 †
- NetBIOSのブラウジング機能を使用した、ネットワーク資源のグループ化の基本的な仕組み。
- ブラウジング機能
- 同一ネットワーク内の同一ワーク グループに属するホストの一覧を集中管理し、
ワーク グループ内のホストにこのホスト一覧を展開する機能。
- ブラウジング機能を提供するサーバは、ネットワーク中のホストから自動的に選定される。
ドメイン環境 †
DNSサーバ、ディレクトリ サービス、LDAPサーバ、KDCサーバの機能を有する
Active Directory(以下、ADと略す)のドメイン コントローラ(以下、DCと略す)
に管理された、より高度なネットワーク資源のグループ化の仕組み。
ネットワーク資源 †
ファイルサーバ †
プリンタサーバ †
アドレス †
IPアドレス †
概要 †
ここでは、
- IPアドレスと
- IPルーティング
- IPアドレス割り当てに関連するネットワーク構成
- ネットワーク アドレスとIPアドレスの割り当て
- 動的割り当て、静的割り当て
- MACアドレスとの関連
など、IPアドレスの基礎について説明する。
IPアドレスとルーティング †
- ブロードキャストで名前解決するようなネットワークでは、ネットワーク上に接続するノード数が増えてくると、
名前解決のためのブロードキャストによるトラフィックの負担が大きくなり、ネットワークが飽和し易くなる。
- これらの問題は、IPアドレスとルータを導入し、ネットワークを分割することで解決される。
- ルータは、必要なネットワークにだけパケットを送ったり、離れた場所にあるネットワーク同士を接続したりできるので、
トラフィックを軽減した状態で、分割されたネットワーク上のノード同士が通信できる。
予約済みIPアドレス †
予約済みのIPアドレスについて説明する。
これらのIPアドレスは、通常、ホストのIPアドレスとして利用できないので注意する。
- オール0(0.0.0.0)
BootPやDHCPなどを使って
TCP/IPの設定を行う際に、自分自身を表すためのアドレスとして使用するIPアドレス。
- APIPA用のLINKLOCALアドレス
- DHCPのAPIPA機能で使用される。
- 外部と接続されていないローカルな単一のネットワークだけで利用できるIPアドレスで、
「169.254.1.0/16~169.254.254.255/16」の範囲が予約されている。
- ローカル ループバック アドレス(127.xxx.xxx.xxx)
- 自分自身を指すIPアドレス。
- ローカル ループバック アドレスを使用した通信はNICを経由しないため、NICがないPCでも利用可能である。
同一マシン内のプロセス間通信などで利用できる。
- リミテッド ブロードキャスト(255.255.255.255)
- UDPで使用できる。
- ローカル ネットワークにいる、すべてのホストを対象とするOSI参照モデルの第3層のブロードキャストに使用するIPアドレス。
- また、OSI参照モデルの第2層のブロードキャストに使用するMACアドレスは、FF:FF:FF:FF:FF:FF である。
- ディレクティッド ブロードキャスト(ネットワーク アドレス + オール1)
- UDPで使用できる。
- 他のネットワークへ向けられたOSI参照モデルの第3層のブロードキャストに使用するIPアドレス。
- 対象のネットワークまでルータによってパケットが運ばれてから、ルータによってローカル ネットワークにブロードキャストされる。
- マルチキャスト アドレス(224.0.0.0~239.255.255.255)
- UDPで使用できる。
- マルチキャストに使用するIPアドレス。
- クラスDのアドレスがマルチキャスト アドレスとして予約されている。
- RFCにより規定されているマルチキャスト アドレス(グループ)を以下に示す。
# | マルチキャスト アドレス(グループ) | 用途 |
1 | 224.0.0.0 | 予約 |
2 | 224.0.0.1 | 同一サブネット上の全ノード |
3 | 224.0.0.2 | 同一サブネット上の全ルータ |
4 | 224.0.0.4 | ルーティング プロトコル | DVMRP |
5 | 224.0.0.5 | OSPF |
6 | 224.0.0.6 | OSPF version2 |
7 | 224.0.0.9 | RIP version2 |
IPアドレスの割当 †
プライベートIPアドレスとグローバルIPアドレス †
- プライベートIPアドレス
プライベートIPアドレスは各組織内だけで
自由に使うことが許可されたIPアドレスで、以下の範囲が利用できる。
# | クラス | クラスに対応するホスト アドレスの範囲 | - | プライベートIPアドレスの範囲 |
1 | クラスA | 0.0.0.0 | ~ | 127.255.255.255 | のうち | 10.0.0.0 | ~ | 10.255.255.255 |
2 | クラスB | 128.0.0.0 | 191.255.255.255 | 172.16.0.0 | 172.31.255.255 |
3 | クラスC | 192.0.0.0 | 223.255.255.255 | 192.168.0.0 | 192.168.255.255 |
- グローバルIPアドレス
- プライベートIPアドレスと重複しないIPアドレスの範囲を、公的な機関
(IANAおよびその依頼を受けた組織)によってプロバイダなどに割り当てられる。
- そのIPアドレスが重複しないようにプロバイダのユーザに付与される。
- グローバルIPアドレスの割り当てを、以下の例で説明する。
DHCPサーバによるIPアドレスの動的割り当て †
IPアドレスの割り当て方法には、
- 「静的割り当て」と「動的割り当て」がある。
- 動的割り当てをするには、DHCPサーバが必要になる。
- DHCPサーバはクライアントに動的にIPアドレスを割り当てるサーバ。
- ルータを跨ぐ場合は、クライアントが存在するネットワーク内に中継機能を追加する必要がある。
- IPアドレスの動的割り当ての仕組み
IPアドレスの割り当ての仕組みについて以下説明する。
- DHCPサーバ
- DHCPサーバは、UDPポート67番でIPアドレスの動的割り当て要求(ブロードキャスト)を受信し、
DHCPクライアントにIPアドレスを動的に割り当てるシステムである。
- DHCPクライアントは、UDPポート68番で応答(ユニキャスト)を受信する。
- DHCPリレー エージェント
- DHCPクライアントからDHCPサーバに送信されるIPアドレスの動的割り当て要求は、ローカル ネットワークにブロードキャストされる。
- このため、DHCPサーバが他のネットワークにある場合はDHCPサーバとの通信ができない。
- これを解決にするには、DHCPリレー エージェントをローカル ネットワークに導入し、
IPアドレスの動的割り当てのブロードキャストを中継、DHCPサーバでのIPアドレスの割り当てを代行する。
- IPアドレスを要求する際のシーケンス
- DHCPクライアントがDHCPプロトコルを使用してIPアドレスを要求する際のシーケンスを、以下に示す。
#ref(): File not found: "DHCP_protocol.png" at page "ネットワークの基礎編"
- DHCPサーバからの「肯定(OFFER)」コマンドの応答が複数ある場合、
DHCPクライアントは、適当な「肯定(OFFER)」コマンドを選択し、
そのDHCPサーバを使う旨を、「要求(REQUEST)コマンド」を使って返信する。
この仕組みはDHCPサーバの冗長化などにも利用されている。
- 代替構成
- DHCPを有効にしている場合、「代替構成」を設定できる。
- 代替の構成は、DHCP クライアントがDHCPサーバを発見できない場合に有効になる。
- 既定値は、[自動プライベートIPアドレス]で、この場合、APIPAのIPアドレスが付与される。
- 設定方法
「Windows 代替の構成」などでググる。
- DHCPサーバからDHCPクライアントにIPアドレスが割り当てられなかった場合に、
DHCPクライアントが自動的にLINKLOCALアドレスを割り当てる。
IPアドレスの静的割り当て †
「静的割り当て」は、クライアントに直接IPアドレスを指定する方法である。
ネットワーク アドレス †
- IPアドレスを構成するビット列のうち、
個々の組織が管理するネットワーク(サブネット)を識別するのに使われる部分。
- ネットワーク アドレスとIPアドレスの割り当てについて方法について説明する。
クラスフル アドレッシング(FLSM) †
- ネットワーク アドレスを決定する際に、
既定の「アドレス クラス」と「ネット マスク」(ナチュラル マスク)
を使用するアドレッシング方法を、「クラスフル アドレッシング」(FLSM)と言う。
- 「クラスフル アドレッシング」では、それぞれのネットワークに何台のホストを接続するかによって、どの「アドレス クラス」を使用するかを選択する。
- 「ネット マスク」(ナチュラル マスク)は「アドレス クラス」に対応したものを適用する。
- クラスD、クラスEというアドレスもあるが、これは通常のホストが使用するIPアドレスではない。
クラスDはマルチキャスト アドレス、クラスEは実験用アドレスに予約されている。
# | アドレス クラス | 先頭ビットのパターン | ネット マスク | ネットワーク アドレスの範囲 | ホスト アドレス長(ホスト台数) ホスト アドレス |
1 | クラスA | 0 | 255.0.0.0 | 0.0.0.0/8 ~127.0.0.0/8 | 24bit(約1677万台) 0.0.0.1~0.255.255.254 |
2 | クラスB | 10 | 255.255.0.0 | 128.0.0.0/16 ~191.255.0.0/16 | 16bit(約6万5000台) 0.0.0.1~0.0.255.254 |
3 | クラスC | 110 | 255.255.255.0 | 192.0.0.0/24 ~223.255.255.0/24 | 8bit(254台) 0.0.0.1~0.0.0.254 |
クラスレス アドレッシング(VLSM or CIDR) †
- 「クラスフル アドレッシング」の場合、ネットワークにネットワーク アドレスを割り当てる場合など、
実際に必要となるIPアドレスの数より多すぎたり少なすぎたりすることがある。
(実際にISPに割り当てるクラスBネットワークが不足する事態になった。)
- このため、ユーザ自身が自由に「ネットワーク アドレス」と「サブネット マスク」を決定する
「クラスレス アドレッシング」というアドレッシング方法が用意されている。
- このようなアドレッシング方法に「クラスレス アドレッシング」(VLSM or CIDR )がある。
- VLSM
組織内のネットワークの細かなホストビットの割り当てに使用される。
- CIDR
現在のインターネットでは、必要なグローバルIPアドレス数に合わせてサブネット マスクを決定する「CIDR」が使用されている。
- インターネット上のAS(自律システム)間のルーティング情報の集約による、
「ルーティング性能向上」、「ルーティング情報の管理の簡素化」のために使用される。
- AS(自律システム)とは、各組織、企業やプロバイダが保有・運用する、インターネットに繋がる
ひとつ(時に複数)のルーティング ポリシー配下にあるIPネットワークやルータの集合のことを言う。
MACアドレス †
- MACアドレスは、ネットワーク機器固有の物理アドレスであり、通常はNICのROMに固定値で割り当てられている。
- 48ビットの符号で、
- 上位24ビットはIEEEがベンダー(製造者)毎に管理・割り当てを行っており、
- 下位24ビットは各ベンダーが独自に重複しないように割り当てている。
- この仕組みにより、原則として、MACアドレスは重複しないようになっている。
ARPテーブルの作成 †
- ルーティング機能のないイーサネットなどのネットワークでは、内部的にはIPアドレスではなくMACアドレスを使って通信相手を特定している。
- そのため、イーサネットで通信するためには、IPアドレスだけでなく送信先のMACアドレスを知る必要がある。
- ただし、現在のWindowsネットワークではホストのアドレスにIPアドレスが使用される。
そこで必要になるのがIPアドレスとMACアドレスの対応表であり、これを作成するのが ARPプロトコルである。
- ARPプロトコルにより、
- お互いのホストはIPアドレスとMACアドレスの対応表(ARPテーブル)を作成できる。
- 以降、このARPテーブルを使用して通信する。
ARPテーブルの確認(arpコマンド) †
- 「arp -a」コマンドを使用してクライアント マシンのARPテーブルの内容を確認することができる。
# | アイテム | 説明 |
| Internet Address | IPアドレス |
| Physical Address | MACアドレス |
ネットワーク構成 †
ルータによるネットワークの分割・接続 †
- ルータは、以下を目的に導入される。
- リモート ネットワークとの接続
- ブロードキャスト トラフィック負荷増大の回避のためのネットワーク分割
- ルーティング情報の分割(or 集約)のためのネットワーク分割(or 集約)
- 一般的には、イーサネットの1ネットワーク セグメントを1ネットワーク アドレスに対応させる。
そして、それぞれのネットワーク セグメントをルータで接続して、全体的なネットワークを構築する。
ルータのインターフェイス †
ルータには、以下のインターフェイスがある。
- イーサネット用のインターフェイス
- シリアルポートのインターフェイス
ネットワークの分割・接続 †
- WANを経由してネットワークを接続する場合
以下の様な、DCE(データ回線終端装置)をシリアルポートのインターフェイスに接続する。
- モデム
- DSU(ISDNなどの加入者回線終端装置)
- TA(インターフェイス変換を行う通信機器)などの
スイッチ(スイッチング ハブ・L2スイッチ)によるイーサネットの構成 †
スイッチの目的 †
スイッチ(スイッチング ハブ・L2スイッチ)は、以下の目的で導入される。
- 基本的にはスイッチがツリー状になるように構成する。
- また、スイッチの接続では、絶対にループ構造を作ってはいけない
- カスケード
- 既存のスイッチのポートに別のスイッチのカスケード ポートを接続する方法である。
- 簡単な拡張方法であるが、信号の減衰や遅延があるため最大で何段のカスケード接続が可能かは
規格によって定められている(10BASE-Tで4段、100BASE-TXで2段など)。
- スタック
- 複数のスイッチを積み上げることによってポート数を増やす方法である。
- スタックは、カスケードよりも接続の段数が多くなっている。
VLAN †
VLANの構成 †
- ネットワークをL2スイッチの機能により、仮想的なネットワークを構成し端末をグループ化できる。これをVLANと呼ぶ。
- 「アクセス リンク」
- VLAN に対応したL2スイッチの「アクセス リンク」ポートでは、VLANの識別ために以下の情報を使用する。
- 「L2スイッチのポート」
ポート ベースVLAN(スタティックVLAN)
- 「送信元MACアドレス、IPサブネット アドレス、プロトコル タイプ」
ポリシー ベースVLAN(ダイナミックVLAN)
- このため、下図に示すようにL2スイッチを跨がないVLANでは、「暗黙的なタグ」(所謂「タグ無しパケット」)を使用できる。
- 「トランク リンク」
- VLAN に対応したL2スイッチの「トランク リンク」ポートでは、VLANの識別ために「明示的なタグ」(所謂「タグ付きパケット」)を使用する。
- 下図に示すようにL2スイッチを跨ぐVLANでは、「トランク リンク」を使用する必要がある。
- L2スイッチ上でイーサネット フレームにタグ付けすることを「フレーム タギング」と呼ぶ。
タギング方式には以下がある。
- ISL(Cisco独自の方式)と
- IEEE802.1q(標準化された方式)
- タグ付けされたフレームは、
- 宛先スイッチまでフォワーディングされ、
- 最終的には宛先スイッチ上でタグを削除する。
- このため、ノード間でタグを意識する必要はない。
VLANネットワークの接続 †
- 其々のVLANネットワークを接続する場合、ルータに接続する必要がある。
- また、ネットワークを跨いだVLANは構築できないので注意する。
- アクセス リンクの場合
- アクセス リンクの場合、VLANの数だけルータとスイッチにアクセス リンクを作成し、それぞれ個別のケーブルで接続する。
- ただし、スイッチに、ルータと接続するポートをトランク リンクとして設定し、
ルータのインターフェイスをサブ インターフェイス に分割すれば、1つの物理的な接続で済む。
- トランク リンクの場合
トランク リンクの場合、トランク リンクに対応した1つのポートに接続する。
ルーティング †
ルータによるルーティング †
ルータを導入し離れた場所にあるネットワーク同士を接続した場合、
各ネットワークはツリーではなく、蜘蛛の巣のように相互に接続される。
そのため、あるノードから別のノードへの経路は、一本だけでなく複数存在することになる。
ルーティング テーブルの作成 †
- このためルータは、インターフェイスから受信したIPパケットを
「ルーティング テーブル」の情報を基に適切なルートへ転送する。
この動作をIPフォワードという。
ICMPを使用したルーティングの確認 †
- IPネットワークでは、
あるノードから別のノードへの経路は一本だけでなく複数存在するため、
経路上のルータなどが故障した際、どこに原因があるか調査が必要になる。
TCP、UDPプロトコル †
- TCP、UDPプロトコルについて説明する。
- 現在のWindowsネットワークでは、TCP、UDPプロトコルが標準的に使われている。
- 一般的なサービスやそのクライアント アプリケーションが使用するTCP、UDPのポート番号の一覧は、
「%windir%\system32\drivers\etc\services」に記述されている。
概要 †
UDPプロトコル †
- UDPは、IPアドレスを使用する「データグラム型通信」である。
- また、ステートレスなサービスを実装しやすいという特徴があるが、
データが相手に届いたことが保証されないという欠点がある。
TCPプロトコル †
- TCPは、IPアドレスを使用する「コネクション指向の通信」である。
- 「コネクション指向の通信」は、初めに通信する者同士がデータ送受信のための通信路(コネクション)を確保する。
- 以後、このコネクションを使ってデータが正しく相手に届くことを保証し、通信が完了後にコネクションを閉じる 。
- TCP/IPのプロトコル スタック(トランスポート層)までの保証になるため、
- トランザクション処理のような、アプリケーションがストレージに結果を書き込むまでの信頼性は保障されない。
- 通信媒体上のエラーでデータが相手に届かなかったりデータにエラーがあったりすると、再送処理を行って正しいデータが相手に届くように努力する。
- 一般的には、データを受けた側では必ず確認応答(以下、ACKと略す)を返信して、
データの送受信が正しく処理されたことを相互に確認する。
- これによって、エラーのない信頼性のある通信を実現している。
そして、どうしてもデータを送信できなければアプリケーションに送信失敗という結果を返す。
TCPとUDPの比較 †
以下の表に、
- UDP: データグラム型通信
- TCP: コネクション指向の通信
の特徴をまとめた。
# | 比較項目 | データグラム型通信 | コネクション指向の通信 |
1 | 通信目的 | 必ずしも応答を要求しない場合や、素早く相手にデータを届ける場合。 | 2つのアプリケーション間でデータをやり取りするために使う。 |
2 | プロトコルのオーバーヘッド | 小さい。接続の確立処理などを行うことなく、すぐにデータ送信ができる。応答確認やエラー検出なども行わない。 | 大きい。接続を確立してから通信を開始し、応答確認やエラー検出、再送、エラー訂正処理などを行う。 |
3 | 信頼性 | 低い。エラーが発生しても再送処理などは行われない。 | 高い。エラー検出や、エラー訂正処理などが行われる。 |
4 | 適する通信の種類 | 1対多の通信や、信頼性よりもリアルタイム性が要求される通信 | データの送受信が保証される必要がある通信 |
TCPプロトコルの伝送制御 †
TCPプロトコルの伝送制御方法について簡単に説明する。
- TCPでは、信頼性のある通信を実現するために、
「相手にデータが届いたことをACKから必ず確認する」という手法を採用している。
- ACKにはアプリケーションは介在せず、TCP/IPのプロトコル スタックにより処理される。
- このような仕組みになっているため、上位アプリケーションはTCPプロトコルにおける伝送制御を意識することなく、
信頼性のある「コネクション指向の通信」を利用することができる。
- また、TCPでは効率の悪い「コネクション指向の通信」の転送方法を改善するために「ウィンドウ制御」という方式を採用している。
ウィンドウ制御 †
- この方式により、TCPパケットを(ACKの確認なしで)連続して送信することができるようになり、効率よく(ネットワークの帯域幅いっぱいまで)回線を利用できる。
#ref(): File not found: "WindowControl.png" at page "ネットワークの基礎編"
- また、「ウィンドウ制御」では「シーケンス番号」と「ウィンドウ サイズ」(送受信用のバッファ)が重要な役割を果たす。
- 「シーケンス番号」は「ウィンドウ サイズ」上のデータの位置を表し、パケットの到着順が前後しても問題無いように使用される。
- また、「ウィンドウ サイズ」はデータの流れを許可したり禁止したりすることに使用される
- 「ウィンドウ制御」における「シーケンス番号」と「ウィンドウ サイズ」の役割は、下記のページを参考にできる。
TCPコネクションの状態 †
TCPプロトコルは「コネクション指向の通信」のプロトコルであり、このコネクションには種々の状態が存在する。
- TCPコネクションの状態の種類
- TCPコネクションには下記の状態がある。
- これは、現時点の状態がTCPコネクションの
「オープン」 ⇒ 「通信経路の確保」 ⇒ 「クローズ」
といったシーケンス中の何処にあるかを示すものである。
# | 区分 | 状態 | 意味 |
1 | ポート未使用状態側(双方の側) |
1-1 | | CLOSED | 未使用状態のTCPポート。 通常これが表示されることはない。 |
2 | リスニング ポートの作成側(パッシブ オープン側) |
2-1 | | LISTENING | 待ち受け状態(リスニング状態)のポート。 クライアントからコネクション確立要求(以下、SYN)を受信し、 ACK(SYN/ACK)を返信して、SYN_RECEIVEDへ遷移する。 |
2-2 | | SYN_RECEIVED | ACK(SYN/ACK)に対するACKの受信を待機している状態。 ACKの受信後、ESTABLISHEDへ遷移する。 |
3 | コネクション確立要求の送信側(アクティブ オープン側) |
3-1 | | SYN_SENT | サーバに対してSYNを送信し、ACK(SYN/ACK)の受信を待機している状態。 ACK(SYN/ACK)の受信後、ACKを送信してESTABLISHEDへ遷移する。 相手が無応答のときもこの状態になる。 |
4 | コネクション確立状態側(双方の側) |
4-1 | | ESTABLISHED | TCPコネクションが確立して通信している状態。 その後、終了処理を経由して以下のいずれかの状態に遷移する。 (1) コネクション終了要求(以下、FIN)を送信した場合、FIN_WAIT_1へ遷移する。 (2) FINを受信した場合、ACK(FIN ACK)を返信して、CLOSE_WAITへ遷移する。 |
5 | コネクション終了要求の送信側(アクティブ クローズ側) |
5-1 | | FIN_WAIT_1 | 状況に応じて以下のいずれかの状態に遷移する。 (1) ACK(FIN ACK)を受信するとFIN_WAIT_2へ遷移する。 (2) 先に相手からのFINを受信するとCLOSINGへ遷移する。 |
5-2 | | FIN_WAIT_2 | FINの受信を待機している状態。 FINの受信後、ACK(FIN ACK)を返信してTIME_WAITへ遷移する。 |
5-3 | | CLOSING | FINに対するACK返信し、ACK(FIN ACK)の受信を待機している状態。 ACK(FIN ACK)を受けるとTIME_WAITへ遷移する。 |
5-4 | | TIME_WAIT | コネクションの終了待ち状態。 しばらく待ったあと、CLOSEDへ遷移して終了する。 |
6 | コネクション終了要求の受信側(パッシブ クローズ側) |
6-1 | | CLOSE_WAIT | ソケットを解放し、FINを送信してからLAST_ACKへ遷移する。 |
6-2 | | LAST_ACK | FINに対するACK(FIN ACK)の受信を待機している状態。 ACK(FIN ACK)の受信後、CLOSEDへ遷移して終了する。 |
- 状態の状態遷移図
- 次に、この状態の状態遷移図を示す。
- ただし、コネクション終了要求(FIN)が重複し、
FIN_WAIT_1の状態で先に相手からのFINを受け取った時の状態遷移は割愛した。
- TCPコネクションのオープン処理
- TCPでコネクションを確立するためには、
3つのTCPパケット(SYN、ACK / SYN、ACK)の送受信を行う。
- これを「3ウェイ ハンドシェイク」という。
#ref(): File not found: "TCP_Open.png" at page "ネットワークの基礎編"
- TCPコネクションのクローズ処理
クローズ処理では、TCPコネクションの両端のアプリケーションがそれぞれクローズを宣言するため、
4つのTCPパケット(FIN*2、FIN ACK*2)を送受信することにより、TCPコネクションが終了する。
#ref(): File not found: "TCP_Close.png" at page "ネットワークの基礎編"
クライアントとサーバー †
- 一般的には
- パッシブ オープン側がサーバ
- アクティブ オープン側がクライアント
- しかし、TCP/IPは、本質的にはクライアント・サーバを区別しない。
- コネクション確立後は、プログラムからクライアント・サーバを区別しないで、
ソケットのストリーム バッファにデータを書き込むだけでデータの送受信が可能となる。
- 余談:FTP(アクティブ モード)など、クライアント側がパッシブ オープンするというプロトコルもある。
- クライアント側がパッシブ オープンし、
- サーバ側が(クライアント側のリスニング ポートに対して)アクティブ オープンする。
TCPのチューニング †
新しいOSでは変更などもあるかも。
# | 項目 | 型 | 説明 |
1 | TCP/IPインターフェイス関連の設定 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet?\Services\Tcpip\Parameters\Interfaces |
1-1 | | MTU | DWORD | IPパケットのサイズを決定する。大きなパケットで送信すると効率が良い。デフォルトは、1,500 byte。 |
2 | TCP/IP関連の設定 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet?\Services\Tcpip\Parameters |
2-1 | | RWIN(TcpWindowSize?) | DWORD | TCPのウィンドウ制御に使用するバッファ。ウィンドウ サイズの最大値を設定する。 デフォルトは 65,535 byteで、チューニングの場合は値を大きくする。 また、ウィンドウ サイズは、MSSの整数倍に設定しておく。 |
2-2 | | MSS(Maximum Segment Size) | DWORD | 通常は MTU値から 40 Byte(TCPヘッダ、IPヘッダのデータ量)を引いた値に設定する。デフォルトは 1,460 byte。 |
2-3 | | DefaultTTL | DWORD | パケットを破棄するまでの時間(経由するルータ数など)。デフォルトは、Windows XP の場合 128。 |
2-4 | | SackOpts? | DWORD | 1:有効(デフォルト)、0:無効 エラー再送が必要なパケットを効率的に通知する機能。これは必ず 1(有効)に設定しておく。 |
2-5 | | TcpMaxDupAcks? | DWORD | パケット紛失を判断する通知回数を指定する。1 ~ 3 の間で設定し、デフォルトは 2。 遅延の大きいネットワークでRWINを拡大した場合は、3 回に設定すると良い。 |
2-6 | | Tcp1323Opts | DWORD | 3は、window scale、timestamps オプションを有効にする値。 RWIN値が 65,536 以上なら 3 に、65,535 以下なら 0 に設定。 |
2-7 | | EnablePMTUBHDetect | DWORD | 1:有効、0:無効(デフォルト) 殆どのネットワーク機器がこの検出オプションに対応しているため、 ブラックホール(経路MTU検出に応答しない機器)検出オプションは0(無効)で良い。 |
2-8 | | EnablePMTUDiscovery | DWORD | 1:有効(デフォルト)、0:無効 経路MTU検出オプションを有効にしてネットワーク上の機器に合わせてMTUを調整する。 これは必ず 1(有効)に設定しておく。 |
3 | AFD (Ancillary Function Driver)が使用するフロー制御に関するパタメタ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet?\Services\AFD\Parameters |
3-1 | | LargeBufferSize? | DWORD | 初期値:00001000 AFDが使用するバッファのサイズ |
3-2 | | MediumBufferSize? | DWORD | 初期値:000005e0 AFDが使用するバッファのサイズ |
3-3 | | SmallBufferSize? | DWORD | 初期値:00000080 AFDが使用するバッファのサイズ |
3-4 | | TransmitWorker? | DWORD | 有効値は0x10(デフォルト)か0x20のみ。 ・0x10:Afd.sysがシステム スレッドを使用する。 ・0x20:Afd.sysが同一スレッドを使用するため、コンテキストスイッチを削減できる。 |
3-5 | | DefaultReceiveWindow? | DWORD | AFDが使用するバッファのサイズ。 RWINより優先されるため、変更しない。 |
3-5 | | DefaultSendWindow? | DWORD | AFDが使用するバッファのサイズ。 |
- Window Scalingオプション(TCPウィンドウ拡大オプション)
- TcpWindowSize?値を 65536以上に設定する場合に有効にする。
- Time Stampsオプション
- TcpWindowSize?値を 65536以上に設定する場合に有効にする。
- ただし、TCPヘッダが12バイト増加するため、実効データ帯域が1%近く減少する。
- 一般的な、TCPのチューニング
- 一般的な、TCPのチューニングとは、「帯域幅は大きいが、遅延の大きいネットワーク間のノードの通信で、ウィンドウ サイズ(RWIN) を拡張することで、
「TCPプロトコルの伝送制御」で説明した、ACKのTCP制御パケットの数を削減し、性能を向上させる」というチューニング方法である。
- RWINのサイズとは、相手側の確認応答(Ack)を待たずに一度に送信できるデータ サイズである。
- 回線速度
「回線速度」は、以下の方法で求める。
- pingコマンドを使用してサイズの大きいIPパケットを送信する
(ここでは、50 KBのIPパケットを送信するように指定した。pingコマンドでは、最大65.5 KBのIPパケットを送信できる)。
C:\Documents and Settings\Administrator>ping xxx.xxx.xxx.xxx -l 50000
Pinging xxx.xxx.xxx.xxx with 50000 bytes of data:
Reply from xxx.xxx.xxx.xxx: bytes=50000 time=10ms TTL=128
Reply from xxx.xxx.xxx.xxx: bytes=50000 time=10ms TTL=128
Reply from xxx.xxx.xxx.xxx: bytes=50000 time=10ms TTL=128
Reply from xxx.xxx.xxx.xxx: bytes=50000 time=10ms TTL=128
Ping statistics for xxx.xxx.xxx.xxx:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 10ms, Maximum = 10ms, Average = 10ms
- 回線速度は、以下の式で求めることができるので、
回線速度 ≒ データ サイズ / ( 所要時間 / 2 )
この式に当て込んで、回線速度は、
回線速度 = 50 (KB) / ( 10 / 2 ) (msec)
= 50 / 5 (KB) / (msec)
= 10 * (1,000 (byte)) / (( 1 / 1,000 ) (sec))
= 10 * 1,000 * 1,000 (bps)
= 10,000,000 (bps)
= 10 (M bps)
10M bpsと算出できる。
確認のため、ファイル共有(SMB)を使用して、100MBのファイルの転送をテストしてみると良い。
10秒程度で転送が完了すれば、pingを使用した方法でも回線速度が大方正しく測定できていることが確認できる。
- pingが戻ってくる平均速度
「pingが戻ってくる平均速度」は、以下の方法で求める。
- pingコマンドを使用して 1 パケット分のデータ(1,500 byte)を送信する。
C:\Documents and Settings\Administrator>ping xxx.xxx.xxx.xxx -l 1500
Pinging xxx.xxx.xxx.xxx with 1500 bytes of data:
Reply from xxx.xxx.xxx.xxx: bytes=1500 time=2ms TTL=128
Reply from xxx.xxx.xxx.xxx: bytes=1500 time=2ms TTL=128
Reply from xxx.xxx.xxx.xxx: bytes=1500 time=2ms TTL=128
Reply from xxx.xxx.xxx.xxx: bytes=1500 time=2ms TTL=128
Ping statistics for xxx.xxx.xxx.xxx:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 2ms, Maximum = 2ms, Average = 2ms
この時のAverageの値である2ミリ秒が「pingが戻ってくる平均速度」となる。
- 上記の環境(100BASE-TXのローカル ネットワーク間のノードの通信)
● 回線速度 :10 M bps
● pingが戻ってくる平均速度 :2 m sec
で必要なRWINの値は、
回線速度 * pingが戻ってくる平均速度 = RWIN
の計算方法式に当てはめ、次のようになる。
RWIN = 10 ( MB / sec ) * 2 ( msec )
= 10 * (1,000 (KB / sec)) * (( 2 / 1,000 ) (sec))
= 10 * 1,000・( 2 / 1,000 ) ((KB / sec) (sec))
= 10 * 2 ( KB )
= 20 ( KB )
= 20,000 ( byte )
- 結果
- デフォルトのRWINの値は、65,535 byteであるため、帯域幅は大きいが、
遅延の大きいネットワーク間のノードの通信でない限り、
TCPのチューニング(RWINの拡張)は基本的に必要無い。
- また、以下のチューニング ポイントも考慮する。
● RWINは、MSSの整数倍に設定する。
● パケット再送信が起きる場合は、RWINを1.5倍する。
補足 †
イーサネット †
イーサネットという表現は元々10MbpsタイプのLAN規格の名称だったが、
現在はFast Ethernet(100Mbps)/ Gigabit Ethernet(1Gbps)を含んだ総称としての意味合いが強まっている。
以下、代表的なイーサネットについて列挙する。
10BASE-2 †
細い同軸ケーブルを利用したバス型
(10Mbps、最大伝送距離185m、最大接続機器数30台)
10BASE-5 †
太い同軸ケーブルを利用したバス型
(通信速度10Mbps、最大伝送距離500m、最大接続機器数100台)
10BASE-T †
TPケーブルを利用したスター型
(通信速度10Mbps、最大伝送距離100m、ハブ多段接続3段)
100BASE-TX †
TPケーブル (UTPカテゴリー5)を利用したスター型
(通信速度100Mbps、最大伝送距離100m、ハブ段接続2段)
1000BASE-T †
TPケーブル (UTPカテゴリー5)を利用したスター型
(通信速度1Gbps、最大伝送距離100m)
名前 †
NetBIOS名 †
NetBIOSにてホストを識別する名前
ホスト名 †
TCP/IPで、hostsファイルに記載したホストを識別する名前
FQDN名 †
TCP/IPで、ドメイン名、サブドメイン名、ホスト名を省略せずにすべて指定した記述形式
ネットワーク構成の例 †
BBルータと家庭内LAN †
- BBルータのグローバルIPアドレス
光ファイバ プロバイダ(FTTH)からPPPのNCPで割り当てられる。
- 家庭内LANのプライベートIPアドレス
BBルータのDHCPサーバ機能で動的に割り当てる。
若しくは、ユーザにより、静的に割り当てる。
- 補足説明
- 家庭LAN(B)上のホストから、家庭LAN(A)上のホストにアクセスするには、家庭LAN(A)上のホストに静的にプライベートIPアドレスを割り当て、BBルータのNAT / 静的IPマスカレードなどの機能により家庭LAN(A)のBBルータに割り当てられたグローバルIPアドレス・ポート番号を、家庭LAN(A)上のホストのプライベートIPアドレス・ポート番号に変換する方法がある。
- DDNSサービスを使用して、BBルータのIPアドレスに対するFQDN名を登録しておくことで、IPアドレスではなくFQDN名を使用したアクセスが可能になる(注:PPP接続確立の度に、NCPで割り当てられるグローバルIPアドレスが変わるので、DDNSサービスを利用する場合は常時接続にしておくか接続のたびにDDNSのレコードを更新する必要がある)。
企業などで構築する非武装セグメント(DMZ) †
以前は、企業のネットワークを接続するのにフレームリレーが
使われることが多かったが、現在は、IP-VPNや広域Ethernetが主流になっている。
- DMZは
- パブリック ネットワークとしてもプライベート ネットワークとしても構築できる。
- ここでは、パブリック ネットワークとして構築する方法について説明する。
- IPアドレスの付与方法
- DMZ上のホストのグローバルIPアドレス
DMZ(パブリック ネットワーク)のネットワーク アドレスは
「CIDR」方式で決定され、ホストにグローバルIPアドレスが割り当てられる。
- LAN上のホストのプライベートIPアドレス
任意の方法でネットワーク アドレス、ホスト アドレスを設定できる。
- DMZは、ルータの構成オプションを通じて作られる。
- 各ネットワーク(WAN、DMZ、LAN)はルータにお互い異なるポートを使って連結される。
- DMZの構築には、「三脚境界」(中小規模)や「フロント ファイア ウォール / バックエンド ファイア ウォール」(大規模)などの手法がある。
プロトコル †
PPP †
データリンク層のプロトコル
- 同期式・非同期式ポイントツーポイントのシリアルリンク上で、
各種プロトコルを伝送するための標準プロトコル
- PPPoE(PPP over Ethernet)
Ethernet上でPPPによるセッションを確立する。
- PPPoA(PPP over ATM)
ATM上上でPPPによるセッションを確立する。
- LCPとNCPという2つのプロトコルを使用してPPP接続が確立する。
- LCPでPAPやCHAPを使ってユーザを認証し、
- NCPでネットワーク層のプロトコルに対応した制御、
ネットワーク アドレスの割り当てや、パケットの圧縮
- ルートブリッジを、優先順位(2バイト)とMACアドレス(6バイト)= ブリッジID(8バイト)で決定する。
ARP, RARP †
ネットワーク層のプロトコル
- 概要
- ARP : IP → MAC
- RARP : MAC → IP
- 詳細
- ARPプロトコルは、与えられたIPアドレスからMACアドレスを求めるためのプロトコルで、
ARP要求により送信先のIPアドレスと送信元のIPアドレスとMACアドレスが、
OSI参照モデルの第2層のブロードキャストで送信される。
- IPアドレスが一致するホストはARP応答によりMACアドレスをユニキャストで返す。
- ARPは、第2層のブロードキャストを直接使用するため、
- ネットワーク モニタを使用してイーサネット内のパケットを監視した場合、ネットワーク モニタによっては、
ARPプロトコルのブロードキャストに送信元と送信先のIPアドレスが表示される
(第3層のブロードキャストでは、フローキャスト用のIPアドレスが表示される)。
- このため、一見してTCP/IPのユニキャストをしているように見えてしまうので、注意する。
ネットワーク層のプロトコル
VoIP †
ネットワーク層のプロトコル
- IP電話などで使われる、音声を
- 各種符号化方式で符号化および圧縮し、
- パケットに変換したものを、
- IPネットワークでリアルタイムに
伝送する技術
- プロトコル
- 呼制御にSIP(Session Initiation Protocol)
- 通信にH.323
- R値
以下のパラメタで評価
- ノイズ、エコー、遅延の3パラメタ(簡略)
- その他、17、計20パラメタで評価
- 国内は、その他、14、計17パラメタで評価
TCP/IPモデルの上位プロトコル
- IGP
同一のAS内で使用される「ルーティング プロトコル」の総称。
- RIP-v2やIGRP
- ディスタンスベクタ型
- 隣接するルータ同士で「ルーティング テーブル」の情報を交換
- 距離(Distance)と方向(Vector)によりベストパスを決定する方式。
- OSPF-v2やIS-IS
- リンクステート型
- 隣接するルータ同士で「リンクステート データベース」の情報を交換
- そこからあて先ネットワークへのベストパスを決定する方式。
- 共通項
- マルチキャストにより情報交換(RIP-v1はブロードキャスト)
- 更新情報を30秒間隔で交換(RIP-v1は差分に対応していない)
- IPv6対応(RIPng, OSPF-v3)
- EGPs
異なるAS間で使用される「ルーティング プロトコル」の総称。
- EGP
- インターネットの規模が小さかった時代に作られた
- 問題点があり、現在ではほとんど使われていない。
- BGP
EGP-2の問題を解決したBGPの最新バージョンはBGP-4。
- EGP-2と違ってTCPを利用することで信頼性を上げ
- 経路状態に変化があった時にのみ更新情報を送る。
TCP/IPモデルの上位プロトコル(セッション層
- NetBIOS: Network Basic Input Output System
- 主にMicrosoft社が開発したプロトコル
SMBプロトコル †
TCP/IPモデルの上位プロトコル(アプリケーション層
- SMB: Server Message Block
- 主にMicrosoft社が開発したプロトコル
- SMB
- SMBはNetBIOSを経由する。
- このため、使用するプロトコルがNBTの場合、
NetBIOSのネームサービス、データグラム サービス、セッション サービスで使用する
UDPポートの137・138番、TCPポートの137・139番を使用する。
- CIFS
- Sambaでも利用可能な標準仕様をCIFSと呼ぶ(トランスポートに依存しない)。
- CIFSに対応したSMBをMicrosoft Direct Hosting of SMB(Microsoft-DS)と呼ぶ。
- Direct Hosting of SMB
- Direct Hosting of SMBはNBT の仕様に関係のないTCP・UDPポートの445番を使用する。
- また、NetBIOSを経由しないため、「NetBIOS名」を使わずに
「ホスト名」・「FQDN名」や、「IP アドレス」でサーバのアドレスを指定することもできる。
- Windows 2000以降のマシンのデフォルトではDirect Hosting of SMBを使用する。
- SMBとDirect Hosting of SMB
- 使用するポート
# | プロトコル | 使用するポート |
1 | SMB | 137/tcp・udp、138/udp、139/tcp(NBTで使用するポート) |
2 | Direct Hosting of SMB | 445/tcp・udp |
などが利用する。
TCP/IPモデルの上位プロトコル(アプリケーション層
BootP †
TCP/IPモデルの上位プロトコル(アプリケーション層
- RFC 951で定義された。
- ネットワークに接続されたクライアントが、
サーバから下記のような情報を自動的に取得するためのプロトコル。
- 主に
- OSがブートする際に用いられる。
- 現在ではDHCPがBootPの上位互換プロトコルとなっており、
BootPは徐々に使用されなくなってきている。
NTP †
TCP/IPモデルの上位プロトコル(アプリケーション層
- Network Time Protocol(ネットワーク・タイム・プロトコル
- stratumと呼ばれる階層構造を持ち、
- 最上位のサーバが正確な時計から標準時を取得し、
- 下位のホストはそれを参照する事で時刻を合わせる。
その他、TCP/IPモデルの上位プロトコル †
その他 †
ブロードキャスト †
- OSI参照モデルの第2層のブロードキャスト(MACアドレスを使用)
- ブロードキャスト・フレーム
- MACアドレス:FF:FF:FF:FF:FF:FF
- OSI参照モデルの第3層のブロードキャスト(IPアドレスを使用)
- ブロードキャスト・パケット
- IPアドレス
- リミテッド ブロードキャスト(ローカルネットワーク)
- ディレクティッド ブロードキャスト(任意のネットワーク)
マルチキャスト †
マルチキャスト送信者は、ネットワーク上にいる、
すべてのマルチキャスト受信者に対して同時に同じデータを送信する。
- マルチキャスト送信者
送信する「マルチキャスト アドレス(グループ)」に「join」していなくてもデータの送信が可能である。
- マルチキャスト受信者
- 「マルチキャスト アドレス(グループ)」(224.0.0.x、[x = 0...255])
と呼ばれるグループに「join」することにより、マルチキャスト データを受け取ることができる。
- データを受け取る必要がなくなった受信者は、グループから「leave」する。
Tags: :通信技術, :Windows