Solaris のシステム管理 (IP サービス)

第 1 章 Oracle Solaris TCP/IP プロトコル群 (概要)

この章では、Oracle Solaris 実装の TCP/IP ネットワークプロトコル群を紹介します。ここでの説明は、TCP/IP の基本概念をまだよく理解していないシステム管理者およびネットワーク管理者を対象としています。このマニュアルの残りの部分では、読者がそれらの概念をよく理解していることを前提としています。

この章では、次の内容について説明します。

このリリースの最新情報

Solaris 10 5/08 以降では、モバイル IP 機能が削除されました。モバイル IP は、Solaris 10 OS 8/07 以前のリリースで利用できます。

TCP/IP プロトコル群の概要

この節では、TCP/IP に含まれるプロトコルについて詳しく説明します。ここに示す情報は概念的なものですが、各プロトコルの名前を学習できます。また、各プロトコルがどのように機能するかも理解できます。

「TCP/IP」は、「インターネットプロトコル群」を形成するネットワークプロトコルの集合を示す頭字語です。多くの書籍では、「インターネット」という用語は、プロトコル群と広域ネットワークの両方を表すものとして使用されています。このマニュアルでは、「TCP/IP」は特にインターネットプロトコル群を表し、「インターネット」は広域ネットワークとインターネットを運営する組織を表すものとします。

TCP/IP ネットワークとほかのネットワークを相互接続するには、そのネットワーク用に一意の IP アドレスを取得する必要があります。このマニュアルの執筆時点では、このアドレスはインターネットサービスプロバイダ (ISP) から取得します。

ネットワーク上のホストがインターネットのドメインネームシステム (DNS) に参加する場合は、一意のドメイン名を取得して登録する必要があります。InterNIC は、世界中のレジストリのグループによってドメイン名の登録を調整します。DNS についての詳細は、『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照してください。

プロトコル層および開放型相互接続モデル

大部分のネットワークプロトコル群は一連の層から構成されており、まとめて「プロトコルスタック」と呼ばれる場合もあります。各層はそれぞれ特定の目的のために設計されていて、送信側システムと受信側システムの両方に存在しています。1 台のシステムの特定の層は、別のシステムの「ピアプロセス」が送受信するのとまったく同じ オブジェクトを送受信します。このような動作は、問題の層の上下の層で進行していることとは独立して行われます。つまり、システムの各層は、同じシステムのほかの層から独立して、ほかのシステムの同じ層と協調して働きます。

OSI 参照モデル

ほとんどのネットワークプロトコル群は層状に構造化されています。国際標準化機構 (ISO) は構造化された層を使用する開放型相互接続 (OSI) 参照モデルを設計しました。OSI モデルは、ネットワーク活動が 7 つの層から成る構造を持つものと規定しています。各層には、1 つ以上の プロトコルが関連付けられています。層は、連携するネットワーク相互間でのすべての種類のデータ転送に共通するデータ転送操作を表します。

OSI モデルでは、プロトコル層を上 (第 7 層) から下 (第 1 層) へ並べて表します。次の表に OSI 参照モデルを示します。

表 1–1 OSI (開放型相互接続) 参照モデル

層番号 

層の名前 

説明 

アプリケーション

誰でも使用できる標準の通信サービスとアプリケーションで構成されています。 

プレゼンテーション

情報が解読可能な形で受信側システムに渡されるようにします。 

セッション

連携システム間の接続と終了を管理します。 

トランスポート

データの転送を管理します。また、受信されたデータと送信されたデータが同じになることを保証します。 

ネットワーク

ネットワーク間でのデータのアドレス指定と配送を管理します。 

データリンク

ネットワークメディアを通過するデータの転送を取り扱います。 

物理

ネットワークハードウェアの特性を定義します。 

