Sunday, November 27, 2022

Pertemuan 11 : Modul 9 - Multirecipient (Socket Programming)

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

 Multirecipient

1. Dasar Teori

    Konsep client-server merupakan dasar dari setiap transaksi yang terjadi pada setiap aplikasi jaringan. Socket merupakan antarmuka antara application process dan transport layer. Setelah sebelumnya kita mempelajari beberapa metode untuk penanganan request dari banyak client ke server, maka muncul pertanyaan Bagaimana Jika kita akan mengirimkan data ke banyak penerima? Ada beberapa solusi yang dapat diterapkan diantaranya adalah menggunakan fasilitas yang disediakan oleh jaringan yaitu broadcast dan multicast. Dalam penerapannya metode broadcast dan multicast sendiri memiliki keterbatasan, yaitu:

■ Hanya UDP socket yang dapat melakukan broadcast dan multicast

■ Broadcast hanya mencakup lingkup lokal, biasanya jaringan area local (LAN).

■ Multicast di seluruh Internet saat ini tidak didukung oleh sebagian besar penyedia layanan Internet.

    Broadcast merupakan pengiriman data dengan tujuan semua alamat yang berada dalam 1 jaringan. Aplikasi akan mengirimkan data ke alamat broadcast, apabila data dikirim ke alamat ini maka semua host yang berada dalam jaringan tersebut akan menerima data. Sebelum mengirimkan data ke alamat broadcast, maka kita harus meminta “izin” kepada sistem untuk melakukan broadcast dengan men-set opsi SO_BROADCAST harus pada sisi pengirim.

    Berbeda dengan broadcast, multicast merupakan pengiriman data dengan tujuan alamat group dalam 1 jaringan. Pada prakteknya dalam pemrograman tidak perlu set permission untuk multicast. Multicast sender dapat men set nilai TTL untuk mengirimkan datagram. Langkah-langkah yang harus dilakukan dalam pemrograman untuk melakukan broadcast maupun multicast pada dasarnya sama dengan pemrograman menggunakan UDP, namun pada broadcast perlu penambahan socket option SO_BROADCAST, sehingga sistem mengizinkan untuk melakukan broadcast.

2. Percobaan

Program 1: program multicast

- Server

- Client

- Output

Tugas 1: Amatilah dan analisa pogram datas, kemudian jelaskan cara kerjanya

Jawab: Pada percobaan multicast ini di bagian servernya terdapat import socket, import struct dan juga imports sys, lalu terdapat message = "HALLO SAYA AMELIA" yang mana pada bagian message ini adalah suatu pesan yang nantinya akan dikirimkan dari server sehingga nantinya akan muncul pada bagian client. Setiap dijalankannya perintah multicast server maka pesan tersebut akan muncul pada bagian client.  Kemudian terdapat multicast_group() yang mana bagian multicast_group() ini adalah suatu grup yang mana nantinya dapat menghubungkan 2 client yang mempunyai server atau ip yang berbeda atau di pc yang berbeda. Saat dilakukan nya run pada servernya maka dari client yang berbeda dapat terkirim pesan yang mana terdapat ip dari server masing-masing. Lalu terdapat server_address dan sock.settimeout yang mana  waktu nya disetting 0.2 dan juga digunakan struct. Pada programnya juga terdapat try yang dimana nantinya akan terdapat pesan sending berisi ip dari clientnya dan juga digunakan while dimana jika true aka terdapat pesan "waiting to receive" lalu terdapat juga except socket.tmeout yang mana jika tidak ada respon dalam waktu 0.2 maka akan muncul pesan "timed out, no more responses dan terdapat break, jika terdapat respon lagi dari client maka akan terdapat pesan "reeive "ack" form..." dan jika memang tidak ada lagi respon maka akan muncul pesan "Closing socket". 

Pada bagian client nya digunakan juga import socket, import struck, dan import sys yang mana juga terdapat multicast_group yang sama pada bagian server sebelumnya dan juga terdapat server address. Kemudian pada bagian client ini juga digunakan sock.bind yang mana mengarah pada bagaian server address dan juga terdapat group yang mana group ini adalah client yang terdapat pada multicast_group. Lalu terdapat while true yang mana saat dilakukannya run pada program maka akan muncul pesan "waiting to receive message" dan juga terdapat "received...bytes from..." kemudian juga terdapat print yang mana nantinya akan memunculkan pesan yang sebelumnya kita buat di bagian server lalu setelah itu terdaoat pesan "sending acknowledement to...". 

Pada bagian outputnya terlihat bahwasanya pada bagian servernya terdapat 2 ip address yang berbeda yang mana ip tersebut berasal dari client yang berdeba. Pada bagian client nya dapat dilihat bahwasanya terdapat pesan antar client yang mana saat client1 menjalankan servernya maka akan muncul pada bagian client1 dan client2 dan begitu juga dengan client2 jika menjalankan servernya makan akan muncul pada bagian client1 dan client2. Hal tersebut terjadi karena client1 dan client2 sudah berada didalam group yang sama sehingga memungkinkan saling berbagi data


Program 2: Program Broadcast

- Server

- Client

- Output

Tugas 2:Amatilah dan analisa pogram datas, kemudian jelaskan cara kerjanya

Jawab: Pada bagian servernya digunakan library import socket dan juga import time  yang man terdapat server.setsocket yang mana pada programnya terdapat SO_REUSEPORT dan juga SO_BROADCAST lalu terdapat server.settimeout yang mana disini waktu untuk broadcast nya disetting 0,2. Kemudin pada programnya juga terdapat message "your very important message" yang mana nantinya pesan ini akan dikirimkan melalui broadcast ke dalam jaringan yang sama. Selanjutnya terdapat while true dimana server nya akan saling terhubung pada lalu lintas yang sama dimana nantinya pada bagian server akan muncul pesan "message sent!". 

Pada bagian client nya terdap import socket yang mana pada program nya juga terdapat client=socket.socket dan juga client.setsockopt yang mana ini untuk menyetel opsi yang terkait dengan socket lalu juga terdapat client.bind yang nantinya akan terhubung ke server. Kemudian terdaoat while true yang mana nantinya jika menerima pesan dari client lain maka akan muncul pesan "received message...".

Pada bagian outputnya dapat dilihat bahwasanya terdapat 1 Server dan 2 client yang mana setiap client mendaoatkan received message dan isi received message nya bermacam-macam namun antara client1 dan client2 isinya sama. Pesan yang di dapatkaj pada client tersebut berasa dari server-server yang berbeda namun masih dalam lalu lintas jaringan yang sama dimana terlebih dahulu kita harus mengubah tipe jaringan nya menjadi bridge agar pesan dari server lain dapat muncul pada bagian client nya. 


Tuesday, November 22, 2022

TUGAS 5 - SOCKET PROGRAMMING

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

 Tugas 5


1. Multirecipient

Konsep client-server merupakan dasar dari setiap transaksi yang terjadi pada setiap aplikasi jaringan. Socket dapat menangani pesan dari banyak client sekaligus (multiple recipient). Pada saat socket client, informasi alamat socket server dilewatkan sebagai argumen dan socket client akan otomatis mencoba meminta koneksi ke socket server. Pada saat permintaan koneksi client sampai pada server, maka server akan membuat suatu socket biasa. Socket ini yang nantinya akan berkomunikasi dengan socket pada sisi client. Setelah itu socket server dapat kembali melakukan listen untuk menunggu permintaan koneksi dari client lainnya.

·         Bagaimana Jika kita akan mengirimkan data ke banyak penerima?

·         Solusi:

1.       Unicast salinan data kesetiap penerima menggunakan single connection.

Permasalahan? Tidak efisien, karena:

-          terjadi duplikasi

-          boros bandwith

2.       Menggunakan dukungan jaringan, dengan:

-          Broadcast

-          Multicast

·         Keterbatasan:

-          Hanya UDP socket yang dapat melakukan broadcast dan multicast

-          Broadcast hanya mencakup lingkup lokal, biasanya jaringan area local (LAN).

-          Multicast di seluruh Internet saat ini tidak didukung oleh sebagian besar penyedia layanan Internet.


2. Unicast 

Unicast adalah transmisi data pada sebuah jaringan yang pling sederhana secara one-to-one.  Sesuai dengan namanya, aliran data unicast hanya menghubungkan komputer tunggal dengan sistem yang dijadikan sebagai host dan perangkat sistem komputer lainnya sebagai tujuan.
Ketika digunakan, perangkat komputer tunggal asal hanya akan mencoba berkomunikasi dengan satu perangkat komputer tujuan saja.

Unicast adalah metode pengiriman paket data hanya ke satu perangkat, jika suatu perangkat ingin mengirim paket data ke beberapa perangkat sekaligus, maka perangkat tersebut harus mengirimkan beberapa paket data dengan alamat spesifikasi yang ada pada paket untuk masing-masing perangkat, setiap paket data perangkat berisi alamat tertentu. Untuk mengirim paket melalui unicast, sumber harus mengetahui alamat IP perangkat tujuan. Seperti yang ditunjukkan pada gambar di bawah ini, dengan unicast, pengirim sumber mengirimkan paket hanya ke satu perangkat target, jika ada lebih dari satu perangkat target, pengirim harus mengirim paket satu per satu, dan setiap paket berisi alamat yang tepat dari target perangkat.

Transmisi jaringan dengan sistem unicast dapat dianalogikan seperti seseorang yang ingin memberikan sebuah undangan kepada satu orang lain secara langsung dengan mengantarkan undangan tersebut ke rumahnya. Diantara pemberi dan penerima undangan akan terjadi komunikasi sehingga pemberi undangan sebagai perangkat asal akan mengetahui bahwa informasi atau undangan yang dikirimnya telah sampai kepada si penerima.


3. Broadcast

Broadcast adalah suatu metode pengiriman data, yang dimana data tersebut dikirim ke banyak titik sekaligus tanpa melakukan pemeriksaan atau pengecekan apakah titik tersebut siap atau tidak ataupun tanpa memperhatikan pakah data tersebut sampai atau tidak.

Broadcast merupakan metode pengiriman paket yang ditujukan untuk semua perangkat pada jaringan. Broadcast juga disebut metode transmisi One to all(satu untuk semua). Address tujuan adalah alamat spesial yang ditentukan untuk pesan broadcast. Pada jaringan ethernet, Broadcast dikrim ke alamat khusus menggunakan format FF-FF-FF-FF-FF-FF-FF. Jika pasket dikirim dengan menggunakan broadcast, maka semua perangkat yang terhubung ke jaringan akan menerima paket yang sama tersebut. Contoh penerapan broadcast adalah DHCP, VTP, dan cara switch mengisi mac tablenya.

Broadcasting mengirimkan data ke banyak perangkat sekaligus atau PTMP (Point to MultiPoint). Saat menggunakan metode ini untuk mengirim ke banyak titik, tidak perlu peduli apakah data sampai ke penerima. Juga jangan melihat apakah perangkat penerima di setiap titik siap menerima paket secara aktif. Cara komunikasi ini biasanya dilakukan pada setiap perangkat yang tergabung dalam jaringan yang sama atau dengan kata lain alamat broadcast yang sama. Jika kita mempelajari subnetting, alamat broadcast adalah alamat terakhir dari subnet. Misalnya, jika Anda memiliki jaringan dengan subnet 192.168.1.0/24, alamat siarannya adalah 192.168.1.255. Ini sering disebut penyiaran subnet. Ada juga broadcast terbatas yang mentransmisikan data menggunakan alamat 255.255.255.255.

Transmisi jaringan broadcast memiliki analogi seperti seorang pemberi undangan yang ingin mengirimkan informasi kepada orang lain. Pemberi undangan sebagai host membagikan undangan dengan menyebarnya di jalan-jalan. Oleh karena itu, perangkat host tidak akan mengetahui bahwa informasi yang dikirimkannya telah sampai dan respon penerima pun tidak akan diketahui oleh perangkat sistem yang menjadi host. 

Broadcast:

- Pengiriman data dengan tujuan semua alamat yang berada dalam 1 jaringan

- Aplikasi akan mengirimkan data ke alamat broadcast, apabila data dikirim ke alamat ini maka semua host yang berada dalam jaringan tersebut akan menerima data

- Sebelum mengirimkan data ke alamat broadcast, maka opsi SO_BROADCAST harus di set pada sisi pengirim meminta “izin” kepada sistem untuk melakukan broadcast.

- Broadcast berfungsi dengan baik jika persentase host jaringan ingin menerima pesan besar; Namun, jika beberapa host perlu menerima paket, broadcast "memaksakan" semua host dalam jaringan untuk keuntungan beberapa orang.

- Pengetahuan tentang alamat tidak diperlukan untuk broadcast. Dalam beberapa konteks (lokal), ini membuat mekanisme broadcast yang lebih baik untuk discovery

  • Alamat Broadcast: 

- Broadcast address pada perangkat, dapat dilihat dengan menggunakan perintah ifconfig.

Contoh: ifconfig eth0

Output yang mungkin ditampilkan :

Pada contoh diatas, broadcast address dapat dilihat pada baris ke 2 yaitu : 192.168.0.255

Broadcast address yang lain adalah 255.255.255.255->merupakan broadcast address umum -> penggunaannya tidak disarankan

4. Multicast

Multicast adalah transmisi data dari satu sumber ke beberapa penerima. Multicasting mirip dengan penyiaran, tetapi hanya mengirimkan informasi ke pengguna tertentu. Ini digunakan untuk mengirimkan streaming dan jenis data lainnya secara efisien ke banyak pengguna secara bersamaan. Cara mudah untuk mengirim data ke beberapa pengguna sekaligus adalah dengan mengirimkan salinan data yang terpisah kepada setiap pengguna. Namun, ini sangat tidak efisien karena banyak salinan dari data yang sama dikirim dari sumber melalui satu atau lebih jaringan.

Multicast memungkinkan satu transmisi untuk dibagikan di antara banyak pengguna, secara signifikan mengurangi bandwidth yang diperlukan. Multicast yang terjadi di Internet disebut IP multicast karena menggunakan Internet Protocol (IP) untuk mengirimkan data.

Multicast IP membuat "pohon multicast" yang memungkinkan satu transmisi bercabang ke pengguna individu. Cabang-cabang ini dibuat di router internet jika diperlukan. Misalnya, jika lima pengguna dari lima negara berbeda meminta akses ke aliran yang sama, percabangan yang mirip dengan aslinya akan dibuat. Jika lima pengguna dari kota yang sama meminta akses ke aliran yang sama, cabang dibuat di dekat pengguna. IP Multicast bekerja dengan menggabungkan dua protokol lainnya dengan Internet Protocol. Multicast juga dapat digunakan untuk mengirim jenis data lain melalui Internet, seperti berita, harga saham, atau bahkan salinan digital perangkat lunak.

Terlepas dari apapun aplikasinya, multicast membantu mengurangi penggunaan bandwidth Internet dengan menyediakan cara yang efisien untuk mengirim data ke banyak pengguna.Apakah metode pengiriman paket identik dengan broadcasting, kecuali bahwa paket dikirim ke beberapa tujuan sekaligus berdasarkan grup tertentu melalui alamat grup. Menggunakan protokol IGMP (Internet Group Management Protocol) untuk mengidentifikasi multicast grup. Tampilan multicast dari alamat IP pribadi antara 24.0.0.0 dan 239.255.255.255. Misalnya saat kita melakukan streaming audio atau video. Tentu saja, banyak komputer ingin mengaksesnya secara bersamaan. Data multicast dikirim hanya sekali tetapi dapat diterima oleh banyak perangkat.

Multicast:

  • Pengiriman data dengan tujuan alamat group dalam 1 jaringan
  • Menggunakan kelas D, sehingga beberapa host akan didaftarkan dengan menggunakan alamat kelas D ini
  • Tidak perlu set permission untuk multicast.
  • Multicast sender dapat men set nilai TTL untuk mengirimkan datagram
  • Untuk mengontrol multicast dapat kita lakukan dengan menggunakan fungsi setsockopt(). Fungsi setsocktopt () menerima flag dari IPPROTO_IP berikut: 
    • IP_ADD_MEMBERSHIP: Join dengan multicast group yang ditentukan.
    • IP_DROP_MEMBERSHIP: keluar dari multicast group yang ditentun
    • IP_MULTICAST_IF: Mengatur interface yang digunakan untuk pengiriman multicast datagram ke luar (outgoing multicast datagrams)
    • IP_MULTICAST_TTL: Mengatur Time To Live (TTL) pada IP header untuk outgoing multicast datagrams.
    • IP_MULTICAST_LOOP: Menentukan apakah salinan outgoing multicast datagrams dikirim ke host pengirim selama ia adalah anggota grup multicast
Mengirimkan Multicast Datagram
  • socket () mengembalikan deskriptor socket yang mewakili end point. Pernyataan itu juga mengidentifikasi bahwa INET address family (Internet Protocol) dengan transport UDP (SOCK_DGRAM) digunakan untuk soket ini. Soket ini mengirimkan datagram ke aplikasi lain.
  • Struktur sockaddr_in menentukan alamat IP tujuan dan nomor port. Contoh, alamatnya adalah 225.1.1.1 dan nomor port adalah 5555.
  • setsockopt () menetapkan opsi soket IP_MULTICAST_LOOP sehingga sistem pengirim tidak menerima salinan datagram multicast yang ditransmisikan.
  • setsockopt () menggunakan opsi socket IP_MULTICAST_IF, yang mendefinisikan interface lokal di mana datagram multicast dikirim.
  • sendto () mengirim datagram multicast ke alamat IP grup yang ditentukan.
  • close () menutup semua deskriptor soket yang terbuka.
Menerima Multicast Datagram
  • socket () mengembalikan deskriptor socket yang mewakili end point. Pernyataan itu juga mengidentifikasi bahwa INET address family (Internet Protocol) dengan transport UDP (SOCK_DGRAM) digunakan untuk soket ini. Soket ini mengirimkan datagram ke aplikasi lain.
  • setsockopt () menetapkan opsi soket SO_REUSEADDR untuk memungkinkan beberapa aplikasi menerima datagram yang diperuntukkan bagi nomor port lokal yang sama.
  • bind () menentukan nomor port lokal. Dalam contoh ini, alamat IP ditetapkan sebagai INADDR_ANY untuk menerima datagram yang ditujukan ke grup multicast.
  • setsockopt () menggunakan opsi soket IP_ADD_MEMBERSHIP, yang bergabung dengan grup multicast yang menerima datagram. Saat bergabung dengan grup, tentukan alamat grup D kelas bersama dengan alamat IP dari antarmuka lokal. Sistem harus memanggil opsi soket IP_ADD_MEMBERSHIP untuk setiap antarmuka lokal yang menerima datagram multicast. Contoh grup multicast (225.1.1.1) bergabung pada antarmuka lokal 9.5.1.1.
  • read () membaca datagram multicast yang sedang dikirim.
  • close () menutup semua deskriptor soket yang terbuka.







Monday, November 21, 2022

TUGAS 4 - SOCKET PROGRAMMING

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

 Tugas 4


1. Multiplexing

Multiplexing merupakan sebuah proses dimana protokol pada sebuah layer dapat melakukan proses encapsulation terhadap paket data dari beberapa buah protokol dilayer atas secara bersamaan dalam satu waktu. Multiplexing juga merupakan strategi untuk menghandle banyak koneksi selain itu multiplexing adalah cara menangani beberapa klien dalam satu proses server. Aplikasi ini memungkinkan klien untuk terhubung ke server dan menambahkannya ke watch list. Watch list merupakan  sebuah array deskriptor soket.Kemudian sistem operasi memberitahu aplikasi klien (jika ada) yang perlu dilayani atau jika klien baru telah membuat koneksi

Terdapat problem yaitu dari soket mana server harus menerima koneksi atau menerima

pesan dan terdapat soolusinya adalah dengan menggunakan select(). Select() merupakan sebuah fungsi sistem yang memungkinkan programmer untuk menentukan socket descriptor yang akan digunakan.

Fungsi select()

● select() merupakan sebuah fungsi sistem yang memungkinkan programmer

untuk menentukan socket descriptor yang akan digunakan.

● menetapkan daftar deskriptor untuk memeriksa operasi I / O yang tertunda

● blok sampai salah satu deskriptor siap

● returns which descriptors are ready

● Prototype fungsi select() :

import select

Panggilan select() memungkinkan untuk menggunakan pemblokiran I/O pada satu set deskriptor.

I/O multiplexing merupakan kapabilitas untuk memberi instruksi ke kernel bahwa kita ingin diberi notifikasi ketika satu atau beberapa kondisi I/O telah tercapai. Beberapa scenario dimana I/O multiplexing dipakai :

-          Ketika klient sedang menangani beberapa deskriptor sekaligus

-          Ketika klient menangani beberapa socket bersamaan

-          Ketika TCP server menangani listening dan socket ang terkoneksi

-          Ketika server menangani TCP dan UDP bersamaan

-      Ketika server menangani lebih dari satu service dan protocol secara bersamaan

Tujuan dari komunikasi data secara multiplexing yaitu meningkatkan effisiensi penggunaan bandwidth atau kapasitas saluran transmisi dengan cara berbagi akses bersama dan menghemat jumlah saluran fisik. 

2. Preforking

Saat terdapat masalah pada forking  seperti masalah performa, terjadinya delay dalam menjalankan child process ketika client terhubung ke server dalam jumlah besar maka kita dapat mengatasinya menggunakan preforking. Preforking merupakan membuat proses anak dengan jumlah tertentu pada saat aplikasi dimulai.Preforking membatasi semua cost yang terkait dengan pembuatan child process ke bagian inisialisasi aplikasi ketika sebuah client terkoneksi, maka proses yang menanganinya telah terbentuk. Preforking menciptakan salinan sebuah proses membutuhkan biaya kinerja yang cukup besar, tambah lagi jika dilakukan pada aplikasi yang besar. Biaya kinerja akan semakin mahal seiring banyaknya jumlah client yang terhubung dengan server.. Untuk mengurangi biaya kinerja yang dipergunakan untuk menggandakan proses induk digunakan strategi preforking, yaitu dengan membuat proses anak dengan jumlah tertentu pada saat aplikasi dimulai, kemudian proses anak akan melayani client yang terhubung.

Konsep client-server merupakan dasar dari setiap transaksi yang terjadi pada setiap aplikasi jaringan. Socket merupakan antarmuka antara application process dan transport layer. Merupakan cara tradisional untuk menghandle multiple clients. Ketika sebuah aplikasi memanggil fork (),  maka dibuat copyan dari calling program, sampai ke program counter(PC), dan child process baru dimulai dengan copyan tsb. • Hasil kembalian dari fork() : sekali dalam program pemanggil dan waktu berikutnya dalam child process. Nilai kembalian dalam program pemanggil adalah PID dari child process baru, sementara dalam child process itu adalah 0.



3. Berikan contoh program menggunakan python untuk Multiplexing dan preforking

a. Multiplexing

- Server

- Client

- Output

b. Preforking

- Server

- Client



Sunday, November 20, 2022

Pertemuan 10 : Modul 8 - Multithreading (Socket Programming)

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

 Multithreading


1. DASAR TEORI

Konsep client-server merupakan dasar dari setiap transaksi yang terjadi pada setiap aplikasi jaringan. Socket merupakan antarmuka antara application process dan transport layer. Forking sebagai salah satu metode penanganan multiple request dari client yang sudah dipelajari sebelumnya memiliki kelemahan, yaitu:

a. Performansi

b. Portability

c. Kompleksitas

Salah satu solusi untuk permasalahan diatas adalah penggunaan thread. Thread berjalan secara paralel dan menggunakan shared memory global. Karena semua thread berjalan dalam proses dan ruang memori yang sama, secara otomatis thread berbagi soket yang lewat di antara mereka. Hal ini serupa dengan cara child process mewarisi deskriptor soket. Namun, tidak seperti proses, thread biasanya lebih murah untuk memulai, dan bekerja pada mesin Unix dan Windows di bawah standar Python.

2. PERCOBAAN

a. Percobaan 1 

- Server

- Client

- Output

Tugas 1: Amatilah dan analisa pogram diatas, kemudian jelaskan cara kerjanya

Jawab:  Pada bagian servernya dilakukan beberapa import yang mana terdapat import threading dan juga import socket. Import thread pada bagian ini akan nerguna untuk menyediakan antar muka yang baik. Lalu juga terdapat HOST nya yaitu 'localhost' dan nantinya kita dapat melakukan pemanggilan host menggunakan 'localhost' dan juga terdapat port = 12345. Pada bagian port ini dapat digunakan kombinasi angka dan jika saat dijalankan tidak bisa muncul outputnya maka port nya dapat diganti. Kemudian pada bagian ini digunakan def yang mana def ini nantinya akan menentukan fungsi untuk thread sehingga saat server menerima pesan maka dia akan mengembalikannya kepada client.  Pada bagian def ini digunakan try yang mana jika terhubung maka server akan menampilkan hasilnya namun juga digunakan except yang mana jika tidak dapat terhubung maka akan muncul pesan "socket error" dan saat itu juga terdapat finnaly yang mana jika saat socket error maka koneksi akan tertutup dan terdapat pesan "Closed connection to". Pada bagian server ini juga terdapat listen_sock yang mana nantinya akan membaca host dan port nya lalu saat membaca maka akan muncul pesan "Listening on...". Pada bagian server ini juga terdapat perulangan menggunakan while yang mana nantinya saat client terkoneksi ke server maka akan muncul pesan "Connection From...".

Pada bagian clientnya terdapat import library socket yang mana disini juag terdapat Host , namun berbeda dengan server tadi bagian host disini menggunakan ip "127.0.0.1" dan port nya harus sama dengan server tadi agar dapat saling terhubung. Pada bagian client ini juga digunakan While yang mana terdapat try, saat terkoneksi maka akan muncul beberapa pesan dan juga terdapat if dimana jika menginputkan q maka akan break lalu juga digunakan except jika connection nya error dimana jika terjadi error akan muncul pesan "Socket Error" lalu terjadi break dan terdapat finlly dimana socket nya di close maka akan muncul pesan "Closed connection to server".

Pada percobaan diatas dilakukan connect antara server dan juga client yang mana digunakan 2 client yang terhubung ke server. Pada bagian servernya saat sudah melakukan koneksi, terlebih daulu server membaca host dan juga port dari client yang mana nantinya saat client memcoba koneksi ke server pada bagian server nya akan muncul connection from dari client tersebut, sedangkan pada bagian client terdapat connected to 'server'. 

b. Percobaan 2

- Server

- Client

- Output

Tugas 2: Amatilah dan analisa pogram datas, kemudian jelaskan cara kerjanya

Jawab: Pada bagian server ini dilakukan beberapa import library yang mana terdapat import threading, import socket, import argprse dan import os. Pada programnya terdapat class serber dimana digunkan super. Pada bagian ini juga terdapat def dan juga while. Pada bagian while yang mana nantinya akan dilakukan koneksi antara server dan client akan memunculkan pesan "Accepted a new connection from...to..."  dan juga terdapat for dan digunakan juga if. Lalu terdapat def untuk remove connection nya. Pada program server ini juga terdapat class berikutnya untuk server socket yang mana juga digunakan def dan super() lalu juga terdapat while dan if dimana nantinya terdapat beberapa pesan saat client terhubung ke server dan juga terdapat else dimana nantinya akan menutup koneksi nya. Lalu jika keluar dari server juga terdapat while yang mana bisa digunakan q untuk keluarnya dan nantinya akan muncul pesan "Closing all connection" dan juga "Shutting down the server" lalu exit. Pada bagian server ini juga akan terdapat chat room yang mana  server dapat menampilkan percakapan antara client. 

Pada bagian clientnya juga terdapat import threading, import socket, import argparse dan import os. Pada programnya terdapat class send yang manan ini nantinya akan melakukan send kepada server dimana juga terdapat def dan perulangan while dimana menggunakan if dan else. Jika quit makan akan berhenti dan akan memunculkan pesan "Quitting..." client nya akan close. Lalu juga terdapat class Receive yang mana akan menerimana pesn dari client nya berbeda saat terjadinya pertukaran pesan dimana jiga terdapat while jika berhasil maka akan muncul namun jika tidak berhasil  maka digunakan else yang nantinya akan memunculkan pesan "noh no, we have lost connection to the server" yang mana clientnya akan tertutp dengan sendirinya dan memunculkan pesan "Quitting...". Lalu juga terdapat class client yang mana  terdapat def start, jika dilakukan percobaan connect ke makan akan muncul pesan "Trying to connect to ..." dan jika berhasil connect maka akan muncul pesan "Successfully connected to ...", lalu kita dapat menginputkan nama dan nantinya setelah menginputkan nama akan muncul pesan "Welcome...! Getting ready to send receive message..." lalu percakapannya dimulai. Jika salah satu mengetikkan quit maka akan langsung keluar dari chat room nya. Saat terjadinya percakapan antara client maka otomatis akan langsung masuk ke server karena sudah terkoneksi. 

Pada percobaan diatas dilakukan koneksi antara 2 client ke server yang mana 2 client tersebut melakukan percakapan dan hasil percakapan anatara 2 client tersebut langsung masuk ke dalam server nya. 




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

Monday, November 7, 2022

Multiplexing

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

 Multiplexing


1. Dasar Teori

Konsep client-server merupakan dasar dari setiap transaksi yang terjadi pada setiap aplikasi jaringan. Socket merupakan antarmuka antara application process dan transport layer. Multiplexing adalah cara menangani beberapa klien dalam satu proses server. Aplikasi ini memungkinkan klien untuk terhubung ke server dan menambahkannya ke watch list. Watch list hanyalah sebuah array deskriptor soket. Kemudian sistem operasi memberitahu aplikasi klien (jika ada) yang perlu dilayani atau jika klien baru telah membuat koneksi. Untuk menangani permintaan dari client, server menggunakan fungsi select(). Fungsi select() merupakan sebuah fungsi sistem yang memungkinkan

2. Percobaan 

A.Program1

- server

- client

- output

Tugas 1

1. Amatilah dan analisa pogram datas, kemudian jelaskan cara kerjanya

Jawab: Pada percobaan 1 ini terdapat multiplexing server dan juga client dimana pada bagian ini terdapat beberapa import dan juga digunakannya def, lalu pada bagian ini juga dibuat main socket untuk menerima client request dimana pada bagian ini digunkan for,  kemudian juga terdapat loop untuk dengarkan dan multiflexing sampai server mati. Setelah itu terdapat while dimana itu digunakan untuk print readsocks dan juga port socket untuk menerima client baru seelah itu client socket dapat membaca baris selanjutnya pada bagian clientnya digunakan beberapa import  dan nantinya terdapat message "b'Hello network world" dan juga digunakan if dan for pada programnya. Default selector pada program ini adalah sebagai alias untuk implementasi paling efisien yang tersedia dimana pada bagian server akan dilakukan pembuatan socket utama untuk menerima permintaan client baru. Pada saat program client dijalankan maka pada bagian server akan muncul "b'Hello network world" dan server juga connect pada address dan id newsock nya. 

B. Program2

- server

- client

- output

Tugas 2

1. Amatilah dan analisa pogram diatas, kemudian jelaskan cara kerjanya

Jawab: Pada program 2 ini terdapat beberapa import yang mana juga terdapat serverSocket = socket.socket() yang berfungsi untuk membuat socket, lau juga terdapat socket AF_INET dan juga SOCK_STREAM. Kemuadian nantinya terdapat print dimana berisi message "Server socket bound with ip address" pada bagian servernya terdapat try yang mana nantinya akan menampilkan pada output server berupa "echo server has served {} connection so far dan juga "connection closed to ip". Pada bagian client nya Terdapat beberapa import yang mana digunakan juga fungsi def lalu nantinya client ini akan connect ke server dan saat dilakukan connect maka akan muncul pesan berupa "Connected to echo server at localhost" kemudian juga terdapat try pada programnya. 


C. Program3

- server

- client

- output

Tugas 3

1. Amatilah dan analisa pogram datas, kemudian jelaskan cara kerjanya

Jawab: Pada bagian program 3 ini akan dilakukan tcp multiplexing yang mana perbedaan nya pada percobaan sebelumnya adalah  terdapat konfigurasi socket dalam bentuk mode non-blocking. Pada bagian programnya digunakan selectors dan juga digunakan def yang mana didalamnya nanti akan terdapat program dan juga pesan "accepted from" yang nantinya akan muncul pada saat program dijalankan, lalu juga terdapat if else untuk enchoing dan closing. Kemudian juga terdapat while true yang mana terdapat callback untuk memanggil kembali. Pada bagian clientnya terdpat beberapa impor dan juga terdapat program yang mana pada saat program dijalankan makan akan muncul output dimana kita dapat mengisikan hostname dan juga local host, lalu juga dapat mengisikan payload dan juga kita dapat memilih apakah ingin mengirimkan data lebih ke server atau tidak, jika ingin mengirimkan data lebih maka akan masuk kembali ke bagian payload.