『JAVAソケット』

1489 ワード

ソケットは2台のコンピュータ間の通信にメカニズムを提供し、James GoslingがJava言語に気づく前から有名だった.Unixシステムは、ネットワークアプリケーションの開発を容易にするために、アプリケーションが通信プロトコルにアクセスするオペレーティングシステム呼び出しであるSocketソケットを発売し、プログラマーがTCP/IPプロトコルにアクセスしやすくし、様々なネットワークアプリケーションを開発している.その後WindowsにもSocketが導入され、Java言語にもソケットのプログラミングモデルが導入された.多くのプログラマーは、Java言語を使用して符号化するかどうかにかかわらず、異なるコンピュータ上のアプリケーションが互いにどのように通信するかについての低レベルの詳細を多く知りたくありません.プログラマーたちは、より理解しやすいより高度な抽象を処理することを望んでいます.Javaプログラマーは、よく知っているJavaで構築し、直感的なインタフェースを通じてオブジェクトと対話することを望んでいます.ソケットは2つの分野に存在します.私たちが避けた低級な細部と、私たちがもっと処理したい抽象層です.このチュートリアルで説明する低レベルの詳細は、抽象アプリケーションを理解するために必要な部分に限定されます.
ソケットは,OSIモデルのセッション層にほぼ存在する.セッションレイヤは、その上から適用されるレイヤとその下のリアルタイムデータ通信レイヤとの間に挟まれる.セッション・レイヤは、2台のコンピュータ間のデータ・ストリームの管理と制御サービスを提供します.このレイヤの一部として、ソケットは、導線からビットおよびバイトを取得する複雑さを隠す抽象を提供する.すなわち、ソケットは、アプリケーションにいくつかのバイトを送信したいことを示すことで、データを転送することができます.ソケットは、この作業を完了するための詳細を非表示にします.
 
一般的に、Java言語のソケットには、次の2つの形式があります.
  • TCPソケット(Socketクラスで実装され、後でこのクラスについて説明する)
  • UDPソケット(DatagramSocketクラスにより実現)
  • TCPとUDPは同じ役割を果たしていますが、やり方は違います.両方とも、トランスポートプロトコルパケットを受信し、その内容を表示レイヤに前に送信する.TCPはメッセージをパケット(データグラム,datagrams)に分解し,受信側で正しい順序で再アセンブリする.TCPはまた、紛失したパケットに対する再送要求を処理する.TCPがあれば、上層部に位置する層が心配することは少なくなります.UDPは、これらの機能をアセンブリおよび再送要求しない.パケットを前方に転送するだけです.上位レベルにあるレイヤは、メッセージが完全で、正しい順序で組み立てられていることを確認する必要があります.
    一般的に、UDPがアプリケーションに押し付けるパフォーマンスのオーバーヘッドは小さくなりますが、アプリケーションが突然大量のデータを交換せず、大量のデータ・レポートを組み立ててメッセージを完了する必要がない場合にのみ発生します.そうでなければ、TCPこそ最も簡単で最も効率的な選択かもしれません.多くの読者はUDPよりもTCPが好きであるため,Java言語でTCP向けのクラスに議論を制限する.