OSI モデルで定義する概念上の操作は、特定のネットワークプロトコル群に固有のものではありません。たとえば、OSI ネットワークプロトコル群は、OSI モデルの 7 つの層をすべて実装しています。TCP/IP は、OSI モデル層のいくつかを使用し、その他の層を合併しています。その他のネットワークプロトコル、たとえば SNA では、8 番目の層が追加されています。

TCP/IP プロトコルアーキテクチャーモデル

OSI モデルは、一群のプロトコルによる理想的なネットワーク通信を定義します。TCP/IP は、このモデルに直接対応するわけではありません。TCP/IP では、複数の OSI 層が 1 つに合併されたり、まったく使用されない層があったりします。次の表は、Oracle Solaris 実装の TCP/IP の層を示しています。最上位層 (アプリケーション) から最下位層 (物理ネットワーク) まで並べてあります。

表 1–2 TCP/IP プロトコルスタック

OSI 参照の層番号 

対応する OSI 層 

TCP/IP 層 

TCP/IP プロトコルの例 

5、6、7 

アプリケーション、セッション、プレゼンテーション 

アプリケーション

NFS、NIS、DNS、LDAP、telnetftprloginrshrcp、 RIP、RDISC、SNMP、その他

トランスポート  

トランスポート

TCP、UDP、SCTP 

ネットワーク 

インターネット

IPv4、IPv6、ARP、ICMP 

データリンク 

データリンク

PPP、IEEE 802.2 

物理 

物理ネットワーク

Ethernet (IEEE 802.3) トークンリング、RS-232、FDDI、その他  

TCP/IP プロトコル層と相当する OSI モデルを表に示します。また、TCP/IP プロトコルスタックの各レベルで使用可能なプロトコルの例も示します。通信トランザクションに関与する各システムは、それぞれ固有の実装によるプロトコルスタックを実行します。

物理ネットワーク層

「物理ネットワーク層」は、ネットワークで使用されるハードウェアの特性を規定します。たとえば、通信メディアの物理特性を規定します。TCP/IP の物理層はハードウェア規格を意味しています。たとえば、Ethernet ネットワークメディアの仕様である IEEE 802.3 や、標準ピンコネクタの仕様である RS-232 などです。

データリンク層

「データリンク層」は、パケットのネットワークプロトコルの種類 (この例ではTCP/IP) を識別します。データリンク層は、エラー制御と「フレーミング」も行います。データリンク層プロトコルの例としては、Ethernet IEEE 802.2 フレーミングおよびポイントツーポイントプロトコル (PPP) フレーミングがあります。

インターネット層

ネットワーク層」または「IP 層」とも呼ばれるインターネット層は、ネットワークのためにパケットを送受信します。この層には、強力なインターネットプロトコル (IP)、アドレス解決プロトコル (ARP)、インターネット制御メッセージプロトコル (ICMP) が組み込まれています。

IP プロトコル

IP プロトコルとその関連する経路制御プロトコルは、TCP/IP 群全体でもっとも重要であると言えるかもしれません。IP は次の機能を受け持ちます。

Oracle Solaris は、IPv4 アドレス指定形式と IPv6 アドレス指定の両方をサポートしています。これらの形式については、このマニュアルで説明します。インターネットプロトコルについて言及するときに混乱を避けるため、次の規則を適用します。

ARP プロトコル

アドレス解決プロトコル (ARP) は、概念上、データリンク層とインターネット層の間に存在します。ARP は、Ethernet アドレス (48 ビット長) を既知の IP アドレス (32 ビット長) にマッピングし、IP はこの情報に基づいてデータグラムを正しい受信側システムに向けることができます。

ICMP プロトコル

インターネット制御メッセージプロトコル (ICMP) は、ネットワークのエラー状況を検出し、レポートします。ICMP は次の事項について報告します。

第 8 章TCP/IP ネットワークの管理 (手順)には、ICMP をエラー検出に使用する Oracle Solaris コマンドに関するより詳しい情報が含まれています。

トランスポート層

TCP/IP の「トランスポート層」は、データ受信の肯定応答を交換し、消失したパケットを再送することによって、パケットが順番にかつエラーなしで到着することを保証します。このような通信は、「エンドツーエンド」と呼ばれます。このレベルのトランスポート層プロトコルには、伝送制御プロトコル (TCP)、ユーザーデータグラムプロトコル (UDP)、およびストリームコントロール伝送プロトコル (SCTP) があります。TCP と SCTP は、信頼性の高いエンドツーエンドサービスを提供します。UDP は、信頼性の低いデータグラムサービスを提供します。

TCP プロトコル

TCP を使用すると、アプリケーションは物理回路で接続されているかのように、互いに通信できます。TCP は、独立したパケットの形ではなく、文字単位で転送されているような形でデータを送信します。この転送は、次の点で構成されます。

TCP は、転送するデータにヘッダーを添付します。このヘッダーには、送信側システム上のプロセスが受信側システム上の対等プロセスに接続できるようにするための、多数のパラメータが含まれています。

TCP は、送信側ホストと受信側ホストとの間に終端間接続を確立することにより、パケットが宛先に到達したことを確認します。したがって、TCP は、「信頼性の高い接続指向型」プロトコルとみなすことができます。

SCTP プロトコル

SCTP は、TCP から使用可能なアプリケーションに同じサービスを提供する、信頼性の高い接続指向のトランスポート層プロトコルです。さらに、SCTP は、複数のアドレスを持つ、つまり「マルチホーム」のシステム間の接続をサポートできます。送信側システムと受信側システム間の SCTP 接続は、「アソシエーション」と呼ばれます。アソシエーションのデータは、グループ別に整理されます。SCTP はマルチホームをサポートしているため、一部のアプリケーション、特に電気通信業界で使用されるアプリケーションは、TCP ではなく SCTP で実行する必要があります。

UDP プロトコル

UDP は、データグラム送信サービスを提供します。UDP は、受信側ホストと送信側ホストとの間の接続の検査は行いません。UDP は接続の確立と検査を省略するので、少量のデータを送信するアプリケーションは、UDP を使用します。

アプリケーション層

「アプリケーション層」は、だれでも使用できる標準インターネットサービスとネットワークアプリケーションを定義します。これらのサービスとトランスポート層の両方の働きにより、データの送受信が行われます。アプリケーション層のプロトコルは多数存在します。次に、アプリケーション層プロトコルの例を示します。

標準 TCP/IP サービス

UNIX の “r” (リモート) コマンド

UNIX の “r” コマンドを使用すると、ユーザーは自分のローカルマシンからコマンドを発行して、そのコマンドをリモートホストで実行できます。この種のコマンドには次のものがあります。

これらのコマンドの使用方法は、rcp(1)rlogin(1)、および rsh(1) のマニュアルページに記載があります。

ネームサービス

Oracle Solaris は、次のネームサービスを提供します。

ディレクトリサービス

Oracle Solaris は、Sun ONE (Sun Open Net Environment) およびほかの LDAP Directory Server を使用する場合、LDAP (Lightweight Directory Access Protocol) をサポートします。ネームサービスとディレクトリサービスの違いは、拡張機能の差です。ディレクトリサービスはネームサービスと同じ機能のほかに、追加機能を提供します。『Solaris のシステム管理 (ネーミングとディレクトリサービス : DNS、NIS、LDAP 編)』を参照してください。

ファイルサービス

NFS アプリケーション層プロトコルは、Oracle Solaris 用にファイルサービスを提供します。NFS サービスに関する詳しい情報は、『Solaris のシステム管理 (ネットワークサービス)』に記載されています。

ネットワーク管理

シンプルネットワーク管理プロトコル (SNMP) を使用すると、ネットワークのレイアウトおよび主要マシンの状態を参照できます。また、グラフィカルユーザーインタフェース (GUI) ベースのソフトウェアで複雑なネットワーク統計情報を参照できます。多くの企業が、SNMP を実装するネットワーク管理パッケージを提供しています。

経路制御プロトコル

経路制御情報プロトコル (RIP) およびルーター発見サーバープロトコル (RDISC) は、2 つとも、TCP/IP ネットワーク用の経路制御プロトコルです。Oracle Solaris 10 で使用できる経路制御プロトコルの一覧については、表 5–1 および表 5–2 を参照してください。

TCP/IP プロトコルがデータ通信を行う方法

ユーザーが TCP/IP アプリケーション層プロトコルを使用するコマンドを発行すると、一連のイベントが開始されます。ユーザーのコマンドまたはメッセージはローカルシステム上の TCP/IP プロトコルスタックを通過します。次に、ネットワークメディアを通過して、リモートシステムのプロトコルに到達します。送信側ホストの各層のプロトコルにより、オリジナルのデータに情報が付加されていきます。

送信側ホストの各層のプロトコルは、受信側ホストのそれぞれの対等プロトコルとの間で対話します。図 1–1 に、この対話を示します。

データのカプセル化と TCP/IP プロトコルスタック

パケットとは、ネットワーク間で転送される情報の基本単位のことです。基本パケットは、送信側システムと受信側システムのアドレスを含むヘッダー、転送されるデータを含む本体、つまり「ペイロード」で構成されます。パケットが TCP/IP プロトコルスタックを通過するとき、各層のプロトコルは、基本ヘッダーにフィールドを追加したり、そこからフィールドを削除したりします。送信側システムのプロトコルがパケットヘッダーにデータを追加する場合、そのプロセスを「データのカプセル化」と呼びます。また、変更後のパケットを表す言葉は、次の図に示すように層によって異なります。

図 1–1 パケットが TCP/IP スタックを通過する方法

この図では、送信側ホストから受信側ホストへ、パケットが TCP/IP スタックを通過する方法を示しています。

この節では、パケットのライフサイクルについて要約します。ライフサイクルは、ユーザーがコマンドを発行するか、またはメッセージを送信することによって開始します。受信側システムの該当アプリケーションがパケットを受信するとライフサイクルは終了します。

アプリケーション層: 通信の発生

パケットの処理は、あるシステム上のユーザーがリモートシステムへのアクセスを必要とするメッセージの送信やコマンドの発行をしたときから始まります。アプリケーションプロトコルは、対応する TCP か UDP のどちらかのトランスポート層プロトコルがそのパケットを取り扱えるように、パケットの形式を設定します。

たとえば、あるユーザーが rlogin コマンドを発行して、リモートシステムにログインしようとしたとします (図 1–1 を参照)。rlogin コマンドは TCP トランスポート層プロトコルを使用します。TCP は、コマンド内の情報を含むデータをバイトストリーム形式で受け取るものと仮定しています。したがって、rlogin はこのデータを TCP ストリームとして送信します。

トランスポート層: データのカプセル化の開始

データがトランスポート層に到達すると、トランスポート層のプロトコルは、データのカプセル化プロセスを開始します。トランスポート層は、アプリケーションデータをトランスポートプロトコルのデータ単位にカプセル化します。

トランスポート層プロトコルは、転送ポート番号で区別される送信側アプリケーションと受信側アプリケーション間に仮想のデータフローを作成します。ポート番号は、メモリー内のデータ送受信専用の場所である「ポート」を識別します。さらに、トランスポートプロトコル層は、信頼性の高い順序どおりのデータ転送など、その他のサービスを提供する場合もあります。最終的な結果は、TCP、SCTP または UDP のどれで情報を処理したかによって異なります。

TCP のセグメンテーション

TCP はデータを確実に受信側ホストに送信できるため、「接続指向」のプロトコルと呼ばれます。図 1–1 は、TCP プロトコルがどのように rlogin コマンドからのストリームを受信するかを示しています。次に TCP は、アプリケーション層から受け取ったデータをセグメントに分割し、各セグメントにヘッダーを添付します。

セグメントヘッダーには、送信側と受信側のポート、セグメント順序に関する情報、「検査合計」と呼ばれるデータフィールドが含まれています。両方のホストの TCP プロトコルがこの検査合計データを使用して、データがエラーなしに転送されたかどうかを判別します。

TCP 接続の確立

TCP は、受信側システムでデータを受信する準備ができているかどうかを、セグメントを使用して判断します。まず、送信側 TCP は「SYN」というセグメントを受信側ホストの TCP プロトコルに送信して、接続を確立することを知らせます。次に、受信側 TCP は「ACK」というセグメントを戻して、セグメントを正しく受信したことを知らせます。送信側 TCP は新たな ACK セグメントを送信して、それからデータの送信を開始します。このような制御情報の交換を「3 相ハンドシェーク」と呼びます。

UDP パケット

UDPは「接続のない」プロトコルです。TCP の場合と異なり、UDP は、受信側ホストにデータが到達したかどうかを確認しません。その代わりに、UDP は、アプリケーション層から受信したメッセージを「UDP パケット」の形式に設定します。UDP は、各パケットにヘッダーを付加します。ヘッダーには、送信側ポートと受信側ポート、パケットの長さを示すフィールド、検査合計が含まれます。

送信側の UDP プロセスは、受信側ホストのピア UDP プロセスにパケットを送信しようとします。アプリケーション層は、受信側 UDP プロセスが、パケットを受信したことを示す肯定応答を戻すかどうかを判別します。UDP は受領の通知を必要としません。UDP は 3 相ハンドシェークを使用しません。

インターネット層: パケットの送信準備

トランスポートプロトコル TCP、UDP、および SCTP がセグメントとパケットをインターネット層に渡すと、これらのセグメントとパケットはインターネット層の IP プロトコルによって処理されます。IP は、これらのセグメントとパケットを「IP データグラム」と呼ばれる単位に形式化して、送信できるように準備します。次に、IP はデータグラムの IP アドレスを判別して、受信側ホストへの効率的な配送ができるようにします。

IP データグラム

IP は、TCP や UDP が追加した情報に加えて、「IP ヘッダー」をセグメントまたはパケットのヘッダーに添付します。 IP ヘッダーには、送信側ホストと受信側ホストの IP アドレス、データグラムの長さ、データグラムのシーケンス番号が含まれます。これらの情報が付加されるのは、データグラムがネットワークパケットとしての許容バイトサイズを超過してフラグメント化が必要になった場合に備えるためです。

データリンク層: フレーミングの実行

データリンク層のプロトコル (PPP など) は、IP データグラムを「フレーム」という形式に設定します。これらのプロトコルは、第 3 のヘッダーとフッターを付加することにより、データグラムを「フレーミング」します。フレームヘッダーには、フレームがネットワークメディアを通過するときのエラーを検査するための、「巡回冗長検査」(CRC) フィールドが含まれています。次に、データリンク層は物理層にフレームを渡します。

物理ネットワーク層: フレームの送受信

送信側ホストの物理ネットワーク層は、フレームを受信し、IP アドレスをネットワークメディアに適切なハードウェアアドレスに変換します。次に、物理ネットワーク層は、フレームをネットワークメディアに送り出します。

受信側ホストでのパケットの取り扱い

受信側ホストに到着したパケットは、送信されたときとは逆の順番で、TCP/IP プロトコルスタックを通り抜けます。このパスを図 1–1 に示します。受信側ホストの各プロトコルは、送信側ホストの対等プロトコルがパケットに付加したヘッダー情報を取り除きます。この処理の順序を次に示します。

  1. 物理ネットワーク層は、フレーム形式のパケットを受信します。パケットの CRC を計算し、データリンク層にフレームを送信します。

  2. データリンク層は、フレームの CRC が正しいことを確認すると、フレームのヘッダーとその CRC を取り除きます。最後に、データリンクプロトコルは、インターネット層にフレームを送ります。

  3. インターネット層は、ヘッダーにある情報を読み取って、転送を識別します。そして、パケットがフラグメントであるかどうかを判別します。その転送がフラグメントである場合は、IP は、フラグメントを組み立て直して、オリジナルのデータグラムに戻します。そして、IP ヘッダーを取り除いてから、データグラムをトランスポート層プロトコルに渡します。

  4. トランスポート層 (TCP、SCTP および UDP) は、ヘッダーを読み取って、どのアプリケーション層プロトコルでデータを受信する必要があるかを決定します。次に、TCP、SCTP または UDP は、自分に関連するヘッダーを取り除き、メッセージまたはストリームを受信アプリケーションに送信します。

  5. アプリケーション層はメッセージを受信して、送信側ホストから要求された操作を実行します。

TCP/IP 内部トレース機能

TCP/IP は、RST パケットにより接続が終了したときに、TCP 通信のログを記録することで内部トレースをサポートします。RST パケットが送信または受信されたときに、直前に送受信された最大 10 パケットの情報が接続情報とともにログに記録されます。

TCP/IP とインターネットについてもっと詳しく知るには

TCP/IP やインターネットに関する情報は、幅広く入手できます。このマニュアルで説明していない特別な情報は、次に挙げる情報源からも入手できます。

TCP/IP に関するコンピュータ関連の書籍

TCP/IP とインターネットに関する市販の書籍は、お近くの書店またはオンライン書店で入手できます。次の 2 冊は、TCP/IP に関する基本的な書籍と考えられています。

TCP/IP とネットワーク設定に関する Web サイト

インターネットには、TCP/IP プロトコルとその管理に特化した多数の Web サイトおよびユーザーグループがあります。Oracle Corporation などの多くの製造元は、一般的な TCP/IP 情報に関する Web ベースの参考情報を提供しています。次に、TCP/IP 情報と一般的なシステム管理情報に関する有益な Web 上の参考情報を示します。次の表に、関連する Web サイトの一覧と、各サイトが提供するネットワーク情報についての説明を示します。

Web サイト 

説明 

The Internet Engineering Task Force (IETF) の Web サイト

IETF は、インターネットのアーキテクチャーおよび管理に対して責任を負う団体です。IETF の Web サイトには、IETF のさまざまな活動に関する情報が含まれています。また、IETF の主な出版物へのリンクも含まれています。  

Oracle Corporation の BigAdmin ポータル

BigAdmin は、Sun コンピュータの管理に関する情報を提供しています。このサイトには、FAQ、参考情報、ディスカッション、文書へのリンクなど、ネットワーク設定を含めた Oracle Solaris 10 の管理に関する情報があります。 

RFC と Internet Draft

インターネットエンジニアリングタスクフォース (IETF) ワーキンググループは、「Requests for Comments」(RFC) として知られる標準文書を公開しています。作成途中の標準は、「Internet Draft」で公開されています。IAB (Internet Architecture Board) は、パブリックドメインで公開する前にすべての RFC を承認する必要があります。通常、RFC と Internet Draft は、開発者および非常に技術力の高い読者向けです。しかしながら、TCP/IP に関する項目に関係する RFC の多くには、システム管理者にとって有益な情報が含まれています。これらの RFC は、このマニュアルのさまざまな場所で引用されています。

通常、参考情報 (FYI) 文書は RFC のサブセットとして公開されています。FYI には、インターネット規格を取り扱うような内容は含まれていません。むしろ、インターネットのもっと一般的な性格に関する情報を扱うものです。たとえば、FYI 文書には、TCP/IP の入門書や資料の目録、また、あらゆるインターネット関連のソフトウェアツールを網羅した要覧、インターネットと一般的なネットワーキングに関する用語集などが含まれています。

このマニュアルおよび Oracle Solaris System Administrator Collection のほかのマニュアルのさまざまな場所に、関連する RFC への参照が含まれています。