Mari mengenal Interprocess Communication (part 1)

Introduction

Program aplikasi antarmuka untuk UDP menyediakan pesan lewat abstraksi bentuk sederhana dari komunikasi interprocess . Hal ini memungkinkan proses pengiriman untuk mengirimkan satu pesan ke proses penerimaan . Paket independen yang mengandung pesan-pesan ini disebut datagrams . Di Java dan UNIX API , pengirim menentukan tujuan menggunakan soket referensi langsung ke port tertentu yang digunakan oleh proses tujuan pada komputer tujuan .

Program aplikasi antarmuka untuk TCP memberikan abstraksi dari dua arah pasang streambetween proses . Informasi yang dikomunikasikan terdiri dari aliran item data tanpa batas pesan . Streaming menyediakan sebuah blok bangunan untuk komunikasi produsen-konsumen . Sebuah produsen dan konsumen membentuk sepasang proses dimana peran yang pertama adalah untuk memproduksi barang-barang data dan peran yang kedua adalah untuk mengkonsumsinya . Item data yang dikirim oleh produsen ke konsumen yang antri pada saat kedatangan di host penerima sampai konsumen siap untuk menerima mereka . Konsumen harus menunggu ketika ada item data yang tersedia . Produser harus menunggu jika penyimpanan yang digunakan untuk menyimpan item data antri habis .

 

The API for the Internet protocols

The characteristics of interprocess communication

Message passing antara sepasang proses dapat didukung oleh dua operasi komunikasi pesan, Kirim dan menerima, didefinisikan dalam hal tujuan dan pesan. Untuk berkomunikasi, satu proses mengirimkan pesan (urutan byte) ke tujuan dan proses lain pada tujuan menerima pesan. Kegiatan ini melibatkan komunikasi data dari proses pengiriman ke proses penerimaan dan mungkin melibatkan sinkronisasi dua proses.

Synchronous and asynchronous communication

antrian A dikaitkan dengan masing-masing tujuan pesan . Mengirim proses menyebabkan pesan yang akan ditambahkan ke antrian terpencil dan menerima proses menghapus pesan antrian fromlocal . Komunikasi antara proses pengiriman dan penerimaan dapat berupa sinkron atau asinkron . Dalam synchronousform komunikasi , proses pengiriman dan penerimaan sinkronisasi pada setiap pesan . Dalam hal ini , keduanya Kirim dan blockingoperations receiveare . Setiap kali sendis mengeluarkan proses pengiriman ( atau benang ) diblokir sampai receiveis sesuai diterbitkan . Setiap kali receiveis dikeluarkan oleh proses ( atau benang ) , blok sampai pesan tiba.

Dalam asynchronousform komunikasi , penggunaan sendoperation adalah non-blocking dalam proses pengiriman diperbolehkan untuk melanjutkan segera setelah pesan telah disalin ke buffer lokal , dan transmisi pesan hasil secara paralel dengan proses pengiriman . Receiveoperation dapat memiliki blocking dan non -blocking varian . Pada varian non -blocking , hasil proses penerimaan dengan program setelah mengeluarkan receiveoperation , yang menyediakan buffer untuk diisi di latar belakang , tetapi secara terpisah harus menerima pemberitahuan bahwa buffer telah diisi , dengan pemungutan suara atau mengganggu .

Message destinations

Sebuah port lokal adalah tujuan pesan dalam komputer , ditetapkan sebagai integer . Port A memiliki tepat satu receiver ( port multicast adalah pengecualian) , tetapi dapat memiliki banyak pengirim . Proses dapat menggunakan beberapa port untuk menerima pesan . Setiap proses yang tahu jumlah port dapat mengirim pesan ke itu . Server umumnya mempublikasikan nomor port mereka untuk digunakan oleh klien . Jika klien menggunakan alamat Internet tetap untuk merujuk ke layanan , maka layanan yang harus selalu dijalankan pada komputer yang sama untuk alamat untuk tetap berlaku . Hal ini dapat dihindari dengan menggunakan pendekatan berikut untuk memberikan transparansi lokasi : Program Client merujuk ke layanan dengan nama dan menggunakan nama server atau pengikat  untuk menerjemahkan nama-nama mereka ke lokasi server yang saat runtime . Hal ini memungkinkan layanan yang akan direlokasi tetapi tidak untuk bermigrasi yaitu, untuk dipindahkan sementara sistem berjalan

Reliability

Sejauh properti validitas yang bersangkutan, layanan pesan point-to-point dapat digambarkan sebagai diandalkan jika pesan dijamin akan disampaikan meskipun sejumlah ‘wajar’ dari paket yang terjatuh atau hilang. Sebaliknya, layanan pesan point-to-point dapat digambarkan sebagai tidak bisa diandalkan jika pesan tidak dijamin akan disampaikan dalam menghadapi bahkan satu paket terjatuh atau hilang. Untuk integritas, pesan harus tiba tidak rusak dan tanpa duplikasi

Ordering

Beberapa aplikasi memerlukan bahwa pesan disampaikan agar pengirim yaitu, urutan di mana mereka dikirim oleh pengirim. Penyampaian pesan dari pengirim agar dianggap sebagai kegagalan oleh aplikasi tersebut.

 

Sockets

Kedua bentuk komunikasi (UDP dan TCP) menggunakan soket abstraksi, yang menyediakan titik akhir untuk komunikasi antara proses. Sockets berasal dari BSD UNIX tetapi juga hadir di sebagian besar versi lain dari UNIX, termasuk Linux serta Windows dan Macintosh OS. Interprocess komunikasi terdiri dari transmisi pesan antara soket dalam satu proses dan soket dalam proses lain, seperti yang diilustrasikan pada Gambar

gambar1

Untuk proses untuk menerima pesan, soket harus terikat ke port lokal dan salah satu alamat internet dari komputer yang berjalan. Pesan yang dikirim ke alamat Internet tertentu dan nomor port dapat diterima hanya oleh proses yang socket dikaitkan dengan alamat Internet dan nomor port. Proses dapat menggunakan soket yang sama untuk mengirim dan menerima pesan. Setiap komputer memiliki sejumlah besar (2 16) nomor port yang mungkin untuk digunakan oleh proses lokal untuk menerima pesan.

Java API untuk alamat Internet,  Seperti paket IP yang mendasari UDP dan TCP dikirim ke alamat Internet, Java menyediakan kelas, InetAddress, yang mewakili alamat Internet. Pengguna kelas ini mengacu pada komputer dengan Domain Name System (DNS) nama host Misalnya, contoh InetAddressthat berisi alamat Internet dapat dibuat dengan memanggil metode statis InetAddress, memberikan hostname DNS sebagai argumen. Metode menggunakan DNS untuk mendapatkan alamat Internet yang sesuai. Misalnya, untuk mendapatkan obyek yang mewakili alamat internet dari host yang namanya DNS adalah bruno.dcs.qmul.ac.uk, gunakan:

InetAddress aComputer = InetAddress.getByName (“bruno.dcs.qmul.ac.uk”);

Metode ini dapat melempar Unknown Host Exception. Perhatikan bahwa pengguna kelas tidak perlu menyatakan nilai eksplisit dari alamat Internet. Bahkan, kelas merangkum rincian representasi alamat Internet. Jadi antarmuka untuk kelas ini tidak tergantung pada jumlah byte yang diperlukan untuk mewakili alamat Internet – 4 byte di IPv4 dan 16 byte di IPv6.

UDP datagram communication

Sebuah datagram yang dikirim oleh UDP ditularkan dari proses pengiriman ke proses penerimaan tanpa pengakuan atau retries. Jika terjadi kegagalan, pesan mungkin tidak akan tiba. Sebuah datagram ditransmisikan antara proses ketika salah satu proses sendsit dan receivesit lain. Berikut ini adalah beberapa masalah yang berkaitan dengan komunikasi datagram:

Message Size : Proses penerimaan perlu menentukan sebuah array byte dari ukuran tertentu di mana untuk menerima pesan . Jika pesan terlalu besar untuk array , itu dipotong pada saat kedatangan . Protokol IP yang mendasari memungkinkan paket panjang hingga 2 16 byte , yang mencakup header serta pesan. Namun, kebanyakan lingkungan memberlakukan pembatasan ukuran 8 kilobyte

Blocking : Sockets biasanya menyediakan non – blocking dan blocking mengirimkan menerima untuk komunikasi datagram ( non – blocking receiveis pilihan dalam beberapa implementasi ) . Kembali sendoperation ketika telah menyerahkan pesan ke UDP dan IP protokol yang mendasari , yang bertanggung jawab untuk transmisi ke tujuan

Timeout: Blok menerimabahwa selamanya cocok untuk digunakan oleh server yang menunggu untuk menerima permintaan dari klien. Namun dalam beberapa program, tidak tepat bahwa proses yang telah dipanggil receiveoperation harus menunggu selamanya dalam situasi di mana proses pengiriman mungkin telah jatuh atau pesan yang diharapkan mungkin telah hilang.

Receive from any: receivemethod tidak menentukan asal untuk pesan. Sebaliknya, sebuah doa dari receivegets pesan yang ditujukan kepada soketnya dari asal manapun. Receivemethod mengembalikan alamat Internet dan port lokal pengirim, yang memungkinkan penerima untuk memeriksa di mana pesan itu berasal. Hal ini dimungkinkan untuk menghubungkan soket datagram ke port Internet dan alamat remote tertentu, dalam hal ini soket hanya mampu mengirim pesan dan menerima pesan dari alamat tersebut.

Failure model for UDP datagrams

Datagrams UDP menderita kegagalan berikut:

Kegagalan Kelalaian: Pesan bisa turun kadang-kadang, baik karena checksum error atau karena tidak ada ruang buffer yang tersedia di sumber atau tujuan.

Untuk menyederhanakan diskusi, kita menganggap kegagalan kirim-kelalaian dan menerima-kelalaian sebagai omissionfailures dalam saluran komunikasi. Pengurutan: Pesan kadang-kadang dapat disampaikan rusak pengirim. Aplikasi menggunakan datagram UDP yang tersisa untuk memberikan cek mereka sendiri untuk mencapai kualitas komunikasi yang handal yang mereka butuhkan. Sebuah layanan pengiriman yang handal dapat dibangun dari satu yang menderita dari kegagalan pembiaran oleh penggunaan ucapan terima kasih.

Use of UDP

Untuk beberapa aplikasi, dapat diterima untuk menggunakan layanan yang bertanggung jawab terhadap kegagalan kelalaian sesekali. Sebagai contoh, Domain Name System, yang terlihat nama-nama DNS di Internet, diimplementasikan atas UDP. Voice over IP (VOIP) juga berjalan di atas UDP. Datagrams UDP kadang-kadang pilihan yang menarik karena mereka tidak menderita overhead yang terkait dengan pengiriman pesan dijamin. Ada tiga sumber utama overhead:

• kebutuhan untuk menyimpan informasi negara pada sumber dan tujuan;

• transmisi pesan-pesan tambahan;

• latency untuk pengirim.

Java API for UDP datagrams

The Java API menyediakan datagram komunikasi melalui dua kelas : Datagram Packet dan Datagram Socket .

DatagramPacket : Class ini menyediakan konstruktor yang membuat sebuah instance dari sebuah array byte yang terdiri dari pesan , panjang pesan dan alamat Internet dan nomor port lokal dari soket tujuan .

Class ini menyediakan konstruktor lain untuk digunakan ketika menerima pesan . Argumen menentukan sebuah array byte di mana untuk menerima pesan dan panjang dari array . Sebuah pesan yang diterima diletakkan di DatagramPackettogether dengan panjang dan alamat Internet dan port soket pengirim . Pesan dapat diambil dari sarana DatagramPacketby metode getData . Metode getPort dan getAddressaccess port dan alamat Internet .

gambar2

Datagram Socket : Kelas ini mendukung soket untuk mengirim dan menerima datagrams UDP . Ini menyediakan konstruktor thattakes nomor port sebagai argumen , untuk digunakan oleh proses yang harus menggunakan port tertentu . Hal ini juga menyediakan konstruktor tanpa argumen yang memungkinkan sistem untuk memilih port lokal gratis . Konstruktor ini bisa melempar SocketExceptionif port yang dipilih sudah digunakan atau jika port direservasi ( nomor di bawah 1024 ) yang ditentukan ketika berjalan di atas UNIX .

Kelas DatagramSocket menyediakan metode yang meliputi berikut ini:

Kirim dan menerima: Metode ini untuk transmisi datagram antara sepasang soket. Argumen dari sendis contoh DatagramPacket mengandung pesan dan tujuan. Argumen dari receiveis sebuah DatagramPacketin kosong yang untuk menempatkan pesan, panjang dan asal-usulnya. Metode mengirim dan receivec sebuah IOExceptions melempar.

setSoTimeout: Metode ini memungkinkan waktu untuk diatur. Dengan set timeout, menerima Metode akan memblokir untuk waktu tertentu dan kemudian melemparkan sebuah InterruptedIOException.

menghubungkan: Metode ini digunakan untuk menghubungkan ke remote port tertentu dan Alamat Internet, dalam hal ini soket hanya mampu mengirim pesan ke dan menerima pesan dari alamat tersebut

Leave a Reply

Your email address will not be published. Required fields are marked *