Java Programming 2015 – 10

Javaのネットワーク機能

TCP/IP

通信プロトコルは階層分けされています。

上位から下位に向かって並べると次のようになります。上位層は下位層の上で動作します。
– アプリケーション層・・・HTTP、SMTP、FTPなど
– トランスポート層・・・TCP、UDP
– インターネット層 ・・・IP
– ネットワークインターフェイス層・・・イーサネット、WiFi

Socketを使う

通信を使うプログラムを作成するには、ソケットを使います。

IPアドレス

IPv4(インターネットプロトコルバージョン4)では、4つのバイト値(0〜255)でアドレスを表現します。
つまり、0.0.0.0〜255.255.255.255まで表現できます。近年は、情報家電の普及に伴ったIPアドレスの枯渇問題で、6桁の新しいIPv6(インターネットプロトコルバージョン6)も併用して使われるようになっています。

IPv4は次のようにクラス分けされています。コンピュータをネットワークの世界ではホスト(host)といっています。
– クラスA・・・先頭1バイトがネットワークを表し、残り3バイトがホストに使われます
– クラスB・・・先頭2バイトがネットワークを表し、残り2バイトがホストに使われます
– クラスC・・・先頭3バイトがネットワークを表し、残り1バイトがホスト使われます

実際には、クラスCをさらに細分化したものも利用されています。

ネットマスクとブロードキャストアドレス

近年のネットワークでは、ネットワーク全体を表すアドレス(ネットワークアドレス)として、ホスト部をすべて0にしたものが使われます。
また、ホスト部をすべて255にしたものは、ブロードキャストアドレスと言って、ネットワーク全体に情報を送りたいときに使います。

プライベートアドレス

組織の内部で使うアドレスをプライベートアドレス、外部に出て行くためのアドレスをグローバルアドレスといいます。
プライベートアドレスは、以下の3つの範囲です。()内の/以降の値はマスクのビット数を表しています。

  • クラスA・・・10.0.0.0~10.255.255.255(10.0.0.0/8)
  • クラスB・・・172.16.0.0~172.31.255.255(172.16.0.0/12)
  • クラスC・・・192.168.0.0~192.168.255.255(192.168.0.0/16)

ローカルループバック

127.0.0.1のアドレスは、ローカルループバックと言って、OS内部で通信を行います。
ですから、このアドレスを使えばネットワークカードなどがないPCなどでも通信のプログラムは動作します。

ポート番号

ポート番号は、通常は2バイトで表される、データをやり取りするための口になります。
ですから、番号は0〜65535になります。1024以下のポート番号は一般に予約されているので、アプリケーションでは使うべきではありません。
また、いくつかの番号は予約されていて、ウェルノウンポート(well-known port)と呼ばれます。
例としていくつか挙げておきます。

  • 80・・・HTTP
  • 20/21・・・FTP
  • 22・・・SSH
  • 23・・・telnet
  • 25・・・SMTP

TCPとUDP

TCPによる通信では、通信のたびに結果をクライアントが送り返すので信頼性のある通信が可能になります。
UDPによる通信は、相手先に送りつけるだけになりますので、信頼性には欠けるものの高速な通信が可能になります。

TCPによる通信

通信をするプログラムでは、基本的にサーバー->クライアントの順で起動します。
ここでは、サーバへ接続し、キーボードから入力したものが返ってくる、エコーサーバーと呼ばれるプログラムを作成していきます。

クライアント

TCP(Transmission Control Protocol)を使ったネットワーククライアントのサンプルです。

サーバー

TCPを使ったネットワークサーバのサンプルです。

UDPによる通信

クライアント

UDP(User Datagram Protocol)を使ったネットワーククライアントのサンプルです。

サーバー

UDPを使ったネットワークサーバのサンプルです。

オブジェクト自体をやりとりする

やりとるするオブジェクト

やりとりするオブジェクトのサンプルです。
Javaでは、 transientキーワードを指定すると、データがシリアライズされませんので、送受信されなようにすることができます。

クライアント

TCP(Transmission Control Protocol)を使って、オブジェクトを送るサンプルです。

サーバー

TCPを使って、オブジェクトをやりとりするネットワークサーバのサンプルです。

Digiprove sealCopyright secured by Digiprove © 2015

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください