TCP/IP とデータ通信

ネットワーク管理者の責任

一般に、ネットワーク管理者の作業には次の 4 つの分野があります。

各作業分野は、ネットワークのライフサイクルの中の個々のフェーズに対応しています。ネットワーク管理者は、これらのすべてのフェーズに責任を持つ場合もあり、また、ネットワークの保守などのような特定の分野だけを専門的に受け持つ場合もあります。

ネットワークの設計

ネットワークのライフサイクルの最初のフェーズには、ネットワークの設計という作業が含まれますが、一般にこれは新規のネットワーク管理者が行う作業ではありません。ネットワークの設計では、組織のニーズを最大限に満たすようなネットワークの種類を選定することが必要になります。規模の大きいサイトでは、熟練したネットワーク設計者、つまり、ネットワークのソフトウェアとハードウェアの両方を熟知している経験豊富なネットワーク管理者が、この作業を担当します。

ネットワーク設計に関連した各種の要素については、第 3 章「ネットワークの計画」で説明します。

ネットワークの設定

新しいネットワークの設計が終わったら、ネットワーク管理の次のフェーズは、ネットワークの設定と構成です。このフェーズでは、ネットワークの物理的な部分を形成するハードウェアをインストールし、そして、ファイルまたはデータベース、ホスト、ルータ、ネットワーク構成サーバを構成します。

このフェーズに属する作業は、ネットワーク管理者の主要な責任のひとつです。所属組織が非常に大規模で、すでに十分なネットワーク構造が整っている場合を除いて、ネットワーク管理者はこの作業を避けて通ることはできません。

ネットワークのライフサイクルのこのフェーズに関連した作業の説明は、第 4 章「ネットワーク上での TCP/IP の構成」に収めてあります。

ネットワークの保守

ネットワーク管理の第 3 のフェーズには、管理者の責任のもっとも大きい部分を占める日常的な作業が含まれます。この種の作業には次のものがあります。

第 4 章「ネットワーク上での TCP/IP の構成」に、既存のネットワーク上に新しいホストを設定する方法についての説明があります。第 6 章「TCP/IP の障害追跡」には、ネットワーク上の問題を解決するためのヒントを収めてあります。ネットワークサービスについての詳細は、 NFS の管理Solaris ネーミングの管理NIS+ への移行メールシステムの管理を参照してください。セキュリティ関係の作業については、Solaris のシステム管理を参照してください。

ネットワークの拡張

ネットワークが安定し正常に動作する期間が長くなるにつれて、ネットワークの機能とサービスの拡張を望む組織の要求が大きくなってきます。始めのうちは、新しいホストを追加することによってネットワーク人口を増やし、共有ソフトウェアを追加することによってネットワークサービスを拡張することができます。しかし、最終的には、単一のネットワークではこれ以上効率的に運営できないような限界点に達することになります。そうなったときが、ネットワーク管理サイクルの第 4 のフェーズである拡張作業にとりかかるときです。

ネットワークの拡張については、選択肢がいくつかあります。

第 5 章「ルータの構成」は、インターネットを設定するための手順を収めてあります。パート II には、可搬コンピュータ用のネットワーク接続の設定方法の説明があります。パート III は、UUCP を使って、ユーザのマシンと他の UUCP システムとの間で情報を交換する方法についての説明があります。

TCP/IPとは何か

ネットワーク通信プロトコルは、ネットワークの中でソフトウェアとハードウェアがどのように対話するかを規定した正式の規則です。ネットワークが正しく働くためには、情報が目的の宛先に誤解のない形式で伝送されることが必要です。 ネットワークの機能を働かせるために、異なる種類のネットワーキング用ソフトウェアとハードウェアが対話することが必要になったことから、設計者たちは通信プロトコルという概念を考案しました。

Solaris オペレーティングシステムには、ユーザの組織でのネットワーク操作に必要なソフトウェアが含まれています。このネットワーキングソフトウェアは、総称的に TCP/IP と呼ばれる通信プロトコル群を実装しています。TCP/IP は、多くの主要な国際標準化機構により標準として認定されており、世界中で使用されています。TCP/IP は複数の規格の集まりですから、多くの異種コンピュータで実行可能であり、これを用いることで、Solaris オペレーティングシステムを実行する異機種システム混在ネットワークを容易に設定できます。

TCP/IP は、多くの異なる種類のコンピュータ、オペレーティングシステム、ネットワークに対して、サービスを提供します。ネットワークの種類は、イーサネット、FDDI、トークンリングなどのローカルエリアネットワークから、T1 (デジタル専用線)、X.25、ATM などの広域ネットワークに至るまで、広範囲にわたっています。

TCP/IP を使用することで、複数のローカルエリアネットワークから成る 1 つのネットワークを構築できます。また、TCP/IP を使用すれば、事実上どのようなポイントツーポイントディジタル回線を用いても、広域ネットワークを構築することができます。

TCP/IP とそのプロトコルファミリについては、 第 2 章「TCP/IP プロトコル群」で詳しく説明します。

Solaris ネットワークを形成するハードウェアの種類

ローカルエリアネットワーク (LAN) という用語は、たとえば 1 つのビルまたは 2 つの隣接するビルのように、比較的狭い空間に限定されている単一のコンピュータネットワークを指します。ローカルエリアネットワークには、ハードウェアとソフトウェアの両方の構成要素があります。ハードウェアの観点から見ると、基本的な Solaris LAN は、なんらかの形のローカルエリアネットワークメディアに接続された複数のコンピュータで構成されます。

ローカルエリアネットワークメディア

コンピュータネットワーク用に使用するケーブル配線や電気配線をネットワークメディアと言います。図 1-1 は、イーサネットメディアを介して相互に接続されている 4 つのコンピュータを示しています。Solaris LAN 環境では、イーサネットが最もよく使われるローカルエリアネットワークメディアです。Solaris LAN で使用できるその他のローカルエリアネットワークメディアには、FDDI とトークンリングがあります。

図 1-1 Solaris ローカルエリアネットワーク

Graphic

コンピュータとそのコネクタ

TCP/IP ネットワーク上のコンピュータは、ネットワークメディアに接続するために 2 種類のコネクタを使用します。それは、シリアルポートと、ネットワークインタフェース上のポートです。

シリアルポート

どのコンピュータにも、シリアルポートが少なくとも 2 つはあり、これらはコンピュータにプリンタやモデムを接続するためのコネクタとして使用されます。シリアルポートは CPU ボードに装備されている場合もありますが、新たに購入しなければならない場合もあります。システムにモデムを接続して PPP 接続や UUCP 接続を確立するときは、これらのポートを使用します。PPP と UUCP はネットワークメディアとして電話回線を使用することができるので、事実上の広域ネットワークサービスを提供します。

ネットワークインタフェース

ネットワークへの接続ができるようにするためにコンピュータに内蔵されているハードウェアを、ネットワークインタフェースと言います。多くのコンピュータには始めからネットワークインタフェースがインストールされていますが、そうでない場合は、別にネットワークインタフェースを購入する必要があります。

LAN メディアの種類別に、それぞれ異なるネットワークインタフェースが定められています。たとえば、イーサネットをネットワークメディアとして使用したいのであれば、ネットワークの一員となる各ホストにイーサネットインタフェースをインストールしておくことが必要です。イーサネットケーブルを接続するために使用するボード上のコネクタを、イーサネットコネクタと言います。たとえば FDDI の使用を計画しているのであれば、予定している各ホストが FDDI ネットワークインタフェースを備えていなければなりません (その他のネットワークメディアの場合も同様です)。

このマニュアルでは、ホストのデフォルトのネットワークインタフェースを一次ネットワークインタフェースと呼びます。


注 -

ネットワークハードウェアのインストールについては、このマニュアルでは取り扱いません。シリアルポートの構成方法については、 Solaris のシステム管理

を、ネットワークメディアのインストールの手順については、それに付属しているマニュアルを参照してください。


ネットワークソフトウェアが情報を転送する仕組

ネットワークソフトウェアの設定は複雑な作業です。そこで、まず、設定しようとしているネットワークソフトウェアがどのようにして情報を転送するかを理解しておくことが重要です。

図 1-2 に、ネットワーク通信に関係のある基本的な要素を示します。

図 1-2 ネットワーク上での情報の転送

Graphic

この図では、あるコンピュータがネットワークメディアを介して、同じメディアに接続している別のコンピュータにパケットを送信しています。

情報が転送される仕組 : パケット

ネットワークを介して転送する情報の基本単位をパケットと言います。パケットの構成は通常の手紙によく似ています。

