Pemrograman Jaringan 0
Deskripsi
• Matakuliah: Pemrograman Jaringan
• SKS: 3
• Dosen: Antonius Rachmat C, S.Kom, M.Cs
• Waktu: Senin, 7.30-10.20
• Ruang: LAB E
• Deskripsi:
– Mempelajari konsep-konsep jaringan pada
layer aplikasi dan teknik pemrogramannya
menggunakan Java
Tujuan
• memahami bagaimana Internet bekerja, arsitekturnya dan protokol TCP/IP
• memahami bagaimana input dan output pada Java • mampu mengembangkan program client dan server
dengan menggunakan protokol User Datagram Protocol (UDP) dan Transport Control Protocol (TCP)
• mampu mengembangkan aplikasi multithread
• memahami protokol Hyper-Text Transfer Protocol
(HTTP), dan mengetahui bagaimana mengakses World Wide Web menggunakan Java
• mampu mengembangkan aplikasi terdistribusi seperti Remote Method Invocation (RMI) dan CORBA
Silabus
• Perkenalan + Refresh Java
• Pengantar Jaringan 1
– Jaringan Komputer & Protokol – IP Address, Port, Socket
– TCP dan UDP – Internet
• Pengantar Jaringan 2
– Client/Server Model – Middleware
– Konsep dasar web
Silabus-2
• Java OOP – mungkin tidak perlu?
– Class, Object
– Polymorfishm, Inheritance, Encapsulation – JavaDoc
• IO dan Stream
– File
– Input, Output, Filter, dan Reader
• Pemrograman HTTP
– Protokol HTTP
– Metode Get dan Post
Silabus-3
• Pemrograman Socket
– Connection Oriented
• Threading
– Multithreading, Synchronization
• Socket Multithreading, JAR dan JDBC
– Add, insert, delete, edit
• Pemrograman Socket
Silabus-4
• Komunikasi Antar Obyek
– Obyek Serialization
• Remote Method Invocation
– Konsep & Aplikasi
• CORBA
– Konsep & IDL
Daftar Pustaka
• Budi Susanto, Pemrograman Client/Server dengan Java 2, 2003, Jakarta : PT. Elexmedia Komputindo
• Elliotte Rusty Harold, Java Network Programming, 3rd Edition, 2004, O’Reilly
• Vinay Chhabra, A Beginners Guide to RMI,
www.universalteacher.com
• Java™ Network Programming and Distributed
Computing by David Reilly & Michael Reilly, Addison Wesley, 2002
• An Introduction to Network Programming with Java, Jan Graba, Springer, 2007
• Java Cookbook, 2nd Edition, Ian F. Darwin, O'Reilly, 2004
Distribusi Nilai
• 85-100
A
• 80-<85
A-• 75-<80
B+
• 70-<75
B
• 65-<70
B-• 60-<65
C+
• 55-<60
C
• 45-<55
D
• <45
E
Komponen Penilaian
• TTS
: 25
• TAS
: 25
• Tugas : 15
– Carilah program jaringan di Internet yang sdh
jadi, analisa, buat laporannya, kumpul TTS!
• Tugas Lab: 35
Pengantar Java
• Java adalah bahasa pemrograman yang sangat powerfull • Write Once Run Everywhere - multiplatform
• Mendukung OOP murni • Versi terbaru 1.6
• J2RE = runtime environment • J2SE = standard edition
– J2SE can be used to develop client-side standalone applications or applets.
• J2EE = enterprise edition
– J2EE can be used to develop server-side applications such as Java servlets and Java ServerPages.
• J2ME = micro edition
– J2ME can be used to develop applications for mobile devices such as cell phones.
Sejarah
• Java pertama lahir dari The Green Project,
yang berjalan selama 18 bulan, dari awal
tahun 1991 hingga musim panas 1992.
• Proyek ini dimotori oleh Patrick Naughton,
Mike Sheridan, James Gosling dan Bill
Joy, beserta sembilan pemrogram lainnya
dari Sun Microsystems.
• Lahirlah maskot Duke yang dibuat oleh
Joe Palrang
Sejarah (2)
• Nama Java pertama adalah project Oak,
diambil dari pohon oak yang tumbuh di depan
jendela ruangan kerja James Gosling.
• Nama Oak ini tidak dipakai untuk versi release
Java karena sebuah perangkat lunak sudah
terdaftar dengan merk dagang tersebut,
sehingga diambil nama penggantinya menjadi
"Java".
• Nama Java ini diambil dari kopi murni yang
digiling langsung dari biji (kopi tubruk) kesukaan
Gosling.
The Java programming
environment
• Compared to C++: simple
– no header files, macros, pointers and references, unions, operator overloading, templates, etc.
• Object-oriented
• Distributed: RMI, Servlet, Distributed object programming.
• Robust: Strong typing + no pointer + garbage collector
• Secure: Type-safety + access control
• Architecture neutral
• Portable
• Compiled & Interpreted
– High performance
– Just in time compilation + runtime modification of code • Multi-threaded
The Java programming
environment
• Java byte code: Intermediate representation for Java programs
• Java compiler: Transform Java programs into Java byte code
• Java interpreter: Read programs written in Java byte code and
execute them
• Java virtual machine: Runtime system that provides various services
to running programs
• Java programming environment: Set of libraries that provide
services such as GUI, data structures,etc.
• Java enabled browsers: Browsers that include a JVM + ability to
Editor
• Rekomendasi text editor: Jcreator dan
KAWA Java Editor
• Rekomendasi GUI editor: NetBeans,
Jbuilder, dan Eclipse, Xcode IDE (for
MAC)
Prinsip Pembuatan
• pada satu file source java ( .java ) hanya diperbolehkan terdapat definisi satu public class.
• dalam satu public class java akan mencari sebuah method (subprogram) yang bersifat statis dan public yang bernama main.
• method main ini menerima parameter array string. • Jika ditemukan maka Java akan mengeksekusi blok
perintah dalam method main tersebut. Jika tidak ada method main maka Java tidak akan mengeksekusi apapun.
• Tanpa method main, program Java bisa dikompilasi, tidak bisa dieksekusi
• Sintaks penulisan keyword ataupun identifier dalam Java bersifat case-sensitive.
How are Java programs
written?
• Define a class HelloWorld and store it into a file: HelloWorld.java:
public class HelloWorld {
public static void main (String[] args) { System.out.println(“Hello, World”); } } • Compile HelloWorld.java javac HelloWorld.java Output: HelloWorld.class • Run java HelloWorld Output: Hello, World
Compilation & Execution Phase
Source Code Create/Modify Source Code
Compile Source Code i.e. javac Welcome.java
Bytecode
Run Byteode i.e. java Welcome
Result
If compilation errors
If runtime errors or incorrect result
Java Interpreter on Windows Java Interpreter on Sun Solaris Java Interpreter on Linux Bytecode ...
Compiling and Running
HelloWorld.java
javac HelloWorld.javajava HelloWorld
HelloWorld.class
compile run
bytecode source code
Java bytecode and interpreter
• bytecode is an intermediate representation
of the program (class).
• The Java interpreter starts up a new
“Virtual Machine”.
• The VM starts executing the users class
by running it’s
main()
method.
PATH and CLASSPATH
• The java_home/bin directory is in your
$PATH
• If you are using any classes outside the
java or javax package, their locations are
included in your $CLASSPATH
Anatomy of a Java Program
• Comments : // dan /* … */
• Package : dianalogikan sebagai folder
• Modifiers : public, private, protected
• Statements : diakhiri dengan semicolon (;)
• Blocks :
• Classes :
a template or blueprint for
objects
• Methods : behaviour / function of class
• The main method
public class Test {
public static void main(String[] args) { System.out.println("Welcome to Java!"); }
}
Class block Method block
Tipe Data
• Terdapat beberapa tipe data primitif atau
dasar :
– Numerik bulat: int, byte, short, long
– Numerik pecahan: float, double
– Logika: boolean
– Karakter: char
Reference Types
• Objects and Arrays are reference types
• Primitive types are stored as values.
• Reference type variables are stored as
references (pointers that we can’t mess
with).
Primitive vs. Reference Types
int x=3;
int y=x;
Point p = new Point(2.3,4.2);
Point t = p;
Point p = new Point(2.3,4.2);
Point t = new Point(2.3,4.2);
There are two copies of the value 3 in memory
There is only one Point object in memory!
How are variables declared?
Fibonacci:
class Fibonacci {
public static void main(String[] arg) { int lo = 1; int hi = 1; System.out.println(lo); while (hi < 50) { System.out.println(hi); hi = lo + hi; lo = hi – lo; } } }
How to define expressions?
• Arithmetic: +, -, *,/, %, =
8 + 3 * 2 /4
Use standard precedence and associativity rules
• Predicates: ==, !=, >, <, >=, <=
public class Demo {
public static void main (String[] argv) { boolean b;
b = (2 + 2 == 4);
System.out.println(b); }
Casting
• Casting diperlukan ketika kita akan
“memaksa” penyesuaian dari satu tipe
data ke tipe data lain.
• Pada pemrograman berbasis objek
casting diperlukan untuk menyesuaikan
suatu tipe objek (class) ke tipe objek
Konversi/Casting
• Widening conversions
– int a = 123123123;
– float b = a; //ok
• Narrowing conversions
– long a = 123123L
– int b = a; //compiler error
– int b = (int) a; //ok
– long d = 123123123123L
Konversi Tipe Data
• Konversi String ke Numerik
– int i = Integer.valueOf(“22”).intValue();
– long l = Long.valueOf(“23132323”).longValue();
– double x = Double.valueOf(“20100.025”).doubleValue(); – float y = Float.valueOf(“200.45”).floatValue();
Konversi Tipe Data
• Non Decimal Integer
• To convert string containing the hexadecimal
number "F7" to an integer
Number to string conversion
• Concatenation (+): Anything concatenated to a string is converted to string (eg, "weight = " + kilograms).
• java.text.DecimalFormat gives you precise control over the formating of numbers (number of decimal places, scientific notation, locale formatting, ...).
• Individual wrapper class methods, eg, Integer.toString(i). concatenation works as well for the simple cases, but
there are some interesting additional conversions here. • No conversion required. Some common system methods
Contoh
• Contoh 1:
float price = 23.99f;
String priceStr = "" + price;
• Contoh 2:
int years = 22;
How are simple methods
defined?
Every method is defined inside a Java class definition
public class Movie {
public static int movieRating(int s, int a, int d) { return s+a+d;
} }
public class Demo {
public static void main (String argv[]) {
int script = 6, acting = 9, directing = 8; displayRating(script, acting, directing); }
public static void displayRating(int s, int a, int d){ System.out.print(“The rating of this movie is”); System.out.println(Movie.movieRating(s, a, d)); }
Tidak bisa pada int
Flow Control
• IF Syntax :
– if(kondisi) <statement> – If(kondisi) { <statements> } else { <statements> }Flow Control
Perulangan
• while(kondisi) { <statements> }
• do{ <statements> } while(kondisi);
• for(<init> ; <kondisi> ; <inc/dec>) {
<statements> }
Inputan
• Menerima input dari user:
– Menggunakan java.util.Scanner Scanner s = new Scanner(System.in); System.out.print("nama : ");
String nama = s.next();
System.out.println("nama anda : " + nama);
– Menggunakan Argumen dari parameter String args[] dalam method main.
• Masing-masing inputan dipisahkan menggunakan spasi. • Setiap input diterima sebagai String sesuai urutannya.
– Menggunakan BufferedReader
String userInput = null;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
userInput = br.readLine();
– Menggunakan JOptionPane
String coba = JOptionPane.showInputDialog(null,"Inputkan angka","Input",JOptionPane.OK_CANCEL_OPTION);
Array pada Java
• int[] myArray = {1,2,3};
• int[] myArray2 = new int[4];
– myArray2[0] = 1;
• int[][] duaD = new int[2][2];
– duaD[i][j] = 1;
• Gunakan length untuk mengetahui jml elemen
array
• If the value of an index is negative or greater
than the array length then an
Matriks
•Buatlah kelas bernama Matriks
Tugas
• Buatlah sebuah class bernama UserInput yang
berguna untuk menerima inputan dari pengguna
dari Console, menggunakan BufferedReader
– Method getInt
– Method getDouble – Method getString
• Kemudian gunakan untuk membuat program
perhitungan luas segitiga, persegi panjang, dan
lingkaran (dalam bentuk menu)
Pemrograman Jaringan 1
Lanjutan kelas Matriks
• Throw Exception
• Gunakan dalam Penjumlahan dan
Perkalian Matriks
Exception
• Dalam judul method:
– void namaMethod() throws Exception { .. }
• Dalam if: if(kondisi) { … } else throw
Exception();
A Communications Model
• Source
– Menghasilkan data untuk ditransmisikan • Transmitter
– Mengkonversikan data ke dalam sinyal yang bisa ditransmisikan
• Transmission System
– Sistem pembawa data • Receiver
– Mengkonversi sinyal yang diterima ke dalam data • Destination
Network Program
• Dengan jaringan, sebuah program jaringan
dapat menerima informasi dari seluruh komputer
yang ada diseluruh dunia. Dapat juga
berkomunikasi dengan banyak orang diseluruh
dunia, namun juga dapat mengancam
komputer-komputer diseluruh dunia (seperti DIE HARD 4?)
• Program jaringan yang simple dan terkenal
adalah client server
– Contoh: browser-web server, chatting/messenger, multiplayer games, peer-to-peer applications seperti Gnutella.
Apa yg dapat dilakukan NP?
• Retrieve Data
– Paling banyak dipakai
– Cth: browser, RSSReader
• Send Data
– Cth: File Storage , Grid Computing
• Peer to Peer Interaction
– Cth: Games, Chat/Messenger, File Sharing
• Web Based Application: ex Search Engine
• E-Commerce
Applications of Network
Programming
• Network Tools
– traditional: telnet, ftp, rsh, rlogin, SMTP,
• Internet Tools
– gopher, HTTP, NTP, Chat rooms
• Collaborative Tools
– Application Sharing , Desktop Conferencing, Distance Learning
• Distributed Object Computing
– SUN RPC, CORBA, JAVA RMI
IRI: Interactive Distance
Learning
MASH: Internet-based Video
Conferencing
Networking
• Point to point communication: tidak praktis
– Devices terlalu jauh
– Kumpulan device akan membutuhjan koneksi
yang sangat banyak
Computer Network
• Jaringan komputer adalah seperangkat
komputer otonom yang saling terhubung
yang secara eksplisit terlihat, sehingga
dapat saling bertukar informasi/data, dan
berbagai (share) satu dengan yang
Networking Concept
• Setiap mesin dalam sebuah jaringan disebut “node”. • Node dapat berupa komputer, printer, router, bridge,
gateway dan lain-lain.
• Node-node yang berupa komputer yang memiliki fungs disebut “host”.
• Setiap node memiliki alamat tertentu yang disebut IP. • Alamat yang dipakai harus berbeda-beda.
– Setiap host selalu memeriksa setiap alamat yang ada agar jangan sampai sama
– Jika suatu alamat sudah dipakai maka akan secara random membuat alamat yang baru sampai alamatnya tidak sama dengan yang lain dalam satu jaringan yang sama.
Networking Concept
• Kini, alamat jaringan dapat menggunakan
“nama” sehingga manusia dapat lebih mudah
mengingatnya.
• Pada kenyataannya “nama” ini akan diubah
dahulu menjadi alamat byte pada saat
pemrosesan.
– Hal ini diatur oleh DNS (Domain Name System).
• Satu atau lebih nama harus mewakili satu
alamat byte fisik.
– Hal ini akan diatur oleh Server Alias pada Server.
– Misalnya : localhost dan antonie.com dapat menunjuk pada satu alamat IP yang sama yaitu 127.0.0.1
Jenis Jaringan Komputer
• LAN (Local Area Network). Kecepatannya tinggi untuk suatu lingkungan lokal tertentu saja.
• MAN (Metropolitan Area Network). Kecepatannya
masih tinggi untuk suatu lingkungan yang cukup jauh. Biasanya menyediakan backbone untuk koneksi ke
internet.
• WAN (Wide Area Network). Untuk koneksi jaringan
dengan jarak yang sangat jauh. Merupakan gabungan dari infrastruktur jaringan yang heterogen. Contoh : Internet.
• Wireless Area Network. Pengaksesan jaringan dengan menggunakan gelombang radio pendek.
Pengiriman Data
• Dua jenis teknologi switching:
– Circuit switching
– Packet switching
• Data dikirim dari satu node ke node lain.
• Pengiriman tidak dilakukan sekaligus
Circuit Switching
• Untuk komunikasi 2 stasiun / node
– Transfer
– Disconnect
• Harus memiliki kemampuan routing
• Biasa dipakai pada jaringan telepon
Circuit Switching - Applications
• Inefficient
– Channel capacity didedikasikan untuk suatu koneksi, jika tidak ada data, maka kapasitasnya mubazir
• Set up (connection) butuh waktu
• Circuit switching didesain untuk voice
– Resources didedikasikan untuk suatu panggilan tertentu
– Jika idle, waktu banyak terbuang – Data rate is fixed
Packet Switching Principles
• Data transmitted in small packets
– Typically 1000 bytes
– Longer messages split into series of packets
– Each packet contains a portion of user data plus some control info
• Control info
– Routing (addressing) info
• Packets are received, stored briefly (buffered)
and past on to the next node
Switching Technique
• Station breaks long message into packets
• Packets sent one at a time to the network
• Packets handled in two ways
– Datagram
Datagram
• Each packet treated independently
• Packets may arrive out of order
• Packets may go missing
• Up to receiver to re-order packets and
recover from missing packets
Protocols
• Untuk berkomunikasi antar aplikasi dalam sistem • Harus berkomunikasi menggunakan “bahasa yang
sama” • Entities – User applications – e-mail facilities – terminals • Systems – Computer – Terminal – Remote sensor
Protocol Architecture
• Tugas-2 komunikasi dibagi kedalam
modul-2 / bagian-2.
• Contoh: file transfer dibagi ke dalam 3
modul:
– Aplikasi file transfer
– Modul Communication service
– Modul Network access
TCP/IP Protocol Architecture
• Developed by the US Defense Advanced
Research Project Agency (DARPA) for its packet
switched network (ARPANET)
• Used by the global Internet
• No official model but a working one.
– Application layer
– Host to host or transport layer
– Internet layer
– Network access layer
– Physical layer
TCP/IP Protocol Architecture(1)
• Application Layer
– Communication between processes or applications
• Host to host, or transport layer (TCP/UDP/…)
– Reliable delivery of data – Ordering of delivery
• Internet Protocol
– Menentukan jalur: jalur yang ditempuh antara pengirim dan penerima.
– Switching: memindahkan paket dari input router ke output router yang sesuai.
– Call Setup: beberapa arsitektur jaringan membutuhkan setup koneksi dahulu.
TCP/IP Protocol Architecture(2)
• Network Layer
– Logical interface between host and network
• Physical Layer
– Transmission medium
TCP
• Transmission Control Protocol, pada transport layer
– Reliable connection
• Adanya pengecekan error • Dijaga urutan message
• Komunikasi duplex – dua arah • Segmentasi - TCP PDU
– Called TCP segment
– Includes source and destination port
• Identify applications
• Connection refers to pair of ports
• TCP tracks segments between entities on each connection
UDP
• User Datagram Protocol
• Not guaranteed delivery
• No preservation of sequence
• No protection against duplication
• Minimum overhead
• Adds port addressing to IP
• Contoh: DNS, streamming
OSI Model
• Open Systems Interconnection
• Developed by the International
Organization for Standardization (ISO)
• Seven layers
• A theoretical system delivered too late!
• TCP/IP is the de facto standard
OSI Layers
• Application
• Presentation
• Session
• Transport
• Network
• Data Link
• Physical
Port Service
• Echo, port 7
– Echo is a test protocol used to verify that two machines are able to connect by having one echo back the other's input.
• FTP
– Port 20 is used to transfer files.
– Port 21 is used to send FTP commands like put and get.
• SSH, port 22
– Used for encrypted, remote logins.
• Telnet, port 23
– Used for interactive, remote command-line sessions.
• Smtp, port 25
Port Service
• HTTP, port 80
– The underlying protocol of the World Wide Web.
• POP3, port 110
– protocol for the transfer of accumulated email from the host to sporadically connected clients.
• NNTP, port 119
– Usenet news transfer; more formally known as the "Network News Transfer Protocol".
• IMAP, port 143
– Internet Message Access Protocol is a protocol for accessing mailboxes stored on a server.
• RMI Registry, port 1099
Internet v internet
• The Internet is the world's largest IP-based
network.
• internet adalah interconnection network
dalam suatu jaringan tertentu misalnya
dalam perusahaan
Tujuan Internet RFC 871
• Resource sharing between networks
– Internet must support a variety of networking
gateways
• Interoperability
– Internet must support a variety of networking
gateways
• Reliability and robustness
• Efficient and Simple
Security Issues
• Firewall
– Mesin khusus yang dikonfigurasikan untuk menjaga sesuatu yang merusak dan menjaga incoming dan outgoing data.
– Biasanya firewall system akan membatasi suatu akses keluar komputer dengan membatasi services yang tidak perlu untuk meminimalisasi potensi
cracking/hacking
– The firewall works by intercepting incoming communication from machines on the Internet, an outgoing communication from machines within a local area network.
– It operates at the packet level, intercepting IP datagrams that reach it. By
examining the header fields of these datagrams, the firewall can tell where the datagram is heading and from where it
Security Issues
• Proxy Server
– Sebuah mesin yang bertindak sebagai proxy untuk protokol aplikasi.
– Server menerima koneksi yang masuk dari local network dan membuat request ke mesin yang terkoneksi dengan Internet
– 2 Keuntungan:
• Akses langsung ke internal machines tidak pernah terjadi dan proxy server dapat mengkontrol transaksi.
– Hak akses HTTP dapat dibatasi terhadap website-website
tertentu saja, dan akses ke RealAudio atau Game dan software aplikasi lain juga tidak bisa dilakukan
Praktikum
• Masih teori, jadi masih refresh PBO!
• Buatlah kelas Point, Line, Polygon,
Rectangle, dan Triangle
• Baca method-methodnya dari javadoc
yang disediakan
Pemrograman Jaringan 2
anton@ukdw.ac.id
Minggu Lalu?
• Kumpulkan tugas
• Pembahasan
Client-Server Model
• Model Client-Server tidak lepas dari sistem
terdistribusi
• Sistem Terdistribusi:
"A system in which hardware or software
components located at networked computers
communicate and coordinate their actions only
by message passing." [Coulouris]
• Dalam SisTer komputer-komputer yang saling
terhubung, tidak terlihat secara fisik
Distribusi Fungsi
• Dengan pembagian fungsi untuk tiap
komponen dalam sistem client server,
berikut manfaat yang ada :
– Berbagi resource
– Berbagi beban kerja
– Tidak membedakan platform
– Meningkatkan efisiensi
Software Layer
• Arsitektur Software
– Lapisan atau modul dalam sebuah komputer tunggal
– Mendefinisikan layanan yang ditawarkan atau diminta antar proses pada satu atau berbeda komputer
– Ide dasarnya membagi sistem yang komplek dalam struktur lapisan dan layanan.
• Antar layer mendefinisikan antar muka
Middleware
• Software yang berfungsi sebagai lapisan
konversi atau penerjemah.
• S/W penghubung yang berisi sekumpulan
layanan yang memungkinkan beberapa proses
dapat berjalan pada satu atau lebih mesin untuk
saling berinteraksi pada suatu jaringan
• Juga sebagai integrator.
• Middleware saat ini dikembangkan untuk
memungkinkan satu aplikasi berkomunikasi
dengan lainnya walaupun berjalan pada platform
yang berbeda.
Contoh Middleware
• Java’s: Remote Procedure Call
• Object Management Group's: Common
Object Request Broker Architecture
(CORBA)
• Microsoft's COM/DCOM (Component
Object Model)
Layanan Middleware
• Menyediakan kumpulan fungsi API (Application
Programming Interfaces) yang lebih tinggi
daripada API yang disediakan sistem operasi
dan layanan jaringan yang memungkinkan suatu
aplikasi dapat :
– Mengalokasikan suatu layanan secara transparan pada jaringan
– Menyediakan interaksi dengan aplikasi atau layanan lain
– Diperluas (dikembangkan) kapasitasnya tanpa kehilangan fungsinya
Contoh Layanan Middleware
• Transaction Monitor
– Produk pertama yang disebut middleware.
– Menempati posisi antara permintaan dari program client dan database, untuk menyakinkan bahwa semua transaksi ke database terlayani dengan baik
• Messaging Middleware
– Menyimpan data dalam suatu antrian message jika mesin tujuan sedang mati atau overloaded
– Mungkin berisi business logic yang merutekan message ke ujuan sebenarnya dan memformat ulang data lebih tepat – Sama seperti sistem messaging email, kecuali messaging
Contoh Layanan Middleware
• Distributed Object Middleware
– Contoh: RPC, CORBA dan DCOM/COM
• Middleware basis data
– menyediakan antarmuka antara sebuah query
dengan beberapa database yang terdistribusi
– Contoh: JDBC, ODBC, dan ADO.NET
• Application Server Middleware
– J2EE Application Server, Oracle Application
Server
Pengertian Client-Server
• Client/Server dapat diartikan sebagai
kemampuan komputer untuk meminta layanan
request data kepada komputer lain.
• Setiap instance dari komputer yang meminta
layanan disebut sebagai client, sedangkan
setiap instance yang menyediakan layanan
disebut sebagai server.
• Data yang diminta oleh client dapat diambil dari
database pada sisi server yang sering disebut
database server, seperi misalnya MySQL,
Three Tier Client-Server
Architecture
Client-Server Characteristics
• Client dan Server merupakan item proses (logika) terpisah yang bekerja sama pada suatu jaringan komputer untuk mengerjakan suatu tugas:
• Service : Menyediakan layanan terpisah yang berbeda • Shared resource : Server dapat melayani beberapa
client pada saat yang sama dan mengatur pengaksesan resource
• Asymmetrical Protocol : antara client dan server
merupakan hubungan one-to-many. Client memulai
komunikasi dengan mengirim request ke server. Server menunggu permintaan dari client. Kondisi tersebut juga memungkinkan komunikasi callback.
Client-Server Characteristics
• Transparency Location : proses server dapat
ditempatkan pada mesin yang sama atau terpisah dengan proses client. Client/server akan
menyembunyikan lokasi server dari client.
• Mix-and-match : tidak tergantung pada platform
• Message-based-exchange : antara client dan server
berkomunikasi dengan mekanisme pertukaran message. • Encapsulation of service : message memberitahu server
apa yang akan dikerjakan
• Scalability : sistem C/S dapat dimekarkan baik vertikal maupun horisontal
• Integrity : kode dan data server diatur secara terpusat, sedangkan pada client tetap pada komputer tersendiri
Client-Server Characteristics
• Characteristics of a client
– Initiates requests
– Waits for and receives replies
– Usually connects to a small number of servers at one time
– Typically interacts directly with end-users using a graphical user interface
• Characteristics of a server
– Passive (slave)
– Waits for requests from clients
– Upon receipt of requests, processes them and then serves replies
– Usually accepts connections from a large number of clients – Typically does not interact directly with end-users
Advantages
• Client-server mampu menciptakan aturan dan kewajiban komputasi secara terdistribusi.
• Mudah dalam maintenance. Memungkinkan untuk mengganti, memperbaiki server tanpa mengganggu client.
• Semua data disimpan di server Server dapat
mengkontrol akses terhadap resources, hanya yang memiliki autorisasi saja.
• Tempat penyimpanan terpusat, update data mudah. Pada peer-to-peer, update data sulit
• Mendukung banyak clients berbeda dan kemampuan yang berbeda pula.
Disadvantages
• Traffic congestion on the network, jika banyak
client mengakses ke server secara simultan,
maka server akan overload
– Berbeda dengan P2P network, dimana bandwidthnya meningkat jika banyak client merequest. Karena
bandwidth berasal dari semua komputer yang terkoneksi kepadanya.
• Pada client-server, ada kemungkinan server fail.
– Pada P2P networks, resources biasanya
didistribusikan ke beberapa node sehingga masih ada node yang dapat meresponse request.
KONSEP DASAR WEB
• Protocol yang digunakan: HTTP (port 80)
• Bahasa Web: HTML
URI (Uniform Resource Identifier)
• Uniform Resource Identifier (URI) adalah kumpulan karakter dalam sintaks tertentu yang mengidentifikasi sebuah resource.
– Resource bisa merupakan file di server tapi juga bisa
merupakan email address, berita, buku, host internet, dan lain-lain.
• Sintaks : scheme:scheme-specific-part
– scheme bisa berupa : data, file, http, ftp, gopher, mailto, news,
telnet.
– scheme-specific-part bisa berupa : //authority/path?query
URI
URN (Uniform Resource Name)• Tujuan URN adalah menghandle resource yang dimirror pada
banyak tempat yang berbeda atau telah dipindah dari satu tempat ke tempat lain. URN mengidentifikasi resource itu sendiri, bukan tempat resourcenya. Jika terdapat sebuah URN, sebuah program FTP harus mengambil filenya dari mirror terdekat.
• Sebuah URN memiliki format sebagai berikut
urn:namespace:resource_name.
• Sebuah namespace adalah nama dari koleksi dari resource.
Sebuah resource_name adalah nama dari resource dari sebuah koleksi.
• Contohnya, URN dari urn:ISBN:1565924851 mengindentifikasikan sebuah dalam ISBN dengan identifikasi 1565924851. Dan mengacu pada sebuah buku misalnya bernama : Java Network Programming. Masing-masing sintaks tergantung pada resource_name.ISBN
namespace terdiri dari 10 atau 13 karakter, semuanya adalah digit— dengan sebuah aturan bahawa karakter terakhir berupa huruf : X (baik huruf besar / kecil).
URI
• URL (Uniform Resource Locator) :
penunjuk ke suatu resource di Internet
pada lokasi tertentu, misal:
http://www.oreilly.com/catalog/javanp3/
• URL ada dua macam :
– Absolute URL : contoh <img
src=”http://www.ukdw.ac.id/ukdw.jpg”>
– Relative URL : contoh <img
MIME
•
Multipurpose Internet Mail Extensions, RFC
2045.
•
MIME adalah standar untuk mengirim
multipart, multimedia data melalui email di
Internet. Data bisa berupa data biner, ASCII
atau bukan ASCII. MIME digunakan untuk
mendeskripsikan isi file sehingga software
client dapat mengetahui perbedaan antara
data.
•
Contoh : text/html, text/css, image/gif,
video/mpeg, application/zip.
Pemrograman Jaringan 4
anton@ukdw.ac.id
Java IO
• Java IO dibutuhkan ketika kita membaca dan menulis, baik ditampilkan pada layar maupun disimpan pada file • Dalam pemrograman jaringan, Java IO dibutuhkan
ketika kita hendak mengirimkan byte data maupun membaca data dari server
• Input/Output dalam Java dipaketkan dalam java.io. • Selain kelas-kelas, paket ini juga mengandung interface
yang menangani aliran (stream) data output dan input. • Streams are sequences of data (whose elements may
Applications of Streams
• Streams are natural models of many
real-world systems:
– Mouse/keyboard/monitor input
– Human input to a program
Class Stream
• Byte stream: kelas dan interface ini
digunakan untuk menangani data biner
• Character stream: kelompok kelas ini
digunakan untuk menangani proses baca
tulis karakter, termasuk Unicode.
– Kelas ini merupakan pengembangan dari
kelas Byte Stream sehingga lebih efisien.
Byte Stream:
OutputStream
public abstract class OutputStream
Methodnya:
• public abstract void write(int b) throws
IOException
• public void write(byte[] data) throws IOException
• public void write(byte[] data, int offset, int length)
throws IOException
• public void flush( ) throws IOException
• public void close( ) throws IOException
Byte Stream:
InputStream
public abstract class InputStream
Sedangkan method-methodnya adalah:
• public abstract int read( ) throws IOException
• public int read(byte[] input) throws IOException
• public int read(byte[] input, int offset, int length)
throws IOException
• public long skip(long n) throws IOException
• public int available( ) throws IOException
• public void close( ) throws IOException
Hati-hati
• OutputStream dan InputStream adalah kelas abstract, sehingga tidak bisa langsung diinstansiasi, harus diturunkan!
• Streams can also be buffered, but…
• The flush() method breaks the deadlock by forcing the buffered stream to send its data even if the buffer isn't yet full.
Wrapper Classes
•
Class W is said to wrap class Y if:
1. Y is a concrete (not abstract) class
2. W’s constructor takes Y as an argument and
stores a local copy of Y
3. W reimplements all of Y’s methods
•
A wrapper can wrap a class and be the
subclass of another class at the same
File Input
• Java classes that support file input are found in
the
java.io
package
• FileReader
allows us to open a file for
reading
• BufferedReader
is a wrapper class that
provides methods that
– allow us to treat the file as a stream of characters – increases the efficiency of reading
BufferedReader
• A type of
Reader
that does internal
buffering.
– more efficient.
• Provides everything from
Reader
, plus:
String readLine()
Attaching a
BufferedReader
to stdin
InputStreamReader isr =
new InputStreamReader(System.in);
BufferedReader bf =
new BufferedReader(isr);
Stream Standard
• Kelas java.lang.System berkaitan standar input, output dan error.
• System.in merupakan objek dari InputStream
• System.out dan System.err merupakan objek dari PrintStream.
• Dalam java cara membaca inputan dari keyboard adalah menggunakan System.in. Agar mempermudah proses maka obyek System.in dibungkus dengan obyek
BufferedReader
• BufferedReader br = new BufferedReader(new
Strings
• Java provides a number of methods for
operating on
String
objects
• String
objects are immutable
• Immutable objects cannot be changed
once they are created
String s = "ABC"; s.toLowerCase();
StringBuffer
• Java provides a mutable staring class called
StringBuffer that allows strings to grow dynamically during program execution
• Several StringBuffer methods are the same as those found in String
• The StringBuffer class also contains a ToString method to allow easier output
• Some Method:
– capacity()
– setCharAt(int index, char ch) – insert(int offset, char c)
– delete(int start, int end)
– replace(int start, int end, String str) – reverse()
String vs StringBuffer
String str = new String ("Stanford ");
Sequential Files
• Files are stored on disks
• In this section we will assume that files consist of
multiple lines composed of characters
• Each line ends with an end of line character
• The file itself may have an end of file character
• Programmers often need to read or write files
Class File
• A File object can refer to either a file or a directory
File file1 = new File("data.txt"); File file1 = new File("C:\java");
• To obtain the path to the current working directory use:
System.getProperty("user.dir");
• To obtain the file or path separator use
System.getProperty("file.separator"); System.getProperty("path.separator");
or
File.separator() ;
Useful File methods
- public boolean canRead() - public boolean canWrite()
- public boolean createNewFile() - public boolean delete()
- public boolean exists() - public boolean isFile()
- public boolean isDirectory() - public long lastModified() - public long length()
- public boolean mkdir() - public boolean mkdirs()
Encoding
To change the system default encoding use
– System.setProperty("file.encoding", "encoding");
• To specify the encoding when creating the
output steam, use an OutputStreamWriter
OutputStreamWriter out = new
OutputStreamWriter( new
Alternative Reading File
BufferedReader in = new
BufferedReader(new FileReader(file));
String lineIn;
while ((lineIn = in.readLine()) != null) {
System.out.println(lineIn);
import java.io.*;
import java.util.StringTokenizer; public class WordCount {
public static void main( String[] args ) throws IOException { String delimiters = " .?!()[]{}|?/&\\,;:-\'\"\t\n\r";
BufferedReader inputFile = new BufferedReader( new FileReader( args[0] ) ); String buffer = null;
int chars = 0; int words = 0; int lines = 0; while( true ) {
buffer = inputFile.readLine(); if ( buffer == null ) break; lines++;
buffer = buffer.toLowerCase();
StringTokenizer tokens = new StringTokenizer( buffer, delimiters ); while( tokens.hasMoreElements() ) {
String word = tokens.nextToken(); words++;
chars += word.length(); } // end while
} // end while( true )...
System.out.println( "" + lines + " " + words + " " + chars ); } // end main
Tugas
• Buatlah “DOS PROMPT” simulation
• Berisi beberapa fungsi manipulasi file yang sudah diajarkan:
– Dir <dir>
– Copy <source> <dest> – Rename <source> <dest> – Move <source> <dest> – Properties <filename> – Date-Time – Make <filename> – Write <filename> – Del <filename> – Read <filename> – Mkdir <dirname>
Pemrograman Jaringan 5
HTTP
• Hypertext Transport Protocol (RFC 1945) • Language of the Web
– Protocol yang digunakan untuk komunikasi antara web browsers dan web servers
– Since 1990
• TCP port 80
• Penyempurnaan HTTP 1.0 menjadi versi 1.1 dispesifikasikan oleh IETF dengan RFC 2616
• HTTP merupakan implementasi dari protokol TCP • Bersifat “Stateless”
HTTP (2)
• HTTP bersifat request – response:
– HTTP client (user agent misalnya) mengirimkan permintaan (request) ke HTTP server dan server meresponse sesuai request tersebut
• User agent: Mozilla, Netscape, Microsoft Internet Explorer atau browser berbasis teks, Lynx atau links
• Perbedaan mendasar antara HTTP/1.1 dengan HTTP/1.0 adalah penggunaan hubungan persistent.
• HTTP/1.0 membuka satu koneksi untuk tiap permintaan URI – header = Connection: close
• HTTP/1.1 dapat menggunakan sebuah koneksi TCP untuk beberapa permintaan URI (persistent)
– header = Connection: Keep-Alive
– kecuali jika client menyatakan tidak hendak menggunakan hubungan persistent (header = Connection: close).
HTTP - methods
• Methods
– GET
• retrieve a URL from the server
– simple page request, limited – run a CGI program
– run a CGI with arguments attached to the URL
– POST
• preferred method for forms processing • run a CGI program
• parameterized data in sysin • more secure and private
HTTP - methods
• Methods (cont.)
– HEAD
• requests URLs status header only
• used for conditional URL handling for performance enhancement schemes
– retrieve URL only if not in local cache or date is more recent than cached copy
Method: Head
Method: GET
GET
HTTP Status Codes
• 200 OK
• 201 created
• 202 accepted
• 204 no content
• 301 moved perm.
• 302 moved temp
• 304 not modified
• 400 bad request
• 401 unauthorized
• 403 forbidden
• 404 not found
• 500 int. server error
• 501 not impl.
• 502 bad gateway
• 503 svc not avail
HTTP - URLs
• URL
– Uniform Resource Locator
• protocol (http, ftp, news)
• host name (name.domain name) • port (usually 80)
• directory path to the resource • resource name
– http://www.myplace.com/www/saya%20makan.html – http://www.myplace.com:80/cgi-bin/t.exe?a=1&b=2
Java URL class
• java.net.URL
• public final class URL extends Object
implements Serializable
• Konstruktor
– URL(String spec)
• URL(“http://localhost:8081/coba.asp?a=1&b=2”);
– URL(String protocol, String host, int port, String file)
• URL(“http”,”localhost”,8081,”coba.php”);
– URL(String protocol,String host,String file)
URL class method
Object getContent(), mengambil konten dari sebuah object
Exception
• All these constructors throw a
MalformedURLException if you try to
create a URL for an unsupported protocol
• May throw a MalformedURLException if
Contoh-contoh
• Lihat contoh ProtocolTester.java
• Lihat contoh URLSplitter.java
• Lihat contoh SourceViewer.java
• Lihat contoh ContentGetter.java
• Lihat contoh URISplitter.java
Class URLEncoder
Hasil
Dari contoh, terlihat bahwa untuk dapat memperlakukan data output dari
URLopenStream() sebagai deretan karakter, maka kita harus membuat obyek dari BufferedReader sehingga kita dapat mengambil data baris demi baris.
URLConnection
• Kelas ini merupakan kelas yang dapat melakukan
koneksi secara langsung ke alamat URL yang diinginkan • Kelas URLConnection adalah kelas abstrak, jadi kita
harus membuat kelas turunan dari kelas
URLConnection, kemudian memanggil method openConnection()
Request GET
• Contoh request GET
– URLConnGETBuka koneksi dengan menggunakan
openConnection() dan pada saat akan menerima Stream dari server gunakan getInputStream().
Request POST
• Buat URL yang diinginkan
• Buka koneksi URL yang diinginkan tersebut • setDoOutput() true
• Ambil OutputStream dari koneksi, agar dapat mengirimkan data ke server
• Tulis data ke OutputStream • Tutup OutputStream
HTTPURLConnection
•
HttpURLConnection yang merupakan kelas
turunan dari kelas URLConnection
•
Method GET
– Buat URLConnection
– Buat koneksi dari URLConnection yang ada dan dicasting menjadi HttpURLConnection, panggil method openConnection()
– setRequestMethod() menjadi GET
– Periksa getResponseCode(), jika error maka Exit – Jika tidak maka baca baris demi baris keluaran dari
HTTPURLConnection
•
Method POST
– Buat URLConnection
– Buka koneksi dari URLConnection yang dibuat dengan HttpURLConnection
– setRequestMethod() POST
– setDoOutput() TRUE karena kita akan menulis ke Server 5. Buat DataOuputStream() dari
getOutputStream()
– Tulis ke Server dengan menggunakan method writeBytes()
– Tutup DataOutputStream
– Baca output dari Server baris demi baris melalui getInputStream()
Pemrograman Jaringan 6
Socket
• Socket adalah
sebuah abstraksi
perangkat lunak yang
digunakan sebagai
suatu "terminal" dari
suatu hubungan
antara dua mesin
atau proses yang
saling
berinterkoneksi.
a socket
Operasi Socket
• Socket dapat melakukan operasi:
– Koneksi ke mesin remote – Mengirim data
– Menerima data – Mentutup koneksi – Bind to a port
– Listen pada data yang masuk
– Menerima koneksi dari mesin remote pada port tertentu
• Di tiap mesin yang saling berinterkoneksi, harus
terpasang socket.
Socket API in Java
• Pada J2SE telah disediakan paket
java.net yang berisi kelas- kelas dan
interface yang menyediakan API
(Application Programming Interface):
– level rendah (Socket, ServerSocket,
DatagramSocket)
– level tinggi (URL, URLConnection).
InetAddress class
• Kelas ini digunakan untuk mengambil informasi
IP suatu komputer. Kelas ini bersifat static dan
tidak memiliki konstruktor.
Method-methodnya adalah:
– getByName(namahost) yang akan menerima sebuah string nama host dan mengembalikan alamat IP
berdasarkan DNS, berupa object InetAddress.
• Untuk menampilkannya: gunakan method toString()
– getLocalHost() yang akan mengembalikan alamat IP dan nama host pada komputer lokal.
– getAllByName(namahost) mengembalikan array InetAddress
NSLookup Clone
• Menggunakan InetAddress
• Lihat HostLookup.java
Informasi Antar muka Jaringan
• Untuk mendapatkan informasi network
interface pada Java telah terdapat kelas
NetworkInterface yang mampu
mendapatkan informasi tentang antar
muka jaringan, nama device, dan IP yang
ter-bind. Nama device misalnya eth0, lo0
• Contoh: DisplayNet.java
Connection-oriented & Connectionless
Socket
• A socket programming construct can make
use of either the UDP (User Datagram
Protocol) or TCP (Transmission Control
Protocol).
• Sockets that use UDP for transport are
known as datagram sockets, while
sockets that use TCP are termed stream
IP Protocol Suite
Application Transport Network (Internet) Data-link (Host-to-Network) Sockets API TCP UDP My Program IPSocket to Socket
Communication
Client Program socket Ports TCP/UDP IP Server Program socket Ports TCP/UDP IPReview: TCP vs. UDP
• TCP
– Connection-oriented – Reliable – Stateful• UDP
– Connectionless – Unreliable – StatelessReview: Ports
• Used to differentiate applications running
on same host (address)
• Represented as 16-bit integer
– Well-known ports: 0 – 1023
– Registered: 1024 – 49151
Java Socket & ServerSocket class
• Untuk Socket Connection Oriented Programming
– This means that the connection between server and client
remains open throughout the duration of the dialogue between the two and is only broken (under normal circumstances) when one end of the dialogue formally terminates the exchanges (via an agreed protocol)
• Kelas java.net.ServerSocket digunakan oleh Server untuk listen koneksi
• Kelas java.net.Socket digunakan oleh Client untuk inisialisasi koneksi.
• Setelah client terkoneksi ke server dengan
menggunakan Socket, maka ServerSocket akan
mengembalikan status server ke client melalui koneksi yang terbentuk sebelumnya.
The Java.net.Socket Class
• Connection is accomplished through the constructors.
Each Socket object is associated with exactly one remote host. To connect to a different host, you must create a
new Socket object.
public Socket(String host, int port) throws UnknownHostException, IOException
public Socket(InetAddress address, int port) throws IOException public Socket(String host, int port, InetAddress localAddress, int
localPort)
throws IOException
public Socket(InetAddress address, int port, InetAddress localAddress, int localPort) throws IOException
• Sending and receiving data is accomplished with output and
input streams. There are methods to get an input stream for a socket and an output stream for the socket.
public InputStream getInputStream() throws IOException public OutputStream getOutputStream() throws IOException
• There's a method to close a socket: