こっそり聞きたいネットワークのキホン(第16回)

ネットワークプログラミングの基礎知識と処理の流れ

 メールやウェブページの閲覧など、日常生活や仕事でインターネットを利用するのが当たり前の時代になりました。インターネットを理解する上で、ネットワークプログラミングを理解することは非常に重要です。しかし、ネットワークプログラミングを理解するには、基礎となるネットワーク技術や処理の流れについて理解する必要があります。そこでこの記事では、ネットワークに関する基本的技術の意味とネットワークプログラミングの処理の流れについて解説します。

ネットワークプログラミングの基礎知識

 ネットワーク技術に関する知識を習得することは、ネットワークプログラミングを習得するための重要な要素となります。ここではネットワーク技術の基礎的な知識を解説いたします。

クライアントサーバーシステム

 ネットワークでのやりとりには「クライアント」と「サーバー」の2者が登場し、相互間でデータのやりとりをします。この方式をクライアントサーバーシステムと呼び、「クライアント」と「サーバー」の両者にプログラムを作成する必要があります。

 「クライアント」は利用者が触る端末のことを指し、「サーバー」に対して要求を送り、「サーバー」から取得した情報を画面などに表示させます。「サーバー」は要求に対して適切な処理を行い、「クライアント」が要求する情報を返却したり、データを保管したりします。

IP

 IPとは「Internet Protocol」の略で、通信プロトコルの一種です。プロトコルとは一連の作業を定義したものと考えておけばよいです。つまりIPは通信するための処理の一部を指します。

 通信する際にネットワークに接続されている各コンピュータに対して「IPアドレス」という住所のようなものを割り当て、手紙を出すときと同じように住所をもとに各コンピュータやサーバー間でやりとりを行います。

TCP

 TCPとは「Transmission Control Protocol」の略でこちらも通信プロトコルの一種です。TCPはIPアドレスをもとに割り出した相手先との通信時に相手との接続を確立したり切断したりします。そのような通信に関わるTCPの処理をネットワークプログラミングで行います。

ソケット

 ソケットは各ネットワーク機器が外部とやりとりする際の窓口のことを指します。IPアドレスをもとに相手先を特定し、お互いのソケットを窓口としてやりとりを行います。ネットワークプログラミングはこのソケットを介して通信する処理をプログラムするため、「ソケット通信」や「ソケットプログラミング」と呼ぶこともあります。

ネットワークプログラミングの流れ

 ここまでネットワークプログラミングの土台となる知識について解説しました。以下では前提としていた知識が実際にどのような流れで活用され、「サーバー」と「クライアント」間でデータのやりとりを行うのかを解説します。

サーバー側のネットワークプログラミング

 「サーバー」は「クライアント」から受領した要求を受けて目的のデータを「クライアント」に返却することが役割となります。以下ではその流れをもう少し詳細に解説します。

ソケットの生成

 はじめに外部とのやりとりの窓口となる「ソケット」を生成します。一般的にはソケットを介してTCP/IPのプロトコルを使用して通信するので、それらを「ソケット」に設定する必要があります。生成したソケットには識別番号が付与され、プログラムではその識別番号をもとに使用するソケットを指定します。

ソケットのバインド

 次に定義したソケットに対して、自身のIPアドレスやポート番号などの関連情報を割り当てます。この関連情報を割り当てることを「バインド」と呼びます。これを行うことで、相手となる「クライアント」がこの「サーバー」を探し当てることができるようになります。

接続要求の受付

 通信を行う際には一般的に「クライアント」が「サーバー」に対して接続を要求します。自分のコンピュータを使ってインターネットの目的のサイトにアクセスするイメージです。サーバーはクライアントからの接続要求を処理するために受付を開始します。受付を開始しているサーバーに対してのみクライアントは通信を行うことができます。

データの送受信

 「サーバー」が「クライアント」からの接続要求を受領したら、サーバー側ではクライアントの要求に対してサーバー内でデータ検索や処理を行い、目的のデータをクライアントに返却します。

切断

 無事にクライアント側にデータを送信でき、クライアント側から受信完了の通信が送られると通信の一連の流れは完了となり、ソケットの切断処理を行います。

クライアント側のネットワークプログラミング

 「クライアント」は「サーバー」に対して要求を行い、「サーバー」が返却したデータを受信する役割を担います。以下ではその流れの詳細を解説します。

ソケットの生成

 はじめは「サーバー」と同様にやりとりの窓口となる「ソケット」を生成します。こちらは「サーバー」の内容とほとんど同じなので詳細は割愛します。

ソケットのバインド

 次に定義したソケットに対して、自身のIPアドレスやポート番号などの関連情報を割り当て「バインド」を行います。これを行うことで、接続要求を受け取ったサーバーがデータを返却する際にクライアントを探し当てることが可能となります。

サーバーへの接続要求

 次に接続受付をしている「サーバー」に対して「クライアント」側から接続要求を行います。要求する際にはサーバーの住所となるIPアドレスとポート番号が必要となり、サーバー側から接続要求の受領通知を受け取るとクライアントとサーバー間のやりとりが開始します。

データの送受信処理

 接続要求が「サーバー」で受領されると「クライアント」はサーバーからのデータ返却を待ちます。そしてサーバーから送られてきたデータをソケットを介して受信し、コンピュータのソフトウェアなどが画面などに表示します。

切断

 最後はサーバーと同様に、やりとりが完了したらソケットの切断処理を行います。これによってサーバーとの通信は断たれます。

ネットワーク技術の意味と処理の流れを把握する

 ネットワークプログラミングを把握する上で、その前提となる知識や処理の流れを把握することは必須となります。細かい処理から理解しようとすると難しい内容が多く把握しづらいため、全体像から把握し、データがどのような処理を介してやりとりされるのか把握しましょう。

 上記内容が把握できれば、実際にプログラミングを行う際に、難しいコマンドが登場しても処理内容を予想することができ、結果としてプログラミングの早期習得につながります。

連載記事一覧

メルマガ登録


NTT EAST DX SOLUTION


ミライeまち.com


「ビジネスの最適解」をお届けします 無料ダウンロード資料


イベント・セミナー情報

ページトップへ

ページ上部へ戻る