どのパケットにもヘッダがあり、これは手紙の封筒に当たります。ヘッダには、受取人と送信元のアドレスに加えて、パケットがプロトコル群の各層を移送されるときにそのパケットをどのように扱うかを指示する情報が含まれています。

パケットのメッセージ部は手紙の本体に相当します。パケットに含めることのできるデータのバイト数には制限があり、これは使用しているネットワークメディアによって異なります。したがって、電子メールメッセージなどのような代表的な通信は、いくつかのパケットフラグメントに分割されることがあります。

情報を送受信する主体 : ホスト

経験を積んだ Solaris ユーザなら、もちろん「ホスト」という言葉はよくご存じのことでしょう。この言葉は、しばしば「コンピュータ」または「マシン」の同義語として使われます。TCP/IP の視点から見れば、ネットワーク上に存在する実体は、ルータとホストの 2 つだけです。

ルータは、ネットワークから別のネットワークへとパケットを転送するマシンです。これを行うには、ルータは少なくとも 2 つのネットワークインタフェースを備えていることが必要です。ネットワークインタフェースが 1 つしかないマシンは、パケットを転送できません。このようなマシンはホストとみなされます。ネットワーク上に設定するマシンは、ほとんどがホストになります。

複数のネットワークインタフェースを持ち、しかもルータとして働かないマシンがある場合があります。この種のマシンをマルチホームホストと呼びます。マルチホームホストは、備えているネットワークインタフェースを用いて複数のネットワークに直接的に接続されます。しかし、1 つのネットワークから別のネットワークへとパケットを転送する働きはしません。

あるホストが通信を開始したとき、それを送信側ホスト、または単に送信者と呼びます。たとえば、あるホストのユーザが rlogin を入力するか、または他のユーザに電子メールメッセージを送ると、そのホストは通信を開始します。通信の宛先となるホストを、受信側ホスト、または単に受信者と呼びます。たとえば、rlogin への引数として指定されたリモートホストは、そのログイン要求の受信者です。

各ホストは、ネットワーク上の他の対等ホストに自身を識別させるための、下記の 3 つの特性を備えています。

ホスト名

ホスト名 は、ローカルマシンの名前と所属組織の名前を組み合わせたものです。多くの組織では、ユーザが各自のマシンのホスト名を選定します。sendmailrlogin などのプログラムは、ネットワーク上のリモートマシンを指定するときにホスト名を使用します。ホスト名に関する説明は、 Solaris のシステム管理に収めてあります。

マシンのホスト名は、一次ネットワークインタフェースの名前にもなります。この概念は、ネットワークデータベースを設定したりルータを構成したりするときに重要な意味を持ちます。

ネットワークを設定するときは、そのネットワークに関与するすべてのマシンのホスト名を入手する必要があります。ネットワークデータベースを設定するときに、 第 4 章「ネットワーク上での TCP/IP の構成」の説明に従ってホスト名を使用します。

IP アドレス

「IP アドレス」は、TCP/IP ネットワーク上で各マシンが持っている 2 種類のアドレスの 1 つで、そのマシンをネットワーク上の他の対等ホストに識別させるためのものです。このアドレスには、特定のホストがネットワーク上のどこに位置しているかを、対等ホストに知らせる役割もあります。ネットワーク上のマシンに Solaris オペレーティング環境をインストールしてある場合は、インストールの時に IP アドレスを指定したことを覚えていることでしょう。IP アドレス指定は TCP/IP の重要な局面の 1 つであり、これについては、「IP アドレス指定方針の設計」で詳しく説明します。

ハードウェアアドレス

ネットワーク上の各ホストはハードウェアアドレスを持っており、これもそのホストを他の対等ホストに識別させるために使用されます。このアドレスは、製造元でマシンの CPU またはネットワークインタフェースに物理的に割り当ててあります。ハードウェアアドレスはどれも一意なものです。

このマニュアルでは、ハードウェアアドレスをイーサネットアドレスという言葉で表しています。イーサネットは、Solaris ベースのネットワーク上で最も一般的に使われているネットワークメディアなので、このマニュアルでは、Solaris ホストのハードウェアアドレスがイーサネットアドレスであるものと想定して、説明を進めます。FDDI など他のネットワークメディアを使用している場合は、そのメディアに付属しているマニュアルの中の、ハードウェアアドレス指定に関する部分を参照してください。

ローカルエリアネットワークの境界を越える - 広域ネットワーク

ネットワークが正常に働く状態が続くうちに、他の企業、専門研究機関、所属の LAN 上にない他の組織の情報にアクセスすることが必要になる場合があります。このような情報を入手しようとするユーザは、広域ネットワーク (WAN) を介して通信することが必要になります。WAN は地理的に広い範囲を対象とするもので、ディジタル専用線または電話回線、X.25、ISDN サービスなどのネットワークメディアを使用します。

WAN の代表的な例としてインターネットがあります。インターネットは、TCP/IP の本来の開発目的となっていた各 WAN の後継者となった世界規模の公共ネットワークです。WAN のその他の例としてはエンタプライズネットワークがあります。これは、1 つの企業の個々の事業所同士を、1 つの国の全域、場合によっては 1 つの大陸の全域にわたるようなネットワークによって結ぶものです。つまり、1 つの組織が独自の WAN を構築することが可能です。

ネットワーク管理者は、ローカルネットワークのユーザが WAN にアクセスできるような処置をとることが必要になる場合もあります。TCP/IP と UNIX のコミュニティでは、最もよく使われている公共ネットワークはインターネットです。インターネットに直接接続する方法については、このマニュアルでは説明しません。これについては、役立つ書籍がコンピュータ関係の書店にたくさんそろっています。

セキュリティ

LAN を WAN に接続することには、セキュリティに関するある程度のリスクが伴います。ときには、自分のネットワークを無許可のアクセスから保護したり、データと資源へのアクセスを制御したりすることが必要になります。セキュリティの概要については、Solaris のシステム管理に説明があります。詳細な説明は、William R. Cheswick および Steven M. Bellovin 共著の『Firewalls and Internet Security』(Addison Wesly, 1994) に出ています。

米国の majordomo@greatcircle.com に対して、テキストの中に subscribe firewalls を含ませて申し込むことで、情報を入手することもできます。ダイジェスト版の方を望む場合は、テキストの中に firewalls_digest を入れてください。

TCP セッションにおけるラージウィンドウのサポート

TCP セッションのラージウィンドウは、RFC1323 に記述されたサポートを提供します。このサポートは、一般的な上限値の 65,535 バイトより大きなウィンドウを使用することで、ATM や衛星ネットワークなどの広帯域または遅延ネットワークのパフォーマンスを改善するように設計されています。

サポートするデータ量の増大が顕著なのは、65,535 バイトから約 1 ギガバイトに上限値が拡張された TCP セッションです。

TCP セッションのラージウィンドウでは、多数の TCP 構成パラメタがサポートされます。これらのパラメタにより、システム管理者は拡張された送受信ウィンドウサイズと RFC1323 タイムスタンプオプションを使用できます。その際に、アプリケーションを修正する必要はありません。システム全体か特定のホストやネットワークに対して、パラメタを変更できます。このことが特に有効なのは、使用するバッファサイズの拡張機能を持たない ftprcp などの標準的なネットワークユーティリティを使用する場合です。

TCP ラージウィンドウのパラメタ

構成パラメタは、TCP デバイスを示す /dev/tcp に関連付けられ、ndd(5) による検査と変更が可能です。通常、これらのパラメタは、システムのブート時に init(1M) が実行するシェルスクリプトの 1 つに設定されます (新規スクリプトの追加方法については、init.d(4) を参照してください)。

使用可能なパラメタとそれぞれの意味は下記のとおりです。

tcp_xmit_hiwat

接続の送信バッファスペースにデフォルト値 (8K) を指定します。

tcp_recv_hiwat

接続の受信バッファスペース (受信データ用に割り当てられたバッファスペースの量。公示されている受信ウィンドウの最大サイズ) にデフォルト値 (8K) を指定します。

tcp_wscale_always

パラメタがゼロ以外であれば、リモートシステムへの接続時にウィンドウスケールオプションが必ず送信されます。パラメタがゼロであれば、64K より大きな受信ウィンドウをユーザが要求した場合に (限って) 送信されます。デフォルトはゼロです。

このパラメタの値にかかわらず、ウィンドウスケールオプションが必ず接続肯定応答に含まれるのは、接続システムがそのオプションを使用した場合です。

tcp_tstamp_always

パラメタがゼロ以外であれば、リモートシステムへの接続時にタイムスタンプオプションが必ず送信されます。デフォルトはゼロです。

このパラメタの値にかかわらず、タイムスタンプオプションが必ず接続肯定応答 (および以降の全パケット) に含まれるのは、接続システムがそのオプションを使用した場合です。

tcp_tstamp_if_wscale

パラメタがゼロ以外であれば、リモートシステムへの接続時にタイムスタンプオプションが送信されるのは、64K より大きな受信ウィンドウをユーザが要求した場合 (つまり、ゼロ以外のスケールを指定したウィンドウスケールオプションを使用している場合) です。デフォルトはゼロです。

tcp_max_buf

SO_SNDBUF または SO_RCVBUF オプション付きでユーザが指定できるバッファサイズの最大値を指定します。この値より大きなバッファの使用を試みると、EINVAL を返して失敗します。デフォルトは 256K です。アプリケーションに必要な最大バッファサイズよりもずっと大きな値をパラメタに指定するのはお勧めできません。障害や悪影響の原因となっているアプリケーションが、カーネルメモリを不当に大きく消費しかねないからです。

tcp_host_param

このパラメタは、IP アドレス、ネットワーク、サブネットワーク、および指定されたホストとの接続に使用される特定の TCP パラメタのデフォルト値をテーブルにしたものです。テーブルを表示するには、以下のように ndd コマンドを使用します。

example# ndd /dev/tcp tcp_host_param
Hash HSP     Address         Subnet Mask     Send       Receive    TStamp
027 fc31eea4 129.154.000.000 255.255.255.000 0000008192 0000008192      0
131 fc308244 129.154.152.000 000.000.000.000 0000032000 0000032000      0
133 fc30bd64 129.154.152.006 000.000.000.000 0000128000 0000128000      1

テーブルの各要素は、ホスト、ネットワーク (サブネットマスクのオプション付き)、サブネットのどれかに加えて、デフォルトの送信バッファスペースと受信バッファスペース、タイムスタンプを使用するかどうかを示すフラグを表示します。

テーブル内で指定されているデフォルト値は、アクティブな接続とパッシブな接続 (connect()listen()) の両方に使用できます。ホストアドレス全体、サブネット、ネットワークの順で、検出された最適な一致が使用されます。サブネットの認識が有効に動作するためには、サブネットのネットワークにサブネットマスクを指定するエントリがなければなりません。

上のテーブルの例が示す内容は、以下のとおりです。

テーブルの要素を追加または削除するには、以下のように ndd を使用します。


ndd -set /dev/tcp tcp_host_param '<command>'
<command> は次のどちらかです。


 
lt;ipaddr>	[ mask <ipmask>] [ sendspace <integer> ]
				[ recvspace <integer> ] [ timestamp { 0 | 1 } ]

または


<ipaddr> delete

たとえば、上のテーブルを作成するには、次のように指定します。

example# ndd -set /dev/tcp tcp_host_param '129.154.0.0
mask 255.255.255.0 sendspace 8192 recvspace 8192'
            
 
example# ndd -set /dev/tcp tcp_host_param
'129.154.152.0 sendspace 32000 recvspace 32000'
           
 
example# ndd -set /dev/tcp tcp_host_param
'129.154.152.6 sendspace 128000 recvspace 128000 
timestamp 1'
 

削除するには、次のように指定します。


 
example# ndd -set /dev/tcp tcp_host_param '129.154.152.6 delete'
	 
example# ndd -set /dev/tcp tcp_host_param '129.154.152.0 delete'
 
example# ndd -set /dev/tcp tcp_host_param '129.154.0.0	 delete'
 

ネットワークとサブネットを指定するには、ホストビットをゼロにしておきます。エントリ追加用の構文は、既存エントリの修正にも使用できます。

tcp_host_param テーブルからの送受信スペースの値が使用されるのは、それらの値がユーザが設定した (または、tcp_xmit_hiwattcp_recv_hiwat から取得した) 値よりも大きい場合に限られます。したがって、スループット向上のためにユーザが大きな値を指定することが可能で、それらの値が誤って縮小されることはありません。

tcp_host_param テーブルのタイムスタンプ値が 1 の場合、接続を開始したときに選択したホストにタイムスタンプオプションが送信されます。ただし、値が 0 の場合でも、tcp_tstamp_alwaystcp_tstamp_if_wscale オプションの設定により、タイムスタンプオプションが送信されることがあります。