Minggu, 21 Juni 2009

pemograman jaringan

PEMOGRAMAN JARINGAN – MODUL 21
By Antonius Rachmat C, S.Kom

Pemrograman Jaringan modern sekarang ini berbasis pada model client/server. Pada sebagian besar kasus, server biasanya mengirim data, sedangkan client menerimanya. Pembahasan tentang model Client/Server tidak akan lepas dari konsep sistem terdistribusi. Sebab client/server merupakan model dasar dari sistem terdistribusi.

Pengertian “Sistem Terdistribusi”
"A system in which hardware or software components located at networked computers communicate and coordinate their actions only by message passing." [Coulouris]

Dengan pembagian fungsi untuk tiap komponen dalam suatu sistem, manfaatnya:
- Berbagi resource
- Berbagi beban kerja
- Tidak membedakan platform
- Meningkatkan efisiensi
Ada dua organisasi yang menstandarisasi pemrograman jaringan dan protokol di internet, yaitu :
- Internet Engineering Task Force (IETF) : TCP/IP, MIME, dan SMTP
- World Wide Web Consortium (W3C) : HTTP, HTML, XHTML, MathML, dan XML
Dokumen-dokument IETF dipublikasikan sebagai Internet drafts dan requests for comments (RFCs). RFCs and Internet drafts berasal dari informational dokumen dari keinginan umum sampai spesifikasi detail dari Internet protokol seperti HTTP.
Dokumen RFCs dipublikasikan jika disetujui oleh Internet Engineering Steering Group (IESG) dari IETF. Semua dokumen standar IETF yang disetujui adalah RFCs, tetapi tidak semua RFCs adalah standar IETF. RFCs banyak terdapat di Internet, misalnya http://www.faqs.org/rfc/ dan http://www.ietf.org/rfc.html
RFC Title Maturity level Requirement level Description
RFC 791
RFC 919
RFC 922
RFC 950
STD 5 Internet Protocol Standard Required The IP internet layer protocol.
RFC 768
STD 6 User Datagram Protocol Standard Recommended An unreliable, connectionless transport layer protocol.
RFC 793
STD 7 Transmission Control Protocol Standard Recommended A reliable, connection-oriented, streaming transport layer protocol.
RFC
2821 Simple Mail Transfer Protocol Proposed standard Recommended The application layer protocol by which one host transfers email to another host. This standard doesn't say anything about email user interfaces; it covers the mechanism for passing email from one computer to another.
RFC 822
STD 11 Format of Electronic Mail Messages Standard Recommended The basic syntax for ASCII text email messages. MIME is designed to extend this to support binary data while ensuring that the messages transferred still conform to this standard.
RFC 854
RFC 855
STD 8 Telnet Protocol Standard Recommended An application-layer remote login service for command-line environments based around an abstract network virtual terminal (NVT) and TCP.
RFC 959
STD 9 File Transfer Protocol Standard Recommended An optionally authenticated, two-socket application layer protocol for file transfer that uses TCP.
RFC 977 Network News Transfer Protocol Proposed standard Elective The application layer protocol by which Usenet news is transferred from machine to machine over TCP; used by both news clients talking to news servers and news servers talking to each other.
RFC
1034
RFC 1035
STD 13 Domain Name System Standard Recommended The collection of distributed software by which hostnames that human beings can remember, like www.oreilly.com, are translated into numbers that computers can understand, like 198.112.208.11. This STD defines how domain name servers on different hosts communicate with each other using UDP.
RFC 1738 Uniform Resource Locators Proposed standard Elective Full URLs like http://www.amnesty.org/ and ftp://ftp.ibiblio.org/pub/multimedia/chinese-music/Dream_Of_Red_Mansion/HLM04 .Handkerchief.au.
RFC 1808 Relative Uniform Resource Locators Proposed standard Elective Partial URLs like /javafaq/books/ and ../examples/07/index.html used as values of the HREF attribute of an HTML A element.
RFC 1939
STD 53 Post Office Protocol, Version 3 Standard Elective An application-layer protocol used by sporadically connected email clients such as Eudora to retrieve mail from a server over TCP.
RFC 1945 Hypertext Transfer Protocol (HTTP 1.0) Informational N/A Version 1.0 of the application layer protocol used by web browsers talking to web servers over TCP; developed by the W3C rather than the IETF.
RFC
2045
RFC 2046
RFC 2047 Multipurpose Internet Mail Extensions Draft standard Elective A means of encoding binary data and non-ASCII text for transmission through Internet email and other ASCII-oriented protocols.
RFC 2068 Hypertext Transfer Protocol (HTTP 1.1) Proposed standard Elective Version 1.1 of the application layer protocol used by web browsers talking to web servers over TCP.
RFC 2373 IP Version 6 Addressing Architecture Proposed standard Elective The format and meaning of IPv6 addresses.
RFC 2396 Uniform Resource Identifiers (URI): Generic Syntax Proposed standard Elective Similar to URLs but cut a broader path. For instance, ISBN numbers may be URIs even if the book cannot be retrieved over the Internet.
RFC 3501 Internet Message Access Protocol Version 4rev1 Proposed standard Elective A protocol for remotely accessing a mailbox stored on a server including downloading messages, deleting messages, and moving messages into and out of different folders.

Sedangkan W3C hanya boleh terdiri dari perusahaan-perusahaan saja.

ARSITEKTUR CLIENT-SERVER
Client/Server dapat diartikan sebagai kemampuan komputer untuk meminta layanan request data kepada komputer lain. Komputer yang meminta layanan disebut sebagai client, sedangkan yang menyediakan layanan disebut sebagai server.

Pengertian lain, client melakukan permintaan suatu informasi atau mengirim perintah ke server. Server akan menerima permintaan dan perintah client. Kemudian server akan memproses memproses berdasarkan permintaan tersebut, dan mengembalikan kepada client sebagai hasil pemrosesan yang sudah dilakukan.

Arsitektur Model Client/Server
Service Request adalah permintaan dari client baik berupa permintaan data maupun perintah ke server.
Service Response berupa balasan dari server atas permintaan dari client berupa hasil proses.
Data yang diminta oleh client dapat diambil dari database pada sisi server yang sering disebut database server, seperi misalnya MySQL, PostgreSQL, Oracle, atau SQL Server.

Karakteristik Client-Server:
 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.
 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

MIDDLEWARE
Software yang berfungsi sebagai lapisan konversi atau penerjemah. Juga sebagai konsolidator dan integrator. Middleware saat ini dikembangkan untuk memungkinkan satu aplikasi berkomunikasi dengan lainnya walaupun berjalan pada platform yang berbeda.

ARSITEKTUR SOFTWARE
- Data, menyediakan struktur dan fungsi untuk manipulasi informasi, yang terdiri dari banyak objek data. Sebagai contoh : relational Database, file grafik, file suara atau multimedia data stream
- Processing, terfokus pada pemrosesan objek data, yang biasanya disebut sebagai middleware.
- Presentation, terfokus untuk membuat data tersedia untuk user dan menangani interaksi dengan user. Ada dua level :
 User interface
 Presentation management, menyediakan operasi dasar untuk membangun dan mengontrol user interface di bawah kontrol aplikasi. Meliputi : layanan tampilan, kontrol dialog dan API. Contoh : X-Windows, MS Windows

KONSEP DASAR WEB
Hypertext Transfer Protocol (HTTP) adalah standar untuk mendefiniskan bagaimana client berkomunikasi dengan server dan bagaimana data ditransmisikan dari server kembali ke client.
1. 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
Contoh : http://www.ukdw.ac.id/index.php?a=1&b=2
URI ada 2 yaitu :
- 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 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).
- 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
 Relative URL : contoh
2. HTML, SGML, dan XML
HTML digunakan untuk memformat dokumen web. HTML digunakan untuk presentasi data dan menyediakan linking antar halaman.

SGML adalah ide untuk mendeskripsikan sematik teks daripada penampilannya yang disebut juga Standard Generalized Markup Language. SGML ditemukan pada pertengahan tahun 1970an oleh Charles Goldfarb, Edward Mosher, dan Raymond Lorie di IBM. SGML merupakan standar International Standards Organization (ISO), yaitu ISO 8879:1986.

XML adalah suatu bahasa Markup, yaitu bahasa yang berisikan kode-kode berupa tanda-tanda tertentu dengan aturan tertentu untuk memformat dokumen teks dengan tag sendiri agar dapat dimengerti. XML menyediakan format untuk mendeskripsikan data terstruktur. XML menyebabkan isi data mudah dimengerti dan memungkinkan pendefinisian kumpulan tag yang tidak terbatas.
3. 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.

RETHINGKING JAVA
- Siapkan java sdk yang bisa didownload dari http://java.sun.com
- Editor java bisa menggunakan teks editor apa saja: notepad? edit plus? Kawa? Netbeans? Jbuilder? JCreator?
- Prinsip-prinsip dasar :
o Satu buah file java harus berekstensi .java, satu file boleh terdiri dari banyak kelas, namun hanya bisa terdiri dari satu public class.
o Nama file java harus sama dengan nama public class nya. Misal nama public class adalah : public class HelloWorld, berarti nama filenya adalah HelloWorld.java
o Ingat di Java case-sensitive, termasuk nama file dan folder nya. Java sangat memperhatikan susunan folder/direktori, terutama untuk sebuah package.
o Satu buah class sederhana minimal ada kata kunci class nama_class. Sebuah class boleh tidak memiliki atribut dan method. Sebuah aplikasi java harus berupa class, dan jika di compile dengan javac akan menghasilkan file berekstensi .class untuk masing-masing class yang ada.
o Sebuah class hanya dapat dieksekusi jika di dalamnya ada method public static void main. Jika tidak ada method main maka class tersebut hanya bisa dicompile dan tidak bisa dieksekusi.
o Sintaks java rata-rata mirip dengan bahasa C.
- Terdapat beberapa konvensi (aturan) dalam java:
o nama variabel primitif biasanya ditulis dalam huruf kecil. Contoh : int
o nama variabel berupa Object / Class ditulis dimulai huruf besar. Contoh : String, Integer, Byte, Boolean.
o nama method untuk mengambil data bisanya diberi awalan getNamaMethod(), sedangkan method untuk mengeset data biasanya diberi awalan setNamaMethod(tipedata variabelset). Contoh:
 Public void setNama(String nama);
 Public String getNama()
o nama variabel biasanya dimulai dengan huruf kecil dan jika lebih dari satu kata, disambung dan ditulis dengan huruf pertama huruf besar. Contoh: int angkaRandom = 0, String namaMahasiswa
- Ada 3 jenis modifier variabel dalam Java:
 private : hanya dapat diakses oleh kelas itu sendiri
 protected : hanya dapat diakses oleh kelas itu dan kelas turunannya atau masih dalam satu package.
 public : dapat diakses oleh seluruh kelas yang ada.
- Java mengenal operasi control flow :
 Percabangan : if-else, switch-case
 Perulangan : for, while-do, do-while
 Penanganan Exception : try-catch-finally, throws

KONSEP OOP
Class : prototipe yang mendefinisikan atribut dan method secara umum.
Object : segala sesuatu yang dapat dilihat dan dirasa. Sebuah instansiasi dari Class.
Object dapat memiliki atribut dan method. Atribut / variabel / properties adalah apa yang dimiliki oleh sebuah object. Sedangkan method / behaviour / event adalah apa yang dapat dilakukan oleh sebuah object.
Enkapsulasi : pembungkusan atribut dan method pada suatu object. Manfaatnya adalah: modularitas dan information hiding.
Message : mekanisme yang digunakan oleh object java untuk berkomunikasi dengan object lain. Sehingga dimungkinkan terjadi aplikasi terdistribusi dan berinteraksi melalui jaringan. Contoh : Java-CORBA dan Java-RMI.
Inheritance : pewarisan atribut dan method dari class induk ke class anaknya, yang mengextends padanya. Superclass adalah class induk, subclass adalah class anak. Subclass akan mewarisi seluruh sifat super class, namun juga memungkinkan dapat juga memiliki atribut dan method yang lain, yang membedakannya dengan induknya.
Abstract : kelas yang hanya terdiri dari method yang abstract yang digunakan untuk mendukung inheritance.
Interface : kelas yang hanya terdiri dari kumpulan method-method saja tanpa implementasi coding.

Tidak ada komentar:

Posting Komentar