510 likes | 728 Views
DASAR SOCKET PROGRAMMING . Tujuan. Mahasiswa memahami konsep aplikasi client server di jaringan . Mahasiswa memahami konsep pemprograman socket. Mahasiswa memahami jenis – jenis pemrograman socket. Mahasiswa mampu membangun program socket sederhana . Peralatan Yang Dibutuhkan.
E N D
Tujuan • Mahasiswamemahamikonsepaplikasi client server di jaringan. • Mahasiswamemahamikonseppemprogramansocket. • Mahasiswamemahamijenis – jenispemrograman socket. • Mahasiswamampumembangun program socket sederhana.
Peralatan Yang Dibutuhkan • Beberapakomputer yang berfungsisebagai server. • Beberapakomputer yang berfungsisebagai client. • Hub/switch sebagaipenghubungjaringan. • Kabeljaringansecukupnya.
DasarTeori Setiapaplikasi di jaringan, transaksinyadidasarkanpadakonsep client-server. Sebuah server dansebuahataubeberapa client yang meminta/request pelayananke server. Fungsi server sebagaipengatur resource yang ada, yang menyediakanpelayanandenganmemanfaatkanresource untukkebutuhan client. Proses ini (proses client-server) bisadijalankanpadasebuahkomputer (komputertunggal) ataubisajugasatukomputerberfungsisebagai server dansebuahataubeberapakomputerberfungsisebagai client.
Aplikasi client-server menggunakan protocol transport untuksalingberinteraksi. Ketika proses interaksiterjadi, suatuaplikasiharusmemberikaninformasi- informasisecara detail tentang : • Informasitentangapakahdia client atau server. • Pengirimmemberikaninformasitentangdata yang dikirim. • Penerimamemberikaninformasitentangdimana data diletakkan, dll.
Antarmuka (interface) antara program aplikasidenganprotokolkomunikasipadasuatusistemoperasidisebut Application Program Interface (API). API didefinisikansebagaisuatukumpulaninstruksi yang mendukung proses interaksiantarasuatuperangkatlunakdengansuatuprotokol yang digunakan
Padamesinkeluarga Linux, socket terintegrasidengan I/O sehinggaaplikasi yang berkomunikasidengan socket, carakerjanyasamadengansuatuaplikasi yang mengaksesperalatan I/O. Olehkarenaituuntukmemahamicarakerja socket padaLinux, sebelumnyaharusjugamemahamifasilitas I/O padaLinux
Padasaatsuatuaplikasiberkomunikasi, awalnyaaplikasimembuatsocketbaru, makapadaaplikasitersebutakandiberikannomer yang digunakansebagaireferensi socket. Jikaadasuatusistem yang menggunakannomerreferensisocket tersebut, makaakanterjalinsuatujaringankomunikasiantarkomputersebaik transfer data lokal
Untukberkomunikasidengan server, client harustahunomor IP server begitujuganomor port yang dituju, nomor port menunjukkan service yang dijalankan. Contoh port 23 untuk Telnet Server, port 25 untuk Mail Server dan port 80 untuk Web Server. Dalamhaliniaplikasi di client sudahmengetahui port yang akandituju. Contoh program aplikasi di client yang meminta service di server adalah ftp, telnet, ssh. Untukmelihat service bisadilihatpada file/etc/services. Program yang berjalan di server, akanberjalansepanjangwaktu (disebutsebagai daemon) sampaimesin/service dimatikan, menunggu request dari client sesuai service yang diminta.
Jadi Socket adalahmekanismekomunikasi yang memungkinkanterjadinyapertukaran data antar program atau proses baikdalamsatumesinmaupunantarmesin. Gaya pemrogramansoketsendiriberawaldarisistem Unix BSD yang terkenaldengankepeloporannyapadabidangpenangananjaringan, sehinggaseringdisebut BSD Socket. Socket pertama kali diperkenalkan di sistem Unix BSD versi 4.2 tahun 1983 sebagaikelanjutandariimplementasiprotokol TCP/IP yang munculpertama kali padasistem Unix BSD 4.1 padaakhir 1981. Hampirsetiapvarian Unix dan Linux mengadopsi BSD Socket
Linux menggunakanparadigma open-read-write-close. Sebagaicontoh, suatuaplikasipertamaharusmemanggil open untukmenyiapkan file yang akandiakses. Kemudianaplikasitersebutmemanggil read atau write untukmembaca data dari file ataumenuliskan data ke file. Setelahitu close dijalankanuntukmengakhiriaplikasi yang digunakan
Di dalamkotakmenunjukkan system call/function yang dibutuhkanuntukkoneksi/komunikasi, misal socket(), bind(), listen(), connect(), dll. Secaragarisbesarlangkah–langkah yang dilakukanpada client dan server adalahsebagaiberikut :
Langkah – langkahdasar di client : • Membukakoneksi client ke server, yang di dalamnyaadalah : • Membuat socket denganperintah socket() • Melakukanpengalamatanke server. • Menghubungi server dengan connect() 2. Melakukankomunikasi (mengirimdanmenerimadata), denganmenggunakanperintah write() dan read( ) 3. Menutuphubungandenganperintah close();
Langkah – langkahdasar di server : • Membuat socket denganperintah socket() • Mengikatkan socket kepadasebuahalamat network denganperintah bind() • Menyiapkan socket untukmenerimakoneksi yang masukdenganperintah listen() • Menerimakoneksi yang masukke server denganperintah accept() • Melakukankomunikasi (mengirimdanmenerima data), denganmenggunakanperintah write() dan read( )
StrukturPengalamatan Jaringankomputerdalammelakukanpengiriman data bisadiilustrasikansebagaipengirimansurat. Supayasuratbisaterkirimsecarabenarmakaalamatpengirimdanpenerimaharustertulisdenganjelasdanlengkap. Begitujugadalamkoneksi di socket, diperlukan variable yang dipakaiuntukmenyimpan address client dan server. Variable yang dipakaiberupa structure sockaddrdansockaddr_inpada include socket.h di direktory /usr/include/sys. Address iniakandipakaipadawaktumelakukan connect(), bind() dan accept().
Langkah – Langkah Program di Client 1. Berikutiniadalahprosedurpembukaankoneksi client ke server padahostname:porttertentu. Di dalamnyatermasukmembuat socket, melakukanpengalamatanke server danmelakukankoneksike server denganperintahconnect()
Langkah demi langkahkoneksi client ke server adalahsebagaiberikut : a. Membuat socket dengan perintah socket() • IF_INETmenunjukkanbahwa socket dihubungkandenganprotokol internet. • SOCK_STREAM menunjukkanbahwa program inimemakai stream socket/TCP, yang berarticonnecton oriented.
b. Selanjutnyasetelahmembuat socket melakukanpengalamatanke server
2. Melakukan komunikasi (mengirim dan menerima data), dengan menggunakan perintah write() dan read( ) 3. Menutuphubungandenganperintah close();
Langkah – langkah Program di Server • Melakukanprosedurpembukaankoneksi yang di dalamnyaberupalangkah–langkah : membuat socket, mengikat socket, menyiapkan socket menerimakoneksi, pengalamatan socket
Langkahmembuat socket, mengikat socket, menyiapkan socket menerimakoneksi, pengalamatan socket beradapadaprosedureopen_listenfd().
Langkah demi langkahmembuatkoneksi di server adalahsebagaiberikut : • Membuat socket dengan perintah socket() • Melakukanpengalamatan
Mengikatkan socket kepadasebuahalamatnetwork denganperintah bind()
Menyiapkan socket untukmenerimakoneksi yang masukdenganperintah listen()
Looping utamaadalahmenerimakoneksi, danmelakukankomunikasi data (mengirimdanmenerima)
Langkah demi langkah looping utamaadalah : • Menerimakoneksi yang masukke server denganperintahaccept()
Ilustrasiprosedur accept() jikadigambarkanadalahsebagaiberikut :
Melakukankomunikasi (mengirimdanmenerima data), denganmenggunakanperintah write() dan read( ) • Menutup socket.
TugasPendahuluan • Bagaimanakonsep Client Server dalamjaringankomputer • Jelaskansecarasingkatapa yang andaketahuitentangProtokol Transport. • Dalamprotokol transport terdapatduaprotokolutamayaitu TCP and UDP, jelaskanperbedaan TCP dan UDP. • Berikancontohaplikasi –aplikasi yang menggunakanprotokol TCP, danjelaskanbagaimanakerjaaplikasitersebut. • Jelaskanlangkahdanprinsipkerja socket programming untukkomunikasiduaarah
Percobaan • Dengan memakai editor vi tuliskan kembali program di bawah ini. Ada dua bagian program,client dan server. Simpan sesuai dengan nama yang ada pada comment program
Jalankanprogram tersebut, output apa yang dihasilkandari program tersebut. • Berikankomentartiapbarispada program tersebutapamaksuddankegunaanperintahdiatasbiladihubungkandengan socket datagram. • Buatlahprogram memakai datagram socket yang bisamengirimkan data posisijam client sekarangke server