マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

Windowsネットワークの基礎知識、設定・トラブルシュート」3部作の第1部。

イーサネット上のネットワーク サーバ

  • イーサネット上でネットワーク基盤として機能するネットワーク サーバ。
  • これらのネットワーク基盤として機能するネットワーク サーバの機能により、
    • IPアドレスの付与(など設定 の配布)
    • NetBIOS名・FQDN名の名前解決
    • ネットワーク リソースのグループ化、検索、認証(アクセス許可)

などの自動化が図られ、ネットワーク、ネットワーク中の
リソース(ファイル サーバ等)の使い易さ・管理のし易さが向上する。

ネットワーク サーバ

IPアドレスの、動的割り当て

DHCP

  • DHCPサーバはクライアントに動的にIPアドレスを割り当てるサーバ。
  • ルータを跨ぐ場合は、クライアントが存在するネットワーク内に中継機能を追加する必要がある。

名前解決のためのサーバ

現在のイーサネットではTCP/IPプロトコルが標準的に使われており、
ネットワーク上でコンピュータやネットワーク機器につけられた名前は、
IPアドレスに変換され通信が実行される。これを名前解決と言う。

DNSサーバ

WINSサーバ

  • 非WINS環境では、
    NetBIOS名の名前解決はWINSサーバではなく、
    NetBIOSブロードキャストにより行われる。
  • ルータを跨ぐ場合は、クライアントが存在するネットワーク内に中継機能を追加する必要がある。

名前解決のためのファイル(クライアント)

ネットワーク資源管理のサーバ

  • ネットワーク リソースをグループ化するサーバについて纏める。
  • ネットワーク リソースのグループ化の仕組みには、ワークグループとドメインがある。

ワークグループ環境

  • NetBIOSのブラウジング機能を使用した、ネットワーク資源のグループ化の基本的な仕組み。
  • ブラウジング機能
    • 同一ネットワーク内の同一ワーク グループに属するホストの一覧を集中管理し、
      ワーク グループ内のホストにこのホスト一覧を展開する機能。
    • ブラウジング機能を提供するサーバは、ネットワーク中のホストから自動的に選定される。

ドメイン環境

DNSサーバ、ディレクトリ サービスLDAPサーバKDCサーバの機能を有する
Active Directory(以下、ADと略す)のドメイン コントローラ(以下、DCと略す)
に管理された、より高度なネットワーク資源のグループ化の仕組み。

ネットワーク資源

ファイルサーバ

プリンタサーバ

アドレス

  • IPアドレスMACアドレスの違いの1つに、ルーティング機能の有無がある。
  • MACアドレスに対応するルーティング機能は存在しないため、
    MACアドレスを使用するイーサネットなどのネットワークで通信可能な範囲は、
    OSI参照モデルの第2層のブロードキャストで名前解決できる範囲となる。

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」の範囲が予約されている。
    • DHCPサーバからDHCPクライアントにIPアドレスが割り当てられなかった場合に、
      DHCPクライアントが自動的にLINKLOCALアドレスを割り当てる。
  • ローカル ループバック アドレス(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により規定されているマルチキャスト アドレス(グループ)を以下に示す。
      #マルチキャスト アドレス(グループ)用途
      1224.0.0.0予約
      2224.0.0.1同一サブネット上の全ノード
      3224.0.0.2同一サブネット上の全ルータ
      4224.0.0.4ルーティング プロトコルDVMRP
      5224.0.0.5OSPF
      6224.0.0.6OSPF version2
      7224.0.0.9RIP version2
  • マルチキャスト アドレスに対応するMACアドレスもある
    • このMACアドレスは、マルチキャスト受信者に設定されたホストのNICに自動的に追加される。
    • これについては本ドキュメントでは割愛する。

IPアドレスの割当

プライベートIPアドレスとグローバルIPアドレス

  • プライベートIPアドレス
    プライベートIPアドレスは各組織内だけで
    自由に使うことが許可されたIPアドレスで、以下の範囲が利用できる。
#クラスクラスに対応するホスト アドレスの範囲-プライベートIPアドレスの範囲
1クラスA0.0.0.0127.255.255.255のうち10.0.0.010.255.255.255
2クラスB128.0.0.0191.255.255.255172.16.0.0172.31.255.255
3クラスC192.0.0.0223.255.255.255192.168.0.0192.168.255.255
  • グローバルIPアドレス
    • プライベートIPアドレスと重複しないIPアドレスの範囲を、公的な機関
      (IANAおよびその依頼を受けた組織)によってプロバイダなどに割り当てられる。
    • そのIPアドレスが重複しないようにプロバイダのユーザに付与される。
    • グローバルIPアドレスの割り当てを、以下の例で説明する。

DHCPサーバによるIPアドレスの動的割り当て

IPアドレスの割り当て方法には、

  • 「静的割り当て」と「動的割り当て」がある。
  • 動的割り当てをするには、DHCPサーバが必要になる。
  • 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アドレスを要求する際のシーケンスを、以下に示す。
DHCPプロトコル
  • DHCPサーバからの「肯定(OFFER)」コマンドの応答が複数ある場合、
    DHCPクライアントは、適当な「肯定(OFFER)」コマンドを選択し、
    そのDHCPサーバを使う旨を、「要求(REQUEST)コマンド」を使って返信する。
    この仕組みはDHCPサーバの冗長化などにも利用されている。
  • WindowsでのDHCPクライアントの設定
  • 代替構成
    • DHCPを有効にしている場合、「代替構成」を設定できる。
    • 代替の構成は、DHCP クライアントがDHCPサーバを発見できない場合に有効になる。
    • 既定値は、[自動プライベートIPアドレス]で、この場合、APIPAのIPアドレスが付与される。
    • 設定方法 「Windows 代替の構成」などでググる。

IPアドレスの静的割り当て

「静的割り当て」は、クライアントに直接IPアドレスを指定する方法である。

割当られたIPアドレスの確認(ipconfigコマンド

ネットワーク アドレス

  • IPアドレスを構成するビット列のうち、
    個々の組織が管理するネットワーク(サブネット)を識別するのに使われる部分。
  • ネットワーク アドレスとIPアドレスの割り当てについて方法について説明する。

クラスフル アドレッシング(FLSM)

  • ネットワーク アドレスを決定する際に、
    既定の「アドレス クラス」と「ネット マスク」(ナチュラル マスク)
    を使用するアドレッシング方法を、「クラスフル アドレッシング」(FLSM)と言う。
  • 「クラスフル アドレッシング」では、それぞれのネットワークに何台のホストを接続するかによって、どの「アドレス クラス」を使用するかを選択する。
    • 「ネット マスク」(ナチュラル マスク)は「アドレス クラス」に対応したものを適用する。
    • クラスD、クラスEというアドレスもあるが、これは通常のホストが使用するIPアドレスではない。
      クラスDはマルチキャスト アドレス、クラスEは実験用アドレスに予約されている。
#アドレス クラス先頭ビットのパターンネット マスクネットワーク アドレスの範囲ホスト アドレス長(ホスト台数)
ホスト アドレス
1クラスA0255.0.0.00.0.0.0/8
~127.0.0.0/8
24bit(約1677万台)
0.0.0.1~0.255.255.254
2クラスB10255.255.0.0128.0.0.0/16
~191.255.0.0/16
16bit(約6万5000台)
0.0.0.1~0.0.255.254
3クラスC110255.255.255.0192.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テーブルの内容を確認することができる。
    • 以下、「arp -a」コマンドの実行例である。
      Interface: xxx.xxx.xxx.xxx --- 0x10003               → ローカル ホスト
      Internet Address      Physical Address      Type
      yyy.yyy.yyy.yyy       zz-zz-zz-zz-zz-zz     dynamic  → 通信先のホスト
#アイテム説明
Internet AddressIPアドレス
Physical AddressMACアドレス
  • ARPテーブルのエントリの寿命
    • また、通常はARPテーブルに記録されるエントリには寿命があり、一定時間が経つと、そのエントリは自動的に消滅する。
    • Windowsシステムではデフォルトでは10分(600秒) となっている。
    • この設定を変更する場合は、以下のレジストリエントリにキャッシュのタイム アウト値を設定する。
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
      ARPcashlife(DWORD)

ネットワーク構成

ルータによるネットワークの分割・接続

  • ルータは、以下を目的に導入される。
    • リモート ネットワークとの接続
    • ブロードキャスト トラフィック負荷増大の回避のためのネットワーク分割
    • ルーティング情報の分割(or 集約)のためのネットワーク分割(or 集約)
    • 一般的には、イーサネットの1ネットワーク セグメントを1ネットワーク アドレスに対応させる。
      そして、それぞれのネットワーク セグメントをルータで接続して、全体的なネットワークを構築する。
ルーター1

ルータのインターフェイス

ルータには、以下のインターフェイスがある。

  • イーサネット用のインターフェイス
  • シリアルポートのインターフェイス
ルーターのインターフェイス

ネットワークの分割・接続

ルーター2
  • WANを経由してネットワークを接続する場合
    以下の様な、DCE(データ回線終端装置)をシリアルポートのインターフェイスに接続する。
    • モデム
    • DSU(ISDNなどの加入者回線終端装置)
    • TA(インターフェイス変換を行う通信機器)などの
ルーター3

スイッチ(スイッチング ハブ・L2スイッチ)によるイーサネットの構成

スイッチの目的

スイッチ(スイッチング ハブ・L2スイッチ)は、以下の目的で導入される。

スイッチを使用したイーサネットを構成

  • 基本的にはスイッチがツリー状になるように構成する。
  • また、スイッチの接続では、絶対にループ構造を作ってはいけない
スイッチ1
  • スイッチの基本的な接続方法
  • カスケード
    • 既存のスイッチのポートに別のスイッチのカスケード ポートを接続する方法である。
    • 簡単な拡張方法であるが、信号の減衰や遅延があるため最大で何段のカスケード接続が可能かは
      規格によって定められている(10BASE-Tで4段、100BASE-TXで2段など)。
スイッチのカスケード
  • スタック
    • 複数のスイッチを積み上げることによってポート数を増やす方法である。
    • スタックは、カスケードよりも接続の段数が多くなっている。
スイッチのスタック

VLAN

VLANの構成

  • ネットワークをL2スイッチの機能により、仮想的なネットワークを構成し端末をグループ化できる。これをVLANと呼ぶ。
  • 「アクセス リンク」
    • VLAN に対応したL2スイッチの「アクセス リンク」ポートでは、VLANの識別ために以下の情報を使用する。
      • 「L2スイッチのポート」
        ポート ベースVLAN(スタティックVLAN)
      • 「送信元MACアドレス、IPサブネット アドレス、プロトコル タイプ」
        ポリシー ベースVLAN(ダイナミックVLAN)
    • このため、下図に示すようにL2スイッチを跨がないVLANでは、「暗黙的なタグ」(所謂「タグ無しパケット」)を使用できる。
VLANアクセス リンク
  • 「トランク リンク」
    • VLAN に対応したL2スイッチの「トランク リンク」ポートでは、VLANの識別ために「明示的なタグ」(所謂「タグ付きパケット」)を使用する。
    • 下図に示すようにL2スイッチを跨ぐVLANでは、「トランク リンク」を使用する必要がある。
  • L2スイッチ上でイーサネット フレームにタグ付けすることを「フレーム タギング」と呼ぶ。
    タギング方式には以下がある。
    • ISL(Cisco独自の方式)と
    • IEEE802.1q(標準化された方式)
  • タグ付けされたフレームは、
    • 宛先スイッチまでフォワーディングされ、
    • 最終的には宛先スイッチ上でタグを削除する。
    • このため、ノード間でタグを意識する必要はない。
VLANトランク リンク

VLANネットワークの接続

  • 其々のVLANネットワークを接続する場合、ルータに接続する必要がある。
  • また、ネットワークを跨いだVLANは構築できないので注意する。
  • アクセス リンクの場合
    • アクセス リンクの場合、VLANの数だけルータとスイッチにアクセス リンクを作成し、それぞれ個別のケーブルで接続する。
    • ただし、スイッチに、ルータと接続するポートをトランク リンクとして設定し、
      ルータのインターフェイスをサブ インターフェイス に分割すれば、1つの物理的な接続で済む。
VLANルーター・アクセス リンク
  • トランク リンクの場合
    トランク リンクの場合、トランク リンクに対応した1つのポートに接続する。
VLANルーター・トランク リンク

ルーティング

ルータによるルーティング

ルータを導入し離れた場所にあるネットワーク同士を接続した場合、
各ネットワークはツリーではなく、蜘蛛の巣のように相互に接続される。

そのため、あるノードから別のノードへの経路は、一本だけでなく複数存在することになる。

ルータによるルーティング

ルーティング テーブルの作成

  • このためルータは、インターフェイスから受信したIPパケットを
    「ルーティング テーブル」の情報を基に適切なルートへ転送する。

この動作をIPフォワードという。

ルーティング テーブルの確認(route printコマンド

ICMPプロトコルを使用したルーティングの確認

  • IPネットワークでは、
    あるノードから別のノードへの経路は一本だけでなく複数存在するため、
    経路上のルータなどが故障した際、どこに原因があるか調査が必要になる。

ICMPメッセージの一覧

  • IPルーティングを調査するために使用する
    ICMPメッセージの一覧は次のとおりである。
    タイプ機能区分
    調査制御エラー
    1エコー応答(echo reply)
    2エコー要求(echo request)
    3タイムスタンプ要求(timestamp request)
    4タイムスタンプ応答(timestamp reply)
    5情報要求(information request)
    6情報応答(information reply)
    7アドレス マスク要求(address mask request)
    8アドレス マスク応答(address mask reply)
    9送信元抑制(source quench)
    10経路変更要求(redirect)
    11あて先不達(destination unreachable)
    12時間超過(time exceeded)
    13パラメータ異常(parameter problem)
  • ただし、すべてのノードが、すべての種類のICMPメッセージをサポートしているわけではなく、
    非ルータのノードでは、限定的ないくつかのICMPメッセージしかサポートされていない。
  • また、ICMPメッセージから、
    ある程度はルーティングに関する障害原因を把握できるが、実際は物理的に問題を調査すべきである。
  • 例えば、以下のように、それぞれの機器を実際に調査しなければ推測の域を出ない。
    • NICの障害なのか、ルータの障害なのか?
    • ネットワークのルーティングが双方向で設定されていないのか?

代表的なICMPメッセージの説明

  • エコー要求・応答(調査)
    • エコーは、データ パケットを2つのTCP/IPノード間で送受信するメッセージで、
      ノードの動作状態を調査するためには欠かせない機能である。
  • エコー要求
    • エコー要求相手のノードに届くと、そのデータがそのままエコー応答として元のノードへと送り返される。
  • エコー応答
    • エコー応答にはアプリケーションは介在せず、TCP/IPのプロトコル スタックにより処理される。
    • TCP/IPをサポートしているノードは必ずこのエコー応答の機能を実装する。
  • タイムスタンプ要求・応答(調査)
    タイムスタンプ要求・タイムスタンプ応答は、レスポンスタイムの計測に用いられる。
  • 経路変更要求(制御)
    • 現在のルーティングではムダにパケットを中継するなど、
      IPパケットの送信先が適切でないことがルータ上で判断された場合、
      当該するルータは正しいルータにIPフォワードすると共に送信元に経路変更要求メッセージを返す。
    • 送信元は、この経路変更要求メッセージからルーティング テーブルを変更する。
    • これにより、以降無駄なトラフィックが抑えられる。
    • 参考
  • あて先不達(エラー)
    • 何らかの理由で、あて先となるサービスへパケットを送ることができない場合に
      ルーティングの途中のルータや、ターゲット ホストから送信元に対して返信されるメッセージ。
    • メッセージには、エラーの要因を表す数値がセットされるため、エラーの要因を把握できる。
  • 時間超過(エラー)
    • ルーティングの途中で時間(回数)が超過してしまった場合に、
      IPパケットの送信元に対して返信されるメッセージである。
  • このメッセージが生成される要因は2つある。
    • 要因1
      ルータにフォワードされるうちに、IPヘッダ中のTTL が0になってしまった場合。
      TTLはパケットの有効期間を表す値で、ルータなどを1回経由されるたびに値が1減少する。
  • 要因2
    ルーティングの途中でIPパケットのフラグメンテーションが行われた場合、
    IPパケット全体を再構成するために、すべてのフラグメントがそろうまで
    一定時間待つ必要があるが、この待機がタイムアウトした場合。

TCP、UDPプロトコル

  • TCP、UDPプロトコルについて説明する。
  • 現在のWindowsネットワークでは、TCP、UDPプロトコルが標準的に使われている。
  • 一般的なサービスやそのクライアント アプリケーションが使用するTCP、UDPのポート番号の一覧は、
    「%windir%\system32\drivers\etc\services」に記述されている。

概要

UDPプロトコル

  • UDPは、IPアドレスを使用する「データグラム型通信」である。
    • 「データグラム型通信」は高速で、
    • 1対1の通信機能(ユニキャスト)だけではなく
    • 1対多の通信機能(ブロードキャスト、マルチキャスト)を提供できる。
  • また、ステートレスなサービスを実装しやすいという特徴があるが、
    データが相手に届いたことが保証されないという欠点がある。

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の確認なしで)連続して送信することができるようになり、効率よく(ネットワークの帯域幅いっぱいまで)回線を利用できる。
ウィンドウ制御
  • また、「ウィンドウ制御」では「シーケンス番号」と「ウィンドウ サイズ」(送受信用のバッファ)が重要な役割を果たす。
    • 「シーケンス番号」は「ウィンドウ サイズ」上のデータの位置を表し、パケットの到着順が前後しても問題無いように使用される。
    • また、「ウィンドウ サイズ」はデータの流れを許可したり禁止したりすることに使用される
  • 「ウィンドウ制御」における「シーケンス番号」と「ウィンドウ サイズ」の役割は、下記のページを参考にできる。

TCPコネクションの状態

TCPプロトコルは「コネクション指向の通信」のプロトコルであり、このコネクションには種々の状態が存在する。

  • TCPコネクションの状態の種類
    • TCPコネクションには下記の状態がある。
    • これは、現時点の状態がTCPコネクションの
      「オープン」 ⇒ 「通信経路の確保」 ⇒ 「クローズ」
      といったシーケンス中の何処にあるかを示すものである。
#区分状態意味
1ポート未使用状態側(双方の側)
1-1CLOSED未使用状態のTCPポート。
通常これが表示されることはない。
2リスニング ポートの作成側(パッシブ オープン側)
2-1LISTENING待ち受け状態(リスニング状態)のポート。
クライアントからコネクション確立要求(以下、SYN)を受信し、
ACK(SYN/ACK)を返信して、SYN_RECEIVEDへ遷移する。
2-2SYN_RECEIVEDACK(SYN/ACK)に対するACKの受信を待機している状態。
ACKの受信後、ESTABLISHEDへ遷移する。
3コネクション確立要求の送信側(アクティブ オープン側)
3-1SYN_SENTサーバに対してSYNを送信し、ACK(SYN/ACK)の受信を待機している状態。
ACK(SYN/ACK)の受信後、ACKを送信してESTABLISHEDへ遷移する。
相手が無応答のときもこの状態になる。
4コネクション確立状態側(双方の側)
4-1ESTABLISHEDTCPコネクションが確立して通信している状態。
その後、終了処理を経由して以下のいずれかの状態に遷移する。
(1) コネクション終了要求(以下、FIN)を送信した場合、FIN_WAIT_1へ遷移する。
(2) FINを受信した場合、ACK(FIN ACK)を返信して、CLOSE_WAITへ遷移する。
5コネクション終了要求の送信側(アクティブ クローズ側)
5-1FIN_WAIT_1状況に応じて以下のいずれかの状態に遷移する。
(1) ACK(FIN ACK)を受信するとFIN_WAIT_2へ遷移する。
(2) 先に相手からのFINを受信するとCLOSINGへ遷移する。
5-2FIN_WAIT_2FINの受信を待機している状態。
FINの受信後、ACK(FIN ACK)を返信してTIME_WAITへ遷移する。
5-3CLOSINGFINに対するACK返信し、ACK(FIN ACK)の受信を待機している状態。
ACK(FIN ACK)を受けるとTIME_WAITへ遷移する。
5-4TIME_WAITコネクションの終了待ち状態。
しばらく待ったあと、CLOSEDへ遷移して終了する。
6コネクション終了要求の受信側(パッシブ クローズ側)
6-1CLOSE_WAITソケットを解放し、FINを送信してからLAST_ACKへ遷移する。
6-2LAST_ACKFINに対するACK(FIN ACK)の受信を待機している状態。
ACK(FIN ACK)の受信後、CLOSEDへ遷移して終了する。
  • 状態の状態遷移図
    • 次に、この状態の状態遷移図を示す。
    • ただし、コネクション終了要求(FIN)が重複し、
      FIN_WAIT_1の状態で先に相手からのFINを受け取った時の状態遷移は割愛した。
  • TCPコネクションのオープン処理
    • TCPでコネクションを確立するためには、
      3つのTCPパケット(SYN、ACK / SYN、ACK)の送受信を行う。
    • これを「3ウェイ ハンドシェイク」という。
TCPコネクションのオープン処理
  • TCPコネクションのクローズ処理
    クローズ処理では、TCPコネクションの両端のアプリケーションがそれぞれクローズを宣言するため、
    4つのTCPパケット(FIN*2、FIN ACK*2)を送受信することにより、TCPコネクションが終了する。
TCPコネクションのクローズ処理

TCP,UDPの状態の確認(netstatコマンド

クライアントとサーバー

  • 一般的には
    • パッシブ オープン側がサーバ
    • アクティブ オープン側がクライアント
  • しかし、TCP/IPは、本質的にはクライアント・サーバを区別しない。
    • コネクション確立後は、プログラムからクライアント・サーバを区別しないで、
      ソケットのストリーム バッファにデータを書き込むだけでデータの送受信が可能となる。
    • 余談:FTP(アクティブ モード)など、クライアント側がパッシブ オープンするというプロトコルもある。
      • クライアント側がパッシブ オープンし、
      • サーバ側が(クライアント側のリスニング ポートに対して)アクティブ オープンする。

TCPのチューニング

新しいOSでは変更などもあるかも。

#項目説明
1TCP/IPインターフェイス関連の設定
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet?\Services\Tcpip\Parameters\Interfaces
1-1MTUDWORDIPパケットのサイズを決定する。大きなパケットで送信すると効率が良い。デフォルトは、1,500 byte。
2TCP/IP関連の設定
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet?\Services\Tcpip\Parameters
2-1RWIN(TcpWindowSize?)DWORDTCPのウィンドウ制御に使用するバッファ。ウィンドウ サイズの最大値を設定する。
デフォルトは 65,535 byteで、チューニングの場合は値を大きくする。
また、ウィンドウ サイズは、MSSの整数倍に設定しておく。
2-2MSS(Maximum Segment Size)DWORD通常は MTU値から 40 Byte(TCPヘッダ、IPヘッダのデータ量)を引いた値に設定する。デフォルトは 1,460 byte。
2-3DefaultTTLDWORDパケットを破棄するまでの時間(経由するルータ数など)。デフォルトは、Windows XP の場合 128。
2-4SackOpts?DWORD1:有効(デフォルト)、0:無効
エラー再送が必要なパケットを効率的に通知する機能。これは必ず 1(有効)に設定しておく。
2-5TcpMaxDupAcks?DWORDパケット紛失を判断する通知回数を指定する。1 ~ 3 の間で設定し、デフォルトは 2。
遅延の大きいネットワークでRWINを拡大した場合は、3 回に設定すると良い。
2-6Tcp1323OptsDWORD3は、window scale、timestamps オプションを有効にする値。
RWIN値が 65,536 以上なら 3 に、65,535 以下なら 0 に設定。
2-7EnablePMTUBHDetectDWORD1:有効、0:無効(デフォルト)
殆どのネットワーク機器がこの検出オプションに対応しているため、
ブラックホール(経路MTU検出に応答しない機器)検出オプションは0(無効)で良い。
2-8EnablePMTUDiscoveryDWORD1:有効(デフォルト)、0:無効
経路MTU検出オプションを有効にしてネットワーク上の機器に合わせてMTUを調整する。
これは必ず 1(有効)に設定しておく。
3AFD (Ancillary Function Driver)が使用するフロー制御に関するパタメタ
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet?\Services\AFD\Parameters
3-1LargeBufferSize?DWORD初期値:00001000
AFDが使用するバッファのサイズ
3-2MediumBufferSize?DWORD初期値:000005e0
AFDが使用するバッファのサイズ
3-3SmallBufferSize?DWORD初期値:00000080
AFDが使用するバッファのサイズ
3-4TransmitWorker?DWORD有効値は0x10(デフォルト)か0x20のみ。
・0x10:Afd.sysがシステム スレッドを使用する。
・0x20:Afd.sysが同一スレッドを使用するため、コンテキストスイッチを削減できる。
3-5DefaultReceiveWindow?DWORDAFDが使用するバッファのサイズ。
RWINより優先されるため、変更しない。
3-5DefaultSendWindow?DWORDAFDが使用するバッファのサイズ。
  • Window Scalingオプション(TCPウィンドウ拡大オプション)
    • TcpWindowSize?値を 65536以上に設定する場合に有効にする。
  • Time Stampsオプション
    • TcpWindowSize?値を 65536以上に設定する場合に有効にする。
    • ただし、TCPヘッダが12バイト増加するため、実効データ帯域が1%近く減少する。
  • チューニング例
  • 一般的な、TCPのチューニング
    • 一般的な、TCPのチューニングとは、「帯域幅は大きいが、遅延の大きいネットワーク間のノードの通信で、ウィンドウ サイズ(RWIN) を拡張することで、
      TCPプロトコルの伝送制御」で説明した、ACKのTCP制御パケットの数を削減し、性能を向上させる」というチューニング方法である。
    • RWINのサイズとは、相手側の確認応答(Ack)を待たずに一度に送信できるデータ サイズである。
  • TCPのチューニングの要素
    TCPのチューニングの要素
  • ウィンドウ サイズ(RWIN)の値の計算方法
    ウィンドウ サイズ(RWIN)の値の計算方法については、以下の式を利用できる。
    回線速度 * pingが戻ってくる平均速度 = RWIN
    次に、回線速度、pingが戻ってくる平均速度の求め方を説明する。
  • 回線速度
    「回線速度」は、以下の方法で求める。
    • 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

  • IPアドレスの付与方法
  • BBルータのグローバルIPアドレス
    光ファイバ プロバイダ(FTTH)からPPPのNCPで割り当てられる。
  • 家庭内LANのプライベートIPアドレス
    BBルータのDHCPサーバ機能で動的に割り当てる。
    若しくは、ユーザにより、静的に割り当てる。
  • BBルータと家庭内LANの例
    BBルータと家庭内LAN
  • 補足説明
    • 家庭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)の例
    非武装セグメント(DMZ)の例
  • DMZは、ルータの構成オプションを通じて作られる。
    • 各ネットワーク(WAN、DMZ、LAN)はルータにお互い異なるポートを使って連結される。
    • DMZの構築には、「三脚境界」(中小規模)や「フロント ファイア ウォール / バックエンド ファイア ウォール」(大規模)などの手法がある。

プロトコル

NetBIOSプロトコル

BootPプロトコル

  • RFC 951で定義された。
  • ネットワークに接続されたクライアントが、
    サーバから下記のような情報を自動的に取得するためのプロトコル。
  • 主に
    • OSがブートする際に用いられる。
    • 現在ではDHCPプロトコルがBootPプロトコルの上位互換プロトコルとなっており、
      BootPプロトコルは徐々に使用されなくなってきている。

ARPプロトコル

  • ARPプロトコルは、与えられたIPアドレスからMACアドレスを求めるためのプロトコルで、
    ARP要求により送信先のIPアドレスと送信元のIPアドレスとMACアドレスが、
    OSI参照モデルの第2層のブロードキャストで送信される。
  • IPアドレスが一致するホストはARP応答によりMACアドレスをユニキャストで返す。
  • ARPは、第2層のブロードキャストを直接使用するため、
    • ネットワーク モニタを使用してイーサネット内のパケットを監視した場合、ネットワーク モニタによっては、
      ARPプロトコルのブロードキャストに送信元と送信先のIPアドレスが表示される
      (第3層のブロードキャストでは、フローキャスト用のIPアドレスが表示される)。
    • このため、一見してTCP/IPのユニキャストをしているように見えてしまうので、注意する。

ICMPプロトコル

ICMPプロトコルとは、

  • TCP/IPが動作するために必要な補助的な役割を果たし、
  • TCP/IPネットワークが円滑に稼働するためには欠かせない重要なプロトコルである。

ルーティング プロトコル

NCPプロトコル

  • 同期式・非同期式ポイントツーポイントのシリアルリンク上で、各種プロトコルを伝送するための標準プロトコルであるPPPプロトコルでは、LCPとNCPという2つのプロトコルを使用している。
  • LCPでPAPやCHAPを使ってユーザを認証し、NCPでネットワーク層のプロトコルに対応した制御、ネットワーク アドレスの割り当てや、パケットの圧縮をしてPPP接続が確立する。

SMBプロトコル

  • 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
    • プロトコルスタック
      SMBとDirect Hosting of SMBのプロトコルスタック
  • 使用するポート
    #プロトコル使用するポート
    1SMB137/tcp・udp、138/udp、139/tcp(NBTで使用するポート)
    2Direct Hosting of SMB445/tcp・udp

などが利用する。

その他

ブロードキャスト

マルチキャスト

マルチキャスト送信者は、ネットワーク上にいる、
すべてのマルチキャスト受信者に対して同時に同じデータを送信する。

  • マルチキャスト送信者
    送信する「マルチキャスト アドレス(グループ)」に「join」していなくてもデータの送信が可能である。
  • マルチキャスト受信者
    • 「マルチキャスト アドレス(グループ)」(224.0.0.x、[x = 0...255])
      と呼ばれるグループに「join」することにより、マルチキャスト データを受け取ることができる。
    • データを受け取る必要がなくなった受信者は、グループから「leave」する。

Tags: :通信技術, :Windows


添付ファイル: fileFactorsOfTcpTuning.png 98件 [詳細] fileSMB.png 119件 [詳細] fileTCP_Close.png 108件 [詳細] fileTCP_Open.png 217件 [詳細] fileWindowControl.png 98件 [詳細] fileVLAN_TrunkLink.png 106件 [詳細] fileVLAN_Router_TrunkLink.png 96件 [詳細] fileVLAN_Router_AccessLink.png 107件 [詳細] fileVLAN_AccessLink.png 122件 [詳細] fileSwitchStack.png 112件 [詳細] fileSwitchCascade.png 90件 [詳細] fileSwitch1.png 87件 [詳細] fileRouting.png 112件 [詳細] fileRouterIF.png 119件 [詳細] fileRouter3.png 101件 [詳細] fileRouter2.png 107件 [詳細] fileRouter1.png 162件 [詳細] fileNetWorkServer.png 180件 [詳細] fileDMZ.png 116件 [詳細] fileDHCP_protocol.png 113件 [詳細] fileBBRouter.png 115件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-01-31 (水) 18:55:37 (443d)