410 likes | 785 Views
Pengenalan Pemrograman Jaringan Materi 1. Pemrograman Jaringan. Dosen : Eko Prasetyo Teknik Informatika UMG 2012. Client-Server. Server, menyediakan sejumlah layanan . Layanan tersebut mempersilahkan klien untuk menghubungkan diri ke host server untuk tujuan mengakses layanan .
E N D
PengenalanPemrogramanJaringanMateri 1 PemrogramanJaringan Dosen: EkoPrasetyo TeknikInformatika UMG 2012
Client-Server • Server, menyediakansejumlahlayanan. • Layanantersebutmempersilahkanklienuntukmenghubungkandirike host server untuktujuanmengakseslayanan. • Klien, menginisialisasi dialog dengan server • Kliendisiniberupa program (software) bukanklienorang. • Layananumum yang disediakan server: web server, FTP server, database server, dsb. • Klienpenggunalayanan: web browser, ftp client, dsb.
Client-Server • Aplikasi instant messaging, masuk client-server atau peer-to-peer ? • Kebanyakanaplikasi messaging menggunakan model P2P, tapiuntukaplikasi yang lain halinitidakmungkindigunakanmengingatbanyaknyakoneksisimultan • Menggunakan server sebagaiperantaraantaraklienuntukmenabstraksikoneksi P2P antarklien.
Port dan Socket • Keduanyamerupakanjantungkomunikasijaringan. • Keduanyaberkolaborasidengan hardware komunikasi • Tetapikeduanyabukan hardware, melainkankonsepabstrak yang menjembatani programmer menggunakan link komunikasi. • Port adalahkoneksilogikpadakomputer (disampingadakoneksifisik) dandiindentifikasidenganangkadalam range 1-65545. • Port akandiimplementasikanselamasemuakomputerterhubungkejaringan • Hanyakomputerdengan program server saja yang mengunakansecaraeksplisitnomor port. • Port dengan range 1-1023 digunakanuntuklayananstandart • 80 : HTTP • 21: File Transfer Protocol (FTP) • 23: Telnet remote login service • 53: Domain Name System (DNS) service • Aplikasiumumnyamenggunakannomor port 1024-65535 • Kecualinomor-nomor port tertentu yang sudahdiakuisisi program tertentu, seperti: MySQL (3306-3308), MS SQL Server (1433)
Port dan Socket • Umumnya, banyakkliensecarabersamaanmenginginkanlayanan yang sama • Misal, banyak browser (ribuanmungkin) menginginkanhalaman web dari server yang sama. • Server perlumembedakandiantarakliendanmenjaga dialog denganmasing-masingsecaraterpisahsatusama lain. • Untukkebutuhanini, dicapaidenganmenggunakansocket. • Socket, merupakankonsepabstrak, bukanelemen hardware komputer. • Socket digunakanuntukmenandaisatudaridua end-point link komunikasiantaraduaproses. • Ketikaadasebuahklienmembuatkoneksike server, makaklienmembuat socket untuk link komunikasi. • Setelahditerimanyainisial request klien (padanomor port tertentu), server akanmembuat socket baruuntukklientersebutdankhususdigunakanuntukberkomunikasihanyauntukklientersebut. • Hanyasatu link hardware ke server yang dapatdiasosiasikandenganbanyak port, sehinggasatu port yang dapatdiasosiasikandenganbanyak socket.
Internet dan IP Addresses • internet (huruf “i” kecil) adalahkumpulanjaringankomputer yang mempersilahkansemuakomputer yang terhubungkejaringanberkomunikasidengankomputer lain yang berlokasidimanapun yang terhubungjugakejaringan (termasukjaringanlokal). • Protokol yang digunakanuntukberkomunikasiadalah Internet Protocol. • Internet (huruf “I” besar) adalahjaringanberbasis IP terbesardidunia. • Setiapkomputerpunya IP unik • Versi yang digunakansaatini IPv4 (32 bit) • Dalammasatransisike IPv6 (128 bit) • Misal: alamat 131.12.3.219 merupakansebuahalamat IP
Internet Services, URL dan DNS • URL (Uniform Resource Locator) adalah identifier unikuntuksegala resource yang beradadi Internet. • Notasipemanggilan: <protocol>://<hostname>[:<port>][/<pathname>][/<filename>[#<section>]] • Nomor port bolehtidakdisertakanjika server menggunakannomor port standart. • Jikanama file tidakdisertakanmakadiasumsikanmemanggil file index.html atau default.html. • Misal: http://java.sun.com/j2se/1.5.0/download.jsp • DNS (Domain Name System) adalahprotokoluntukmemetakanantaraalamat IP dengannama domain • Umumnyamanusialebihmudahmengingatnamadaripadaangka.
TCP • Packet-switched, pesan (kiriman data) dipecahmenjadisejumlahblokinformasi yang disebut packet • Setiappaketditanganisecaraterpisah • Memungkinkanmelintasijalurruteberbedadaripaket yang lain untukpesan yang sama. • IP bertugasmeneruskanpaket-paketmelewatijaringan • Tidakpeduliurutan, karenadiajugabertanggungjawabterhadaptrafikdisekitarnya. • Akibatnya: • Pakettidaksampaiditujuan (mungkinhilangdijalan), tapitidakadainformasidaripenerimamengenaiketidaksampaianpakettersebut. • Pakettibaditujuandenganbenartidak error), bisajuga error. • Tibaditujuandalamkondisitidakurutsepertisemula.
TCP • Karenamasalahdiatas, muncullahprotokol TCP (Transmission Control Protocol) • Mebolehkansetiapujungkoneksiuntukmengetahui status penerimaanpaket IP dan/ataupermintantransmisiulangpaket yang hilangataurusakdisisipenerima. • Kolaborasi IP dan TCP (manjadi TCP/IP) merupakanduaprotokolterbanyak yang digunakandalamaplikasijaringan.
UDP • TCP memberikanmekanismetransmisi yang terjamin, tetapiharusdibayardenganwaktu setup danpenggunaan overhead yang besarsehinggakapasitastransmisirelatifkecil. • Untukaplikasi transfer file, paketharusditerimautuhdenganurutan yang benar. • Untukaplikasi streaming, keutuhandanurutanpaketbukanhalpentingmelainkankapasitastransmisi data yang lebihdiutamakan. • Kebutuhantersebutdipenuhioleh User Datagram Protocol (UDP). • UDPmerupakanprotokolunreliable, karena: • Tidakmenjaminbahwasetiappaketakansampaiditujuan • Tidakmenjaminpakettibadenganurutan yang benar. • UDPtidakmelakukanpengirimanulangpaket yang error dantidakmengurutkankembalipaket-paket yang datang • Bekerjasecarasiginifikanlebihcepatdaripada TCP.
KelasInetAddress • Salahsatukelasdalampaket java.net adalahInetAddress • Menanganialamat Internet baik host name danalamat IP. • Method statisgetByName, menggunakan DNS untukmendapatkan IP • HarusmenambahkaneksepsiUnknownHostExceptiondalamblok try….catch, untuk hostname yang tidakdikenali.
Contoh Contoh: import java.net.*; import java.util.*; public class IPFinder { public static void main(String[] args) { String host; Scanner input = new Scanner(System.in); System.out.print("\n\nEnter host name: "); host = input.next(); try { InetAddress address = InetAddress.getByName(host); System.out.println("IP address: " + address.toString()); } catch (UnknownHostExceptionuhEx) { System.out.println("Could not find " + host); } } }
TCP Socket • Link komunikasi yang dibuatvias socket TCP/IP merupakanconnection-orientated link. • Artinya, hubunganantara server danklienakanterbukasepanjangdurasi dialog, danakanditutup (dalamsituasi normal) ketikasalahsatupihakmemintapemberhentianhubungan. • Keduanyamempunyaiprosesmasing-masing. • Ada 5 langkahdi server: • MembuatobjeckdarikelasServerSocket • Memposisikan server dalam status menunggu (waiting) • Melakukan input dan output stream • Mengirimdanmenerima data • Menutupkoneksi (setelah dialog selesai)
TCP Socket di server • MembuatobjeckdarikelasServerSocket Konstruktormemintanomor port 1024-65535 Misal: ServerSocketservSock = new ServerSocket(1234); • Memposisikan server dalam status menunggu (waiting) Mengunakan method accept darikelasServerSocket, yang akanmengembalikanobjekketikahubungandibentuk. Misal: Socket link = servSock.accept(); • Melakukan input dan output stream Methods getInputStreamdangetOutputStreamdarikelas Socket digunakanmenerimamasukandanmenngirimkankeluaranke link komunikasi yang dibuat. Keluaran method getInputStreamditampungolehobyekbertipekelas Scanner Misal: Scanner input = new Scanner(link.getInputStream()); Method getOutputStreamdilakukanolehobyekbertipekelasPrintWriter Misal: PrintWriter output = new PrintWriter(link.getOutputStream(),true); • Mengirimdanmenerima data Gunakan method nextLine Misal: output.println("Awaiting data..."); String input = input.nextLine(); • Menutupkoneksi (setelah dialog selesai) Gunakanmethos close darikelas Socket Misal: link.close();
TCP Socket diklien • Membentukkoneksidengan server Membuatobjek Socket, denganmenyertakan parameter dikonstruktor: • Alamat IP server (tipeInetAddress) • Nomor port yang digunakandi server • Misal: Socket link = new Socket(InetAddress.getLocalHost(),1234); • Melakukan input dan output stream Samadengandi server, menggunakan methods getInputStreamdangetOutputStreamdariobjek Socket. • Mengirimdanmenerima data Samadengandi server, menggunakanobjekdariScannerdanPrintWriter. • Menutupkoneksi Samadengandi server, mengunakan method closedarikelasSocket.
Contoh Keluaran program di server Keluaran program diklien
Datagram (UDP) Socket • Datagram socket merupakan connectionless, koneksiantara server danklientidakdikelolaselamat dialog. Setiappaket datagram dikirimsecaraterpisahkapanpundibutuhkan. • Karenakoneksitidakdikelolaselamatransmisi, server tidakmembuatobjekSocketsendiri-sendiriuntuksetiapklien. • Perbedaandengan socket TCP/IP adalahobjekServerSocket, server membuatobyekDatagramSocket, samadengansetiapklien yang inginmengirim datagram ke server. • ObjekDatagramPacketdibuatdandikirimdikeduaujungpihak. • Ada 9 prosesdi server: • MembuatobjekDatagramSocket • Membuat buffer untuk datagram yang datang • MembuatobjekDatagramPacketuntuk datagram yang datang • Menerima datagram yang datang • Menerimaalamatdan port pengirimdaripaket • Memindai data dari buffer • Membuat datagram jawaban • Mengirim datagram jawaban • MenutupDatagramSocket
Datagram (UDP) Socket di server • MembuatobjekDatagramSocket Misal: DatagramSocketdatagramSocket = new DatagramSocket(1234); • Membuat buffer untuk datagram yang datang Membuat array byte Misal: byte[] buffer = new byte[256]; • MembuatobjekDatagramPacketuntuk datagram yang datang Konstrkturobjekmembutuhkan 2 argumen: byte array yang sudahdibuatdanukuran array tersebut. Misal: DatagramPacketinPacket = new DatagramPacket(buffer, buffer.length); • Menerima datagram yang datang Menggunakan method receive dariobjekDatagramSocket, diterimadenganobjekDatagramPacket Misal: datagramSocket.receive(inPacket); • Menerimaalamatdan port pengirimdaripaket Menggunakan method getAddressdangetPortdariobjekDatagramPacket Misal: InetAddressclientAddress = inPacket.getAddress(); intclientPort = inPacket.getPort();
Datagram (UDP) Socket di server • Memindai data dari buffer Untukpenyederhanaan, disinidigunakan string untuk data yang dikirim. Ada 3 argumen yang dibutuhkan: array byte, posisiawaldalam array (=0), danjumlah byte (=ukuran total buffer) Misal: String message = new String(inPacket.getData(), 0,inPacket.getLength()); • Membuat datagram jawaban MembuatobjekDatagramPacketmenggunakan overloading konstruktordengan 4 argumen: array byte yang berisipesan, ukuranjawaban, alamatklien, dan port klien. Misal: DatagramPacketoutPacket = new DatagramPacket(response.getBytes(), response.length(),clientAddress, clientPort); • Mengirim datagram jawaban Menggunakan method senddariobjekDatagramSocket. Misal: datagramSocket.send(outPacket); • MenutupDatagramSocket Menggunakan method closedariobjekDatagramSocket. Misal: datagramSocket.close();
Datagram (UDP) Socket diklien • MembuatobjekDatagramSocket • Membuat datagram keluar • Mengirimpesan datagram • Membuat buffer untuk datagram masuk • MembuatobjekDatagramPacketuntuk datagram masuk. • Menerima datagram masuk • Membaca data dari buffer • MenutupDatagramSocket
Datagram (UDP) Socket diklien • MembuatobjekDatagramSocket SamadenganpembuatanobjekDatagramSocketdi server, tapitidakmemakaiargumen. Misal: DatagramSocketdatagramSocket = new DatagramSocket(); • Membuat datagram keluar Samadenganlangkah 7 di server Misal: DatagramPacketoutPacket = new DatagramPacket(message.getBytes(), message.length(), host, PORT); • Mengirimpesan datagram Denganmemanggilmethod senddariobjekDatagramSocketdanargumennyaobjekdariDatagramPacket Misal: datagramSocket.send(outPacket); • Membuat buffer untuk datagram masuk Samadenganlangkah 2 di server Misal: byte[] buffer = new byte[256];
Datagram (UDP) Socket diklien • MembuatobjekDatagramPacketuntuk datagram masuk. Samadenganlangkah 3 di server Misal: DatagramPacketinPacket = new DatagramPacket(buffer, buffer.length); • Menerima datagram masuk Samadenganlangkah 4 di server Misal: datagramSocket.receive(inPacket); • Membaca data dari buffer Samadenganlangkah 6 di server Misal: String response = new String(inPacket.getData(),0, inPacket.getLength()); Langkah 2-7 bisadiulangsebanyak yang diinginkan. • MenutupDatagramSocket Samadenganlangkah 9 di server Misal: datagramSocket.close();
Contoh Keluaran program di server Keluaran program diklien