Tujuan Instruksional
Setelah mengikuti praktikum ini, Mahasiswa diharapkan mampu untuk:
- Memahami protocol jaringan seperti TCP, UDP dan SCTP
- Mengenal kemampuan Java untuk pemrograman jaringan
1. Protocol Jaringan
Internet Protokol (IP) adalah protokol lapisan jaringan (network layer dalam OSI Reference Model) atau protokol lapisan internetwork (internetwork layer dalam DARPA Reference Model) yang digunakan oleh protokol TCP/IP untuk melakukan pengalamatan dan routing paket data antar host-host di jaringan komputer berbasis TCP/IP.
Transmission Control Protocol (TCP) adalah suatu protokol yang berada di lapisan transpor (baik itu dalam tujuh lapis model referensi OSI atau model DARPA) yang berorientasi sambungan (connection-oriented) dan dapat diandalkan (reliable).
UDP, singkatan dari User Datagram Protocol, adalah salah satu protokol lapisan transpor TCP/IP yang mendukung komunikasi yang tidak andal (unreliable), tanpa koneksi (connectionless) antara host-host dalam jaringan yang menggunakan TCP/IP.
2. Pemrograman Jaringan dengan Java
Pemrograman socket adalah cara untuk menggunakan komponen API (Application Programming Interface) socket untuk membuat sebuah aplikasi. Java telah menyediakan paket java.net yang berisi kelas-kelas dan interface yang menyediakan API (Application Programming Interface) level rendah (Socket, ServerSocket, DatagramSocket) dan level tinggi (URL, URLConnection).
Socket merupakan fasilitas IPC (Inter Proses Communication) untuk aplikasi jaringan. Cara kerja socket dapat digambarkan seperti pada gambar 1.1 dan gambar 1.2.

Gambar 1.1 Client menghubungi server

Gambar 1.2. Server menghubungi client
Sebuah socket dilengkapi dengan alamat, yang terdiri atas IP address tujuan dan nomor port. Alamat IP dapat menggunakan alamat jaringan lokal (LAN) maupun alamat internet. Jadi socket dapat digunakan untuk IPC pada LAN maupun Internet. Nomor port merupakan bilangan bulat yang digunakan untuk membedakan layanan-layanan yang berjalan pada komputer server yang sama. Pengguna layanan menggunakan nomor port ini untuk menghubungi komputer server dengan workstation (client).
Dengan menggunakan nomor port yang standar, komunikasi dapat terjadi antar beberapa komputer dari jarak jauh untuk mengerjakan berbagai layanan jaringan, karena baik pengirim maupun penerima saling mengetahui ke mana data harus dikirim menggunakan nomor port tersebut. Sebagai contoh, semua sistem menggunakan nomor port 23 untuk aplikasi TELNET atau port 80 untuk aplikasi website. Oleh karena pada perancangan sistem akan dibuat suatu jenis layanan baru dengan memanfaatkan socket, maka dapat dibuat nomor port tersendiri untuk aplikasi tersebut.
3. Paket Java Network
Beberapa kelas java.net yang dapat digunakan dalam menerapkan pemrograman jaringan adalah:
- Socket(InetAddress address, int port) : untuk membuat sebuah stream socket dan koneksi ke suatu nomor port pada sebuah komputer yang memiliki alamat IP.
- Socket(String host, int port) : untuk membuat sebuah stream socket dan juga koneksi ke suatu port tertentu pada sebuah komputer berdasar namanya.
- Socket(InetAddress address, int port, InetAddress localAddr,int localPort) / Socket(String host, int port, InetAddress localAddr, int localPort) : untuk membuat sebuah socket dan mengkoneksikannya ke port yang dituju pada alamat IP yang disebutkan pada parameter address atau nama host. Selain itu juga akan dilakukan bind socket ke alamat lokal dan port lokal. (Hal ini dilakukan jika koneksi antara client dan server membutuhkan nomor port yang sudah ditentukan).
- getInetAddress() : untuk mendapatkan nama host yang dituju dan alamat IPnya
- getPort() : untuk mendapatkan nomor remote host
- getLocalPort() : untuk mendapatkan nomor port localhost
- getLocalAddress() : untuk mendapatkan alamat local dimana socket digunakan
- getInputStream() : mengembalikan objek input stream dari socket
- getOutputStream() : mengembalikan objek output stream ke socket
- ServerSocket( int port [, int backlog [, InetAddress bindAddress ]] ) : untuk membuat sebuah server dengan port tertentu, batasan jumlah antrian (backlog), dan alamat IP bindAddress.
- DatagramSocket(int port) : untuk menyatakan penggunaan suatu nomor port sebagai "pintu" untuk menerima koneksi dari client.
- DatagramSocket(int port, InetAddress laddr) : untuk membentuk koneksi dengan protokol UDP pada alamat IP lokal tertentu dan pada nomor port tertentu.
- DatagramSocket() : untuk membentuk koneksi dengan protokol UDP pada alamat IP lokal host dengan penentuan nomor portnya secara random berdasar tersedianya nomor port yang dapat digunakan.
- DatagramPacket(byte[] buf, int length) : untuk mengambil informasi.
- DatagramPacket(byte[] buf, int length, InetAddress address, int port) : untuk membuat paket Datagram yang akan mengirim data. Constructor ini memerlukan informasi array byte yang akan dikirim dan panjangnya, serta alamat dan port yang dituju.