14
ABSTRAK Pemrograman socket berorientasi tanpa koneksi (connectionless) merupakan salahsatu kategori pemrograman jaringan yang masih tetap eksis hingga saat ini. Untuk dapat memahami socket programming dengan baik, diperlukan pemahaman menyangkut protocol UDP hingga pembuatan programnya. Kajian ini diawali penjelasan protocol UDP menyangkut tentang konsep komunikasi antar proses, socket address yang dilengkapi dengan pembahasan konsep pemrograman client server. Implementasi menggunakan bahasa pemrograman PHP, Pembahasan program dibagi ke dalam dua bagian yakni pemrograman socket pada client dan pemrograman socket pada server. PHP socket Programming telah memiliki sejumlah dan fungsi untuk melakukan komunikasi berorientasi tanpa koneksi menggunakan protokol UDP. Fungsi socket_create() untuk pembentukan socket (pada server dan client), socket_bind() untuk pembentukan socket address dengan variabel socket (pada server), socket_connect() untuk pembentukan koneksi aktif (pada client, socket_accept() untuk menerima koneksi dari client (pada server), socket_write() untuk mengirim pesan ( pada server dan client ), socket_read() untuk membaca pesan dari sebuah socket( pada server dan client ). Socket_close() untuk menutup menutup sebuah socket atau membatalkan sebuah koneksi UDP Kata Kunci: Pemrograman soket, pemrograman client server, Pemrograman Jaringan, Protocol UDP ABSTRACT Connection Oriented Socket programming is network programming that still exist nowdays. For know socket programming well, it is need understanding protocol UDP. The explanation was begin with basic UDP Protocols like mechanism process communication, socket address, UDP handshaking process. For comprehensive understanding we need its implemented by making a client-server program was using php. Explanations are divide in two

KAJIAN PEMROGRAMAN CONNECTIONLESS

Embed Size (px)

DESCRIPTION

UDP PROGRAMMING USING PHP

Citation preview

BAB I

Abstrak

Pemrograman socket berorientasi tanpa koneksi (connectionless) merupakan salahsatu kategori pemrograman jaringan yang masih tetap eksis hingga saat ini. Untuk dapat memahami socket programming dengan baik, diperlukan pemahaman menyangkut protocol UDP hingga pembuatan programnya.Kajian ini diawali penjelasan protocol UDP menyangkut tentang konsep komunikasi antar proses, socket address yang dilengkapi dengan pembahasan konsep pemrograman client server. Implementasi menggunakan bahasa pemrograman PHP, Pembahasan program dibagi ke dalam dua bagian yakni pemrograman socket pada client dan pemrograman socket pada server.PHP socket Programming telah memiliki sejumlah dan fungsi untuk melakukan komunikasi berorientasi tanpa koneksi menggunakan protokol UDP. Fungsi socket_create() untuk pembentukan socket (pada server dan client), socket_bind() untuk pembentukan socket address dengan variabel socket (pada server), socket_connect() untuk pembentukan koneksi aktif (pada client, socket_accept() untuk menerima koneksi dari client (pada server), socket_write() untuk mengirim pesan ( pada server dan client ), socket_read() untuk membaca pesan dari sebuah socket( pada server dan client ). Socket_close() untuk menutup menutup sebuah socket atau membatalkan sebuah koneksi UDP

Kata Kunci: Pemrograman soket, pemrograman client server, Pemrograman Jaringan, Protocol UDP

ABSTRACT

Connection Oriented Socket programming is network programming that still exist nowdays. For know socket programming well, it is need understanding protocol UDP. The explanation was begin with basic UDP Protocols like mechanism process communication, socket address, UDP handshaking process. For comprehensive understanding we need its implemented by making a client-server program was using php. Explanations are divide in two parts. Socket programming client side and socket programming server side.PHP socket Programming has been having some function for realize connection oriented communication using UDP Protocols. Function socket_create() for creating socket (at server and client), socket_bind() for creating socket address with socket variabel ( at server), socket_connect() for creating active connection (at client), socket_listen() for making active connection (at server), socket_accept() for receiving connection from client (at server), socket_write() for sending messsage ( at server and client ), socket_read() for reading message from a socket( at server and client ). Socket_close() for close a socket or terminating a UDP Connection.

Keyword : Socket Programming, Pemrograman Client Server, Pemrograman Jaringan, Protocol U

Latar BelakangPemrograman jaringan merupakan salah satu mata kuliah wajib dalam program studi teknik informatika. Salah satu materi pokok dalam pemrograman jaringan adalah pemrograman dengan menggunakan socket (socket programming) . Rumusan MasalahRumusan masalah yang dapat diambil berdasarkan latar belakang di atas adalah:Bagaimana mengkaji socket programming secara lebih luas mulai dari protokol UDP hingga pembuatan programnya dengan menggunakan bahasa pemrograman PHP ?

Batasan Masalah1. Kajian UDP menyangkut tentang konsep komunikasi antar proses , socket address, tipe socket, jenis-jenis port number dan konsep three way handshaking dalam protocol UDP yang dilengkapi dengan pembahasan konsep pemrograman client server.2. Penjelasan Socket programming menggunakan model connected oriented concurrent server oleh Behrouz A. TujuanBerdasarkan perumusan masalah di atas, adapun tujuan dilaksanakannya penelitian ini adalah menganalisa socket programming dalam kaitan protokol UDP dan pembuatan programmnya dengan menggunakan bahasa pemrograman PHP.

KERANGKA teoriTIS

Komunikasi antar proses pada Protokol TCP/IP

Ada 2 protokol pada lapisan Transport layer yakni TCP dan UDP. Komunikasi pada level computer merupakan tanggungjawab protocol lapisan network yakni protocol IP. Namun Protokol IP hanya bertanggung jawab mengirimkan paket data ke computer tujuan. Untuk komunikasi antar proses pada computer sumber dengan proses pada computer tujuan menjadi tanggungjawab protocol TCP atau UDP. Ini juga berarti proses pengiriman paket data dari suatu proses computer sumber ke proses tertentu pada computer tujuan menjadi tanggungjawab protocol TCP atau UDP Untuk komunikasi antar proses, ada empat bagian yang harus diberi pengenal, yakni computer client(localhost) dan computer server(remote host) dengan IP Address, proses pada client(local process) dan proses pada server(remote process) dengan port number

Gambar 1 Alamat Komunikasi antar Proses

IANA RangePort number dalam protocol UDP dapat bernilai integer antara 0 sampai dengan 65535. IANA membaginya ke dalam tiga kategori, yakni :

Tabel 1 : Pembagian Port IANA Range NoKatagoriNilai port

1Well-Known ports 0 s/d. 1023

2Registered port1024 s/d. 49151

3Dynamic (ephemeral) port49152 s/d. 65535

Namun tidak semua system operasi mengikuti standar yang ditetapkan oleh IANA ini, seperti system operasi Free BSD membagi ke dalam kategori reserved, ephermeral dan non privileged.

Well-Known Port pada UDP

Protokol UDP menggunakan sejumlah well-known port beberapa diantaranya ditunjukkan pada tabel di bawah ini :

Tabel 2 : Well-known PortPortProtocolKeterangan

13DaytimeMengembaikan date dan time

20FTP, DataFTP ( Koneksi data )

24Priv-mail: any private mail system.

23TELNETTerminal Network

25SMTPSimple Mail Transfer Protokol

53DNSDomain Name Server

80HTTPHypertext Transfer Protocol

111RPCRemote Procedure Call

Berikut ini sebuah contoh penggunaan Well Known Port pada server dan Ephemeral port pada client :

Gambar 2 Penggunaan Well-Known Port dan ephemeral port

Socket Address

Socket Address merupakan gabungan antara IP Address dan port number. Sebuah koneksi membutuhkan socket address baik pada sisi client(client socket address) maupun pada sisi server(server socket address).Kedua-duanya harus unik

Socket InterfaceTipe Data

Ada 3 tipe data yang biasa digunakan dalam program client-server, yakni :

1. u_char, tipe unsigned character dengan panjang 8-bit 2.u_short, tipe unsign integer dengan panjang 16-bit3.u_long, tipe unsign integer dengan panjang 32-bit

Struktur Internet Address

Untuk IPv4 struktur internet address ditetapkan sebagai variable bertipe Structure ( dalam bahasa C) dengan sebutan in_addr, berisi hanya satu field, yakni field s_addr bertipe u_long.

Gambar 3 : Strukur Internet Address

Stuktur Internet Socket Addresssebuah socket address, secara umum memegang IP Address, port number dan protocol family. Struktur socket address dikenal dengan sebutan sockaddr_in yang memiliki lima field, dimana field pertama dan field terakhir normalnya tidak digunakan.

ProtocolsTypeFamily

..

Sin_lenSin_zeroSin_addrSin_portSin_family

Local Socket Address

..

Sin_zeroSin_addrSin_portSin_familySin_len

Remote Socket Address Socket

Gambar 4 : Struktur Socket AddressTipe Socket

Socket Interface menetapkan 3 tipe socket, yakni : stream socket, datagrams socket, dan raw socket. Ketika jenis socket tersebut dapat dilihat pada gambar di bawah ini :

Gambar 5 : Tipe Socket

datagrams socket

Stream socket dirancang digunakan dengan protocol berorientasi koneksi seperti TCP. TCP menggunakan sepasang stream socket untuk menghubungkan sebuah program aplikasi ke program aplikasi lainnya melalui internet.

Socket system call

Beberapa fungsi telah ditentukan dimana fungsi-fungsi ini dapat dipanggil oleh sebuah aplikasi program untuk mengkomunikasikannya dengan program aplikasi lainnya.

1.Socket_create

Int socket (int family, int type , int protocol); AF_INET SOCK_DGRAM 0 SOCK_STREAM

Bila berhasil fungsi ini akan mengembalikan descriptor socket dengan nilai integer, dan bila tidak maka akan mengembalikan nilai= -1Nilai konstanta parameter family untuk protocol UDP IPv4 adalah AF_INET, sementara untuk protocol IPv6 nilainya adalah parameter ini adalah AF_INET6.Untuk protocol UNIX bernilai AF_UNIX. Untuk Nilai parameter type untuk protocol TCP adalah SOCK_STREAM, dan untuk protocol UDP adalah SOCK_DGRAM.Untuk Nilai parameter protocol selalui di set 0 (nol) untuk penggunaan protocol TCP atau UDP.

2. socket_Bind

Boolean socket_bind ( resource $socket , string $address [, int $port = 0 ] )

Fungsi socket_bind() mengikat socket address local ( sebuah IP Address dan sebuah port number ) dengan sebuah variable socket yang sudah dibentuk melalui fungsi socket_created(). Jika socket bertipe AF_INET family, Notasi IP Address dalam bentuk dotted-quad ( contoh 127.0.0.1). Bila socket bertipe AF_UNIX family, notasi IP Address dalam bentuk Unix-domain socket (contoh /tmp/my.sock). Bila berhasil fungsi ini akan bernilai true dan false bila gagal

3. Socket_ConnectFungsi ini digunakan oleh proses client dalam membentuk sebuah koneksi aktif ke sebuah server. Bentuk umum fungsi ini adalah sebagai berikut :

bolean socket_connect ( resource $socket , string $address [, int $port = 0 ] )Nilai kembalian fungsi ini adalah True jika berhasil dan False jika gagal.

Setelah sebuah socket diciptakan menggunakan fungsi socket_create(), proses bind dengan fungsi socket_bind(), proses listen dengan fungsi socket_listen(), Fungsi socket_accept selanjutnya akan menerima koneksi yang datang ( incoming connections). Ketika koneksi berhasil dibuat , maka selanjutnya sebuah resource socket dikembalikan, yang akan dapat digunakan untuk komunikasi. Jika ada sejumlah antrian koneksi pada soket, maka yang pertama yang akan digunakan. 4. Socket_WriteFungsi ini digunakan oleh sebuah proses untuk mengirim data ke sebuah proses lain yang sedang berjalan pada remote computer. Fungsi ini dapat digunakan dengan asumsi telah terbentuk koneksi antara dua buah computer sebelumnya. Dapat juga dikatakan fungsi ini digunakan untuk mengirim pesan dari server socket ke client socket atau sebaliknya. Fungsi ini hanya dapat digunakan pada proses TCP. Deklarasi fungsi ini adalah sebagai berikut :

int socket_write ( resource $socket, string $buffer [, int $length = 0 ] )

Nilai kembalian fungsi ini bila berhasil adalah jumlah byte buffer, dan FALSE bila error terjadi. 5. socket_readFungsi ini digunakan oleh sebuah proses untuk menerima data dari proses lain yang berjalan pada remote computer. Fungsi ini dapat digunakan dengan asumsi telah terbentuk koneksi antara dua buah computer sebelumnya. Dapat juga dikatakan fungsi ini digunakan untuk membaca pesan yang berasal dari server socket pada computer client dan membaca pesan yang berasal dari client socket pada server. Fungsi ini hanya dapat digunakan pada proses TCP. Deklarasi fungsi ini adalah sebagai berikut :

string socket_read ( resource $socket , int $length [, int $type = PHP_BINARY_READ ] )

6. socket_close

Fungsi ini digunakan oleh sebuah proses untuk menutup sebuah socket atau membatalkan sebuah koneksi TCP. Deklarasi fungsi ini adalah sebagai berikut :

void socket_close ( resource $socket )

Algoritma Pemrograman Socket.

Algoritma pemrograman socket dalam bentuk bagan model connected oriented concurrent server oleh Behrouz A) dapat dilihat pada gambar di bawah ini :

Gambar 7 : connectionless concurrent server

Bagan di atas dapat dibagi ke dalam dua bagian, yakni algortima pemrograman pada sisi client dan algortima pemrograman pada sisi server.

Algoritma pemrograman Socket pada Server :

1. Set variable host dan port ( Set variables "host" and "port" )2.Ciptakan sebuah socket ( Create Socket )3. Lakukan Bind soket dengan port dan host (Bind the socket to port and host )4.Lakukan listening pada socket ( Start listening to the socket )5.Lakukan penerimaan incoming connection ( Accept incoming connection )6.Baca (read) pesan dari socket client (Read the message from the Client socket )7.Kirim pesan ke socket client (Send message to the client socket )8.Tutup socket (close the socket )

Algoritma pemrograman Socket pada Client

1.Set variable host dan port ( Set variables "host" and "port" )2.Ciptakan sebuah socket ( Create Socket )3. Buat koneksi ke server (connect to the server)4.Tuliskan ke socket server ( Write to server socket)5.Baca pesan respon dari socket server (Read the message from the server )6.Tutup socket (close the socket )

Implementasi dan Pembahasan

Pemrograman Socket pada Server

Program di bawah ini implementasi dari algortima pemrograman socket pada server di atas

Keluaran dari program di atas dapat dilihat pada gambar di bawah ini :

Gambar 8 : Keluaran Program Socket Mengirim dan Menerima Data pada Server

Program di atas dapat dijelaskan sebagai berikut :

1. variabel $host untuk menampung nama host yakni 127.0.0.1 dan variabel $port untuk menampung nomor port yakni 4019. Kedua variabel ini digabungkan membentuk alamat socket yang dibutuhkan agar komunikasi antar proses pada client dan proses pada server dapat dilakukan. sebagai pengenal Fungsi set_time_limit(0) merupakan UDP Timer katagori keepalive timer. Fungsi ini diset dengan nilai 0 agar server melakukan listen terus-menerus.2. Menciptakan socket dengan fungsi socket_ create(). Variabel $socket menampung soket yang diciptakan. Soket dengan parameter Tipe AF_INET dan SOCK_DGRAM serta Nol(0) untuk protokol UDP. 2. Melakukan Bind dengan fungsi socket_bind()Bind $socket dengan variabel $host dengan nilai 127.0.0.1 dan variabel $port dengan nilai 4019.Port 4019 masuk dalam katagori registered port 3.Melakukan listen dengan fungsi socket_listen(). Maksimum request yang mengantri diset 3. 4.Membaca kiriman data dari socket client.Fungsi socket_read() digunakan untuk membaca pesan kiriman dari client. Variabel $spawn pada tahap 4 disertakan sebagai parameter pada proses ini. Selanjutnya Variabel $dataclient sebagai penampung pemanggilan fungsi ini akan berisi pesan kiriman dari program socket client. 5.Mengirim pesan ke socket clientFungsi socket_write() digunakan untuk mengirim pesan ke socket client. Parameter $spawn disertakan sebagai parameter pertama, $msg merupakan variabel yang berisi pesan yang akan dikirim, parameter ketiga merupakan panjang pesan yang akan dikirim.

Pemrograman Socket pada Client

Program di bawah ini implementasi dari algortima pemrograman socket pada client di atas:

Keluaran dari program di atas dapat dilihat pada gambar di bawah ini :

Gambar 9 : Keluaran Program Socket Mengirim dan Menerima Data pada ClientProgram di atas dapat dijelaskan sebagai berikut :

1. variabel $host untuk menampung nama host yakni 127.0.0.1 dan variabel $port untuk menampung nomor port yakni 4019. Fungsi set_time_limit(0) merupakan2. UDP Timer katagori keepalive timer. Fungsi ini diset dengan nilai 0 agar server melakukan listen terus-menerus.2. Menciptakan socket dengan fungsi socket_create()Variabel $socket menampung soket yang diciptakan. Soket dengan parameter Tipe AF_INET dan SOCK_DGRAM serta Nol(0) untuk protokol UDP. 3.Melakukan koneksi ke server dengan fungsi socket_connect(). Jalur virtual akan terbentuk antara komputer client dan komputer server.4.Mengirim pesan ke socket serverFungsi socket_write() digunakan untuk mengirim pesan ke socket server. Variabel $pesan sebagai penampung pemanggilan fungsi ini. 5.Membaca kiriman data dari socket serverFungsi socket_read() digunakan untuk membaca pesan kiriman dari server. Variabel $pesan pada tahap 3 disertakan sebagai parameter pada proses ini. Selanjutnya Variabel $dataclient sebagai penampung pemanggilan fungsi ini akan berisi pesan kiriman dari program socket server.

Kesimpulan dan SaranKesimpulanDari penelitian ini dapat disimpulkan beberapa hal berikut ini : 1.Tidak dapat diandalkan Jika mengirimkan suatu pesan atau data, kita tidak akan tahu apakah sudah terkirim atau belum dan apakah sebagian dari pesan tersebut hilang atau tidak ketika proses pengiriman. Jadi akan ada kemungkinan terjadinya data yang korup.2. Setelah jalur virtual terbentuk (three handshaking), maka semua segment data dari sebuah pesan akan dikirim melalui jalur ini. Komunikasi untuk proses pemutusan koneksi juga melalui jalur ini.3.Tidak berurutan Ketika mengrimkan dua pesan secara berurutan / satu demi satu. Tidak dapat dipastikan data mana yang akan datang terlebih dahulu.4.Connectionless (tanpa koneksi)Pesan-pesan UDP akan dikirimkan tanpa harus dilakukan proses negosiasi koneksi antara dua host yang hendak berukar informasi.

SaranBerdasarkan penelitian yang telah dilakukan, maka penulis memberikan beberapa saran, yaitu:

1. Implementasi pada server dan client real dan program dengan lebih banyak fungsi pada penelitian berikutnya.2.Analisis segment data yang dikirim dan diterima dan penanganan error perlu dikaji dalam peneltian berikutnya

DAFTAR PUSTAKA

http://www.skullbox.net/tcpudp.phphttp://kangjohn.wordpress.com/2009/09/02/transmission-control-protocolinternet-protocol/

TUGAS PEMOGRAMAN JARINGANKajian Pemrograman Soket Berorientasi Tanpa Koneksi (Connectionless)

DI SUSUN OLEH:

Reynaldy ( 211510050)Sony Rangga (211510100)Tri Surya (211510090)Rony (211510103 )Susi ( 211510059)Jasa Purba (21151047)Jhointa Surbakti (211510069)

UNIVERSITAS METHODIST INDONESIAFAKULTAS ILMU KOMPUTERTA. 2013/2014