データ伝送web講座

9. 通信プロトコル

line

9.3. TCP/IP

9.3.(4) トランスポート層

9.3.(4-A) TCP と UDP

◆ トランスポート層 のプロトコルは、形式的に、トランスポート層に属する ICMP を除いて、2 種類あります(図.41)。

[図.41] TCP と UDP

TCP と UDP

◆ IP 層以下が、相隣る 2 点間のプロトコルであるのに対して、TCP およびそれ以上の層は、最終 2 点間、すなわち、ホスト対ホストのやり取りです。そして、IP 層以下が、コネクションレス、すなわちデータグラムであるのに対して、TCP は、コネクションタイプです。
IP 層以下は、高速で動作するために、データグラムを使用し、それによる信頼性の低下を、TCP で回復しようという考え方です。
しかし、接続/切断処理を行うために、オーバーヘッドが掛かります。このため、短い制御情報などのやり取りを、効率よく行うことができません。UDP は、データグラムですから、制御情報などの、短い情報を送るのに、向いています(図.42)。最近は、TCP/IP で、音声や、動画像など、高速のリアルタイムデータをを送るのに、UDP が利用されています。ポートアドレスについては後述します。

[図.42] UDP ヘッダー

UDP ヘッダー

9.3.(4-B) コネクション

◆ TCPは、上位のプロセス (アプリケーション層)から、コネクション開設要求を受けて、コネクション(接続処理)を行います(図.43)。プロセスは、多重化することができます。すなわち、ホストは、TCP/IP で、複数のアプリケーションを、同時並行処理することができます。

[図.43] TCP のプロセス間通信

TCP のプロセス間通信

◆ TCP がやり取りするパケットを、セグメント と言います。セグメントヘッダを、図.44 に示します。

[図.44] セグメント ヘッダ

セグメント ヘッダ

◆ プロセス間の論理リンクをポート と言います。ポートには、ポートアドレス が付けられていて、ポートアドレスによってプロトコルの内容が、識別されます。接続要求を行うためには、宛先の、ポートアドレスも必要です。したがって、相手のポートアドレスを、何らかの方法で知っている必要があります。
TCP では、広く汎用的に使われている、アプリケーション層のプロトコル、たとえば、TELNETFTPSNTP などのサーバーには、規格によって、固定的な、ポートアドレスが決められています(図.45)。これを、ウェルノウンポート といいます。

[図.45] ウェルノウンポートの例

ウェルノウンポートの例

◆ サーバープロセスは、クライアントからの要求を、随時受け付けられるように、予め、自ホスト内で、コネクションをオープンしておきます。これを、パッシブオープン といいます(図.46)。図の(1)〜(3)は、パッシブオープンの手順です。

[図.46] パッシブオープンとアクティブオープン

パッシブオープンとアクティブオープン

◆ クライアントは、サーバーに処理を依頼するとき、相手サーバーに対して、コネクションをオープンします。これを、アクティブオープン と呼びます。アクティブオープンの手順は、(4)〜(10)です。アクティブオープンを行うためには、自分のポートアドレスと、相手のポートアドレスとの、両方が必要です。サーバーのポートアドレスは、サーバーの種類によって決まる、固定のアドレスです。自身のクライアントのポートアドレスは、その都度、OS から割り当ててもらいます。
ポートアドレスは、ホスト内のアドレスですから、当然、他のホストとアドレスの重複があり得ます。しかし、IP アドレスは、唯一であり、他との重複はあり得ません。したがって、IP アドレスと、ポートアドレスとを組み合わせたアドレスは、唯一であり、他と重複することはありません。この、IP アドレスと、ポートアドレスとを組み合わせたもののことを、ソケット といい、IP アドレスと、ポートアドレスとを組み合わせたアドレスのことを、ソケット番号 と言います(図.47)。

[図.47] ソケット

ソケット

9.3.(4-C) 確認動作とフロー制御

◆ コネクション確立と、その後の、データやり取りの流れを、図.48 に示します。ここで、SYN ACK は、セグメントの種類を表わすコードビットです。SYN はコネクション確立要求、ACL は応答を表わします。図に示すように、コネクション確立要求(SYN の発行)は、双方向に行います。

[図.48] セグメントのやり取り

セグメントのやり取り

◆ ただし、図.48 のやり方では、効率が悪いので、データをまとめて送る、効率のよい方式もあります(図.49)。

[図.49] データをまとめて送る

データをまとめて送る

◆ セグメントヘッダには、シーケンス番号 と、確認応答番号 とがあります。送信するデータには、送信順に、シーケンス番号が付けられます。その送信のに対する応答(ACK)には、受け取った最後のシーケンス番号に 1 を加えた値、すなわち次に受け取るべき、シーケンス番号を、確認応答番号として返します。
順序番号によって、各種の誤りをチェック/訂正することができ(図.50)、信頼性の高いやり取りを行います。TCP/IP は、この他にも、信頼性や使いやすさをアップさせる、各種の機能があります。

[図.50] シーケンス番号のチェック

シーケンス番号のチェック

9.3.(5) アプリケーション層

◆ TCP/IP の幾つかのアプリケーション層のプロトコルを、簡単に紹介します。

9.3.(5-A) TELNTE

◆ TCP/IP の初期は、OS にユニックスを使用するコンピュータが、ほとんどで、それを多数の人が共用していました。そのコンピュータの遠隔ログイン に使用されたのが、TELNET です(図.51)。現在でも TELNET は使用されており、WINDOWS でも使用できます。しかし、TELNET は、CUI(キャラクタユーザーインターフェース)です。最近は、ほとんどが、GUI(グラフィカルユーザーインターフェース)ですから、TELNET は、一般的には、利用されていません。

[図.51] TELNET

TELNET

9.3.(5-B) F T P

◆ FTP は、あるホスト上のファイルを別のホストにコピーします。現在でも、インターネット上のファイル転送サーバーから、ファイルをダウンロードしたり、ホームページをウェブサーバーにアップロードするのに利用されています(図.52)。FTP では、コマンド転送用と、データ転送用とに、2 つのポートを使用します。

[図.52] F T P

F T P

9.3.(5-C) SMTP/POP

◆ 電子メールは、ホームページと並んで、最も広く利用されているサービスです。常時接続のホストでは、SMTP でメールをやり取りできます(図.53)。

[図.53] SMTP によるやり取り

SMTP によるやり取り

◆ しかし、電子メールをやり取りするパソコンは、常時接続とは限りません。常時接続ではないパソコンは、メールサーバーを利用する必要があります(図.54)。メールサーバーは、各所(大規模な事業所や、プロバイダなど)に設けられています。パソコンは、最寄のメールサーバを利用します。送信側は、SMTP によって、最寄のメールサーバーに、メールを送ります。メールは、幾つかのメールサーバーを経由して、受信者の最寄のメールサーバーに届きます。受信者は、最寄のメールサーバーから、POP (または IMAP)によってメールを読み出します。

[図.54] メールサーバを使用する

メールサーバを使用する

9.3.(5-D) HTTP

◆ ホームページは、ウェブサーバーを使用します。転送には、HTTP を利用します(図.55)。HTTP は、1 ページ分のリクエストを出し、そのページを送れば、終了します。このため、複数のページに跨って利用する必要があるデータは、クッキー、CGI などを使用する必要があります。クッキー は、クライアント側に、CGI はサーバー側にデータを保存します。

[図.55] H T T P

H T T P

◆ 図では、ウェブサーバーとブラウザが直結されていますが、通常は、中間にプロキシ が入ります。プロキシは、インターネット側に置かれるものと、ユーザー側に設置するものとがあります。プロキシは、ウェブを 1 時的に蓄えます。プロキシによって、ウェブへのアクセスを高速化することや、インターネットワーク上のトラフィックを軽減することができます。また、ユーザー側に設置するプロキシは、セキュリティを高めることにも利用されます。

9.3.(5-E) D N S

◆ 直接ユーザーが利用する、アプリケーションの他に、各種のサービスプロトコルがあります。その代表的な例が、DNS です。ユーザーが、インターネットのサーバーにアクセするためには、IP アドレスが、必要です。しかし、数字の羅列は、覚え難く、便利ではありません。IP アドレスの代わりに、使いやすい言葉を使用した名称を使います。それが、ドメイン(ドメイン名)です。しかし、実際に送信するためには、IP アドレスが必要です。ドメインを、IP アドレスに変換するサーバーが、DNS です。
ドメインは、階層構造になっています。DNS も、ドメインの階層に従った、階層を作っています(図.56)。

[図.56] DNS の構成

DNS の構成

◆ 各 DNS は、自分の直上の DNS の IP アドレスを知っており、いもづる式に辿って調べます。ただし、階層数が多いと、階層を辿るのに時間が掛かり過ぎます。実際には、DNS の階層数は、ドメインの階層数よりも少なくなっています。
なお、DNS は、IP アドレスから、ドメインを調べる、逆引きも可能です。

9.3.(5-F) ルータ

◆ ここで、ルータ について解説します。ルータは、接続されているネットワークに対しては、ノードとして働きます(図.57)。ノードとして、データグラムを受信し、それを、バッファリングした後、送信を行います。

[図.57] ルータ

ルータ

◆ したがって、そのためのオーバーヘッドが掛かり、スループットレスポンスタイム、共に制約されます。スループットの制約から、バッファに待ち行列ができます。バッファは、充分な容量を持たせますが、それでも、オーバーフローを起こす恐れがあります(図.58)。

[図.58] バッファのオーバーフロー

バッファのオーバーフロー

◆ オーバーフローしたときは、そのデータグラムは廃棄されます。そして、廃棄したことを、ICMP で、送信元に通知します。送信元では、この通知を受け取ると、データグラムの送信時間間隔を延ばします。
ルータにおけるバッファリングは、図.59 に示すように、2 重バッファリングになります。

[図.59] ルータにおける 2 重バッファリング

ルータにおける 2 重バッファリング

◆ 各ネットワークから、受信したデータグラムは、先ず、バッファ(5)に受け入れます。(5)のデータグラムは、ネットワーク層のルーティング規則に基づいて、(1)〜(4)のバッファに収容された後、各ネットワークに送信します。
ルータは、セキュリティなどの観点から、たとえば、特定の宛先アドレスや、送り元アドレスなどを判定して、そのデータグラムの、通過を抑える、関所の役割を持たせることができます(図.60)。この、関所の機能を、さらに強化したものが、ファイアウォール です。

[図.60] 関所の機能を持たせる

関所の機能を持たせる


目次に戻る   前に戻る   次に進む