Tuesday, November 15, 2022

TUGAS 3-SOCKET PROGRAMMING

Posted by Amelia Rahmadhini on November 15, 2022 with No comments

 TUGAS 3


1. Arsitektur client server

Client server adalah suatu perangkat lunak atau konsep arsitektur perangkat lunak yang menghubungkan dua objek berupa sistem klien dan sistem server, yang saling berkomunikasi melalui jaringan komputer atau komputer yang sama. Server akan menyediakan manajemen aplikasi, data, dan keamanan data klien. Dalam fungsi pertukaran akses jaringan, server klien bertindak sebagai program browser web, memberikan informasi kepada pengguna atau pengguna di seluruh dunia. Ini mirip dengan mengakses email, database, dll. melalui browser web. Aplikasi server klien memerlukan halaman web dan alamat IP dari server tertentu. Klien dapat meminta informasi dari server kapan saja karena klien adalah konsumen dari informasi di server. Proses komunikasi selalu bergerak dua arah, dan jika klien ingin mengonsumsi informasi, rute yang dituju selalu ada di server. Klien tidak dapat berkomunikasi dengan klien lain. Instrumentasi pada Client Server pada dasarnya memiliki fitur bandwidth dan performance saving, menggunakan peran server sebagai penyimpan semua data yang digunakan oleh client. Perangkat lunak klien hanya akan mendapatkan informasi yang diperlukan jika klien segera mengaksesnya. Saat ini informasi yang dilindungi melewati server dapat dienkripsi sehingga klien dapat memperoleh data yang aman. Kekuatan sebenarnya dari server klien adalah Anda dapat membuat bisnis Anda sendiri dari halaman web yang dibuat sebelumnya. Memungkinkan pelanggan untuk membagikan produk atau layanan mereka dengan cepat kepada pengguna global. Pengguna akan dengan cepat mendapatkan informasi dari browser yang mereka gunakan melalui halaman web yang dibuat oleh klien.

a. Server

1) Server adalah program yang berjalan pada remote mesin yang menyediakan layanan kepada client.

2) Ketika program server dimulai, maka server membuka pintu untuk permintaan masuk dari klien, tetapi server tidak pernah memulai layanan sampai diminta untuk melakukannya. 

3) Program server adalah program tanpa batas. Ketika mulai, program server akan berjalan tanpa batas kecuali ada masalah.

4) Program server menunggu permintaan masuk dari klien. Ketika suatu permintaan datang, ia menanggapi permintaan itu, baik secara iteratif atau bersamaan.

b. Client

1) client adalah program yang berjalan pada mesin lokal yang meminta layanan dari server

2) Program klien terbatas, yang artinya dimulai oleh pengguna (atau program aplikasi lain) dan berakhir ketika layanan selesai. Biasanya, klien membuka saluran komunikasi menggunakan alamat IP dari remote host dan alamat port dari program server spesifik yang berjalan pada mesin itu. Setelah saluran komunikasi dibuka, klien mengirim permintaannya dan menerima respons.

3) Meskipun bagian permintaan-respons dapat diulang beberapa kali, keseluruhan prosesnya terbatas dan ada akhirnya (berakhir).

Concurency

a. Server

1)  Iterative Server hanya dapat memproses satu permintaan pada satu waktu; Server menerima permintaan, memprosesnya, dan mengirim respons ke klien yang merequest sebelum menangani permintaan lain.

2) Concurrence Server, dapat memproses banyak permintaan pada saat yang sama dan dengan demikian dapat membagi waktu antara banyak permintaan.

3) Server menggunakan UDP atau TCP. 

4) Operasi server, tergantung pada dua faktor: protocol layer transport dan metode layanan.

5) Secara teoritis kita dapat memiliki empat jenis server:connectionless iterative, connectionless concurrent, connection-oriented iterative, dan connection-oriented concurren.

b. Client

1) client dapat dijalankan pada mesin baik secara iterative atau bersamaan. Menjalankan klien secara iterative berarti menjalankannya satu per satu; satu klien harus memulai, menjalankan, dan mengakhiri sebelum mesin dapat memulai klien lain. Namun, sebagian besar komputer saat ini memungkinkan klien secara bersamaan; yaitu, dua atau lebih klien dapat berjalan pada saat yang sama.

2. Forking

Forking/Multitasking merupakan cara tradisional untuk menghandle multiple clients. Konsep client-server merupakan dasar dari setiap transaksi yang terjadi di setiap aplikasi web. Soket adalah antarmuka antara proses aplikasi dan lapisan transport. Ini adalah cara tradisional menangani banyak klien. Saat aplikasi memanggil fork(), salinan program panggilan dibuat, penghitung program (PC) tercapai, dan proses anak baru dimulai dari salinan itu. Hasil kembali dari fork(): sekali dalam program panggilan, waktu berikutnya dalam proses anak. Nilai kembalian adalah PID dari proses anak baru dalam program pemanggilan, dan 0 dalam proses child. 

Keuntungan

1) Mudah diimplementasikan

2) Menggunakan proses per klien menjaga apar tidak ada satu klien pun memonopoli server, karena kernel Linux akan menukar proses masuk dan keluar secara preemptif

3) Apabila terjadi crash pada salah satu child process, maka hal tersebut tidak akan mempengaruhi child process yang lain, karena kernel akan mencegah sebuah proses merusak memory dari proses lain

Kekurangan:

1) kurangnya shared memori

2) Untuk program yang besar, sumber daya yang digunakan akan significant karena adanya proses copy untuk setiap anak sehingga mengakibatkan kinerja lambat dan potensi kehabisan sumber daya

3. Multithreading

Multithreading pada Python adalah cara untuk mencapai multitasking dengan python menggunakan konsep thread.. Menjadi metode yang disukai untuk menangani beberapa klien. Thread adalah proses ringan yang berbagi ruang memori utama dari proses induk. Karena itu, mereka menggunakan sumber daya yang lebih sedikit daripada aplikasi multiproses, dan waktu context-switch yang lebih cepat.

Multithreading mempunyai beberapa keuntungan, dibandingkan multiprocessing, di antaranya:

1) Thread bersifat lightweight, sedangkan proses lebih berat. Perlu diketahui bahwa proses adalah program yang sedang berada di memory atau processor, sedang dieksekusi. Thread dapat diartikan sebagai anak dari proses.

2) Thread-thread berbagi pakai ruang alamat yang sama dan karena itu dapat berbagi pakai data dan kode (instruksi)

3) Context switching antar thread biasanya lebih murah daripada antar proses.

4) Biaya komunikasi antar thread relatif lebih rendah daripada komunikasi antar proses.

5) Thread memungkinkan task-task berbeda dikerjakan secara konkuren.

4. Berikan contoh program menggunakan python untuk forking dan multithreading

a. Forking




b. Multithreading

0 comments:

Post a Comment