Soket Unix - Model Server Klien
Sebagian besar Aplikasi Net menggunakan arsitektur Client-Server, yang mengacu pada dua proses atau dua aplikasi yang berkomunikasi satu sama lain untuk bertukar beberapa informasi. Salah satu dari dua proses bertindak sebagai proses klien, dan proses lainnya bertindak sebagai server.
Proses Klien
Ini adalah proses, yang biasanya meminta informasi. Setelah mendapatkan respon, proses ini dapat menghentikan atau melakukan beberapa pemrosesan lainnya.
Example, Browser Internet berfungsi sebagai aplikasi klien, yang mengirimkan permintaan ke Server Web untuk mendapatkan satu halaman web HTML.
Proses Server
Ini adalah proses yang menerima permintaan dari klien. Setelah mendapatkan permintaan dari klien, proses ini akan melakukan pemrosesan yang diperlukan, mengumpulkan informasi yang diminta, dan mengirimkannya ke klien pemohon. Setelah selesai, itu siap untuk melayani klien lain. Proses server selalu waspada dan siap melayani permintaan yang masuk.
Example - Server Web terus menunggu permintaan dari Browser Internet dan segera setelah mendapat permintaan dari browser, ia mengambil halaman HTML yang diminta dan mengirimkannya kembali ke Browser itu.
Perhatikan bahwa klien perlu mengetahui alamat server, tetapi server tidak perlu mengetahui alamat atau bahkan keberadaan klien sebelum sambungan dibuat. Setelah koneksi dibuat, kedua belah pihak dapat mengirim dan menerima informasi.
Arsitektur 2 tingkat dan 3 tingkat
Ada dua jenis arsitektur klien-server -
2-tier architecture- Dalam arsitektur ini, klien berinteraksi langsung dengan server. Jenis arsitektur ini mungkin memiliki beberapa lubang keamanan dan masalah kinerja. Internet Explorer dan Web Server bekerja pada arsitektur dua tingkat. Di sini masalah keamanan diselesaikan menggunakan Secure Socket Layer (SSL).
3-tier architectures- Dalam arsitektur ini, satu perangkat lunak lagi berada di antara klien dan server. Perangkat lunak tengah ini disebut 'middleware'. Middleware digunakan untuk melakukan semua pemeriksaan keamanan dan load balancing jika terjadi beban berat. Middleware mengambil semua permintaan dari klien dan setelah melakukan otentikasi yang diperlukan, ia meneruskan permintaan itu ke server. Kemudian server melakukan pemrosesan yang diperlukan dan mengirimkan respons kembali ke middleware dan akhirnya middleware meneruskan respons ini kembali ke klien. Jika Anda ingin menerapkan arsitektur 3-tier, maka Anda dapat menyimpan middleware seperti Web Logic atau perangkat lunak WebSphere di antara Server Web dan Browser Web Anda.
Jenis Server
Ada dua jenis server yang dapat Anda miliki -
Iterative Server- Ini adalah bentuk server paling sederhana di mana proses server melayani satu klien dan setelah menyelesaikan permintaan pertama, dibutuhkan permintaan dari klien lain. Sementara itu, klien lain terus menunggu.
Concurrent Servers- Jenis server ini menjalankan beberapa proses bersamaan untuk melayani banyak permintaan pada satu waktu karena satu proses mungkin membutuhkan waktu lebih lama dan klien lain tidak bisa menunggu begitu lama. Cara termudah untuk menulis server bersamaan di bawah Unix adalah dengan membagi proses anak untuk menangani setiap klien secara terpisah.
Bagaimana Membuat Klien
Panggilan sistem untuk membuat koneksi agak berbeda untuk klien dan server, tetapi keduanya melibatkan konstruksi dasar soket. Kedua proses tersebut membentuk soketnya sendiri.
Langkah-langkah yang terlibat dalam membuat soket di sisi klien adalah sebagai berikut -
Buat soket dengan socket() panggilan sistem.
Hubungkan soket ke alamat server menggunakan connect() panggilan sistem.
Mengirim dan menerima data. Ada beberapa cara untuk melakukan ini, tetapi cara paling sederhana adalah dengan menggunakan fileread() dan write() panggilan sistem.
Cara membuat Server
Langkah-langkah yang terlibat dalam membuat soket di sisi server adalah sebagai berikut -
Buat soket dengan socket() panggilan sistem.
Ikat soket ke alamat menggunakan bind()panggilan sistem. Untuk soket server di Internet, alamat terdiri dari nomor port pada mesin host.
Dengarkan koneksi dengan listen() panggilan sistem.
Terima koneksi dengan accept()panggilan sistem. Panggilan ini biasanya memblokir koneksi hingga klien terhubung dengan server.
Mengirim dan menerima data menggunakan read() dan write() panggilan sistem.
Interaksi Klien dan Server
Berikut adalah diagram yang menunjukkan interaksi Klien dan Server lengkap -