TCP/IPの復習

分散コンピューティング

ネットワークで接続された複数のコンピュータが分散して処理をすることを 分散コンピューティング と呼びます。 分散コンピューティングのためには、それぞれのコンピュータのネットワークを介した通信を ネットワークプログラミング によって制御する必要があります。

クライアントサーバーモデル

クライアントサーバーモデル は分散コンピューティングの一形態です。 クライアントサーバーモデルでは、下図のようにサービスを提供する サーバー とサービスを受ける クライアント が協調してなんらかの処理を行います。

client-server (月江伸弘著「徹底攻略 基本情報技術者教科書」より)

サーバーとクライアントはあくまでもソフトウェア的な処理の分類であるため、サーバーとクライアントが同一のコンピュータで動く場合もあります。 本講義中でも、ほとんどのケースではサーバープログラムとクライアントプログラムの両方を皆さんの使用しているPC上で実行することになります。

プロトコル

コンピュータやプログラム同士がネットワークを介して通信を行うためには、どのような形式や手順でデータの送受信を行うかルールをあらかじめ決めておかなければいけません。 そのようなルールのことを プロトコル と呼びます。 同じプロトコルに従ったコンピュータやプログラム同士のみがネットワークを介して通信することができます。

プロトコルスタック

例えば「メールを送る」というようなアプリケーションにおいても、コンピュータネットワークで通信をするためには、どのように宛先の機器やアプリケーションを特定し、どのようにデータを表現する0-1のバイナリ列を電気信号や電波で表して送受信するかなどを考えなければなりません。 もしメールやWeb、ファイル転送などの様々なアプリケーションそれぞれで独自にそのようなプロトコル全てを策定し実装しようとすると大変な手間がかかります。 そのような問題を解消するために、プロトコルを階層化した プロトコルスタック という考え方が取り入れられています。 プロトコルを階層化することで、アプリケーション等の上位のレイヤーは、データがどのように宛先に届けられるかを気にすることなく、アプリケーション同士がどのように通信するかを決めればよく、また、下位のレイヤーはどのようなアプリケーションから使われているかを気にすることなく、どのようにデータを伝送するかだけを考えれば良くなります。

OSI参照モデル は、コンピュータネットワークのプロトコルスタックの理論的モデルであり、7つの階層から構成されています。 しかし、7階層は細分化されすぎているため、実用的には TCP/IP と呼ばれるプロトコルスタックが広く利用されています。 OSI参照モデルとTCP/IPの関係は下図のようになっています。

tcpip (月江伸弘著「徹底攻略 基本情報技術者教科書」より)

TCP/IP

TCP/IPでは、どの機器(コンピュータ)のどのアプリケーションと通信を行うかを決定するために IPアドレスポート番号 を使用します。 IPアドレスはインターネット層で宛先の機器を特定し、ポート番号はトランスポート層で宛先のアプリケーションを特定します。 下図はTCP/IPでのデータの送受信の様子を表しています。

example (月江伸弘著「徹底攻略 基本情報技術者教科書」より)

TCP

TCP/IPのトランスポート層では、TCPUDP を使用します。 TCPはコネクションを確立し、データの送受に失敗した場合は再送を行うこと等までプロトコルに含まれています。 一方で、UDPは送受に成功したかを気にせずにデータを送ります。 そのため、TCPを利用している場合には、データが途中で失われることをアプリケーション層で考慮する必要はありません。 UDPでは、データを確実に送受する必要がある場合には、アプリケーション層で再送信等の処理を行わなければなりません。

下図はTCPによる通信の様子を表しています。

tcp

TCPでは、はじめに スリーウェイハンドシェイク によって、クライアントからサーバーへのコネクションの確立を行います。 コネクションが確立されると、サーバーとクライアントの双方からデータの送信が行えるようになります。 TCPでデータの送信を行なった場合、受信側はデータを受信したことを送信側に伝えるためのパケットを送信します。 もし、データの送信後に時間が経っても受信側から応答がなければ、データの送信に失敗したとして再送を行います。

results matching ""

    No results matching ""