MAKALAH SEMINAR TUGAS AKHIR
WEB PROXY Oleh: Abel Pires da Silva* (T 101 95 0563)
Pembimbing I: Ir. Sudjadi, M.T.
Pembimbing II: Agung Budi P., ST., M IT.
ABSTRAK Web Proxy adalah suatu program yang diletakkan di antara suatu komputer/jaringan komputer dengan Internet. Web Proxy bertindak sebagai perantara (middleman) bagi web browser dan web server. Web Proxy bertindak sebagai server bagi web browser dan proxy bertindak sebagai client bagi web server. Tugas Akhir ini membuat Web Proxy dengan menggunakan pemrograman socket, ditulis dengan bahasa pemrograman C dengan fasilitas GNU C Compiler dan berjalan pada Sistem Operasi Linux. Web proxy ini dapat dijadikan acuan untuk mempelajari pembuatan sistem client server dan juga pemrograman jaringan terutama pengembangan fungsi-fungsi proxy yang lebih rumit
I. LATAR BELAKANG
II. LANDASAN TEORI
Komunikasi di dalam Internet antara suatu web browser (client) dengan suatu web server (server) umumnya dilakukan secara langsung dengan
menggunakan
paradigma
hubungan
client/server.
2.1. Pendahuluan Dalam melakukan komunikasi data pada jaringan komputer, protokol memegang peranan untuk mengatur suatu komputer berkomunikasi
Seiring dengan perkembangan teknologi
dengan komputer lainnya. Untuk berkomunikasi,
Internet, dan meningkatnya resiko keamanan suatu
protokol yang dipakai haruslah sama, karena
komputer/jaringan
terhubung
protokol, mirip dengan bahasa, sehingga komputer
langsung dengan Internet, maka dikembangkanlah
perlu “berbicara” dalam bahasa yang sama jika
suatu teknologi dalam jaringan komputer yang
hendak berkomunikasi.
komputer
yang
mampu bertindak sebagai perantara antara suatu
Terdapat beragam jenis protokol yang ada
komputer/jaringan komputer dengan Internet, yang
dewasa ini, namun protokol TCP/IP (Transmission
dikenal sebagai proxy.
Control Protocol/Internet Protocol) merupakan
Proxy
yang
protokol yang paling banyak dipakai saat ini.
komputer/jaringan
TCP/IP adalah sekelompok protokol yang mengatur
komputer dengan Internet. Proxy bertindak sebagai
komunikasi data komputer di internet. Sepanjang
perantara (middleman) bagi kedua pihak.
menggunakan protokol TCP/IP, maka perbedaan
Proxy bertindak sebagai server bagi pengakses
jenis komputer maupun Sistem Operasi yang
Internet (web browser) dan proxy bertindak sebagai
dipakai tidak menjadi masalah.
diletakkan
di
adalah antara
suatu suatu
program
client bagi web server.
1
MAKALAH SEMINAR TUGAS AKHIR
2.2 Protokol TCP/IP
2.2 Koneksi TCP
TCP/IP adalah sekumpulan protokol yang
TCP merupakan protokol connection oriented.
didesain untuk melakukan fungsi-fungsi komunikasi
Protokol berorientasi koneksi ini (Connection
data. TCP/IP terdiri dari sekumpulan protokol yang
oriented protocol) membangun suatu jalur virtual
masing-masing bertanggung jawab atas bagian-
antara sisi sumber dan sisi tujuan. Semua segmen
bagian tertentu dari komunikasi data. Setiap
dari pesan dikirimkan melalui jalur virtual ini.
protokol memiliki tugas yang jelas. Protokol yang
Dalam TCP proses transmisi data dilakukan melalui
satu tidak perlu mengetahui cara kerja protokol
2 prosedur, yaitu: pembentukan koneksi dan
yang lain selama pengiriman dan penerimaan data
pemutusan koneksi.
dilakukan.
a. Pembentukan koneksi
Prinsip kerja yang demikian menjadikan
TCP mentransmisi data dalam bentuk full-duplex,
protokol TCP/IP sebagai protokol yang fleksibel
artinya jika dua host terkoneksi, maka keduanya
karena tidak spesifik terhadap satu komputer atau
dapat saling mengirimkan segmen secara serentak.
peralatan
dapat
Sebelum dilakukan transfer data, maka kedua sisi
diterapkan dengan mudah disetiap jenis komputer
harus memulai komunikasi dan untuk itu perlu satu
dan antarmuka jaringan. Agar TCP/IP dapat
sisi perlu mendapatkan persetujuan dari sisi yang
berjalan diatas antarmuka jaringan tertentu, yang
lain untuk melakukan pertukaran data.
jaringan
tertentu,
sehingga
perlu dilakukan adalah merubah protokol yang berhubungan dengan antarmuka jaringan yang
b. Three-way Hanshake (Tiga jalan jabat tangan)
bersangkutan saja. Kumpulan protokol TCP/IP ini dapat
Penerima
Pengirim
dimodelkan dengan empat lapis TCP/IP dan pengalamatannya seperti Gambar 2.1 Segme n 1: SY N seq : 120 0, a ck
:-
K N + AC n 2: SY 12 01 : Segme ck a , 00
Lapis Aplikasi (Proses)
seq: 48
Lapis Transport (TCP & UDP, Alamat Port) Lapis Internet/Network (IP & protokol lainnya, Alamat
Segme n
3:
ACK seq : 12 0 1, ack :4 801
IP) W aktu
W aktu
Lapis Data Link (Alamat Fisik ) Gambar 2.5 Pembentukan koneksi (Tiga jalan jabat tangan)
c. Pemutusan koneksi pada TCP Jaringan Fisik
Jika pada proses pembentukan koneksi hanya dibutuhkan 3 buah segmen, dalam proses pemutusan koneksi dibutuhkan 4 buah segmen, dengan urutan
Gambar 2.1 Hubungan antar lapis TCP/IP dan alamatnya
sebagai berikut (Gambar 2.6 menunjukkan proses ini):
2
MAKALAH SEMINAR TUGAS AKHIR
2.4 Proxy
Penerima
Pengirim
Proxy merupakan jenis server dan client sekaligus, yaitu proxy sebagai server bagi webSegme n
seq: 25
browser dan proxy sebagai client bagi web-
1: FIN
00, ack: -
server. Urutan pengerjaan proxy dilakukan sebagai berikut:
2:ACK
n Segme
00, seq: 70
01 ack: 25
a.
n 3: FIN Segme ck: 2501 7001, a
menangani permintaan dari web-browser.
seq:
Segme
Pertama, membuat/menulis server yang akan Server inilah yang mengembalikan halaman-
n 4: AC
seq: 25 K 01, ack :7002
halaman HTML ke web-browser b. Kedua, menulis/membuat program bagi sisi
Waktu
client, yang melakukan koneksi ke web-
Waktu
server c.
Ketiga, mengkombinasi kedua sisi diatas untuk
Gambar 2.6 Proses pemutusan koneksi TCP
membentuk
suatu
web-proxy
sederhana. 2.3 Pertukaran Paket pada TCP
Server merupakan program yang menunggu
Gambar 2.8 menunjukkan pertukaran paket aktual
permintaan koneksi pada suatu port tertentu.
yang terjadi pada koneksi TCP yang berturut-turut:
Untuk membuat server ini dibutuhkan sistem
pembentukan koneksi, transfer data, dan pemutusan
pemanggilan antara lain: socket, bind, listen, accept,
koneksi.
read, write, dan close. Client
Server
socket connect (open secara aktif) Kirim SYN
Client melihat alamat IP server kemudian
socket, bind, listen LISTEN (open secara pasif) accept
SYN J
membangun koneksi, setelah koneksi terbentuk, SY N K
Koneksi terhubung hasil dari fungsi connect
, ackJ+1
SYN diterima
ack K+
1
fungsi write dimulai fungsi read diblok
barulah proses pertukaran data dilakukan dengan menggunakan fungsi-fungsi read dan write pada
Koneksi terhubung hasil dari fungsi accept fungsi read diblok
client mengirimkan permintaan
socket.
data (permintaan/request)
Hasil fungsi read diperoleh
data (balasan)
Fungsi close dikirimkan CLOSE secara aktif FIN_WAIT_1
+ ack
n (request) bagi permintaa
ack bagi balasan dikirimkan
Sistem pemanggilan yang ada untuk client adalah: socket, connect, read, write, dan close.
server memproses permintaan client
Hasil fungsi read diperoleh
membuat socket dan memanggil connect untuk
Gabungan kedua sisi diatas akan membentuk suatu
fungsi write dimulai fungsi read diblok
web-proxy.
FIN M
CLOSE_WAIT(close scr. pasif) ack M + 1
FIN_WAIT_2 FIN N
Fungsi read menghasilkan 0
3.1 Pendahuluan
Fungsi close dikirimkan LAST_ACK
Arsitektur web-proxy ini disusun dari 3 (tiga) bagian
TIME_WAIT ack N +
III. DISAIN WEB-PROXY
1
utama:
Koneksi ditutup
Gambar 2.7 Pertukaran paket aktual pada koneksi TCP
3
1.
Sisi server dari proxy
2.
Bagian filter
3.
Sisi client dari proxy
MAKALAH SEMINAR TUGAS AKHIR
Ketiga
komponen
di
atas
yang
4.1 Pengujian kemampuan menangani multi
menjalankan fungsi dari proxy. Proxy didisain untuk
client.
mampu menangani banyak proses (multi process)
Untuk melakukan pengujian ini, program
yaitu dengan memanggil fungsi fork. Fungsi fork ini
diaktifkan pada port 80, untuk itu diperlukan akses
jika berhasil akan menciptakan satu proses anak
masuk sebagai root pada sistem operasi Linux.
(child process) yang identik dengan proses parent
Perintah untuk mengaktifkan program ini adalah:
sebelumnya (artinya mewarisi semua sifat dari
#./proxy 80
proses parent).
Kemudian perlu dilihat apakah proxy sudah
Setelah fork()
berhasil,
yaitu dengan
berjalan (aktif) mendengarkan pada nomor port
mengecek nilai balik tidak sama dengan nol (fork !=
tersebut dengan perintah #netstat –a –t. Perintah ini
0) proses parent akan
mendengarkan kembali
akan menghasilkan suatu daftar socket TCP yang
koneksi dari web browser (listening). Proses child
sedang mendengarkan koneksi beserta nomor port-
akan mengambil alih koneksi dari web browser,
nya. Jika proxy dengan nomor port 80 serta apache
dan akan menangani proses pertukaran data dari
web server dengan port 8000 terdapat pada daftar
web browser dan menuju ke web server
tersebut
Gambar 3.1 adalah struktur lengkap web proxy yang
mengaktifkan 4 (empat) jendela web-browser
tersusun dari 3 komponen di atas dengan port
(sebagai client) yang akan mengirimkan koneksi
tempat proxy dan web server berjalan.
secara hampir bersamaan ke Apache web server.
maka
Dari
langkah
hasil
selanjutnya
pengujian
terbukti
adalah
bahwa
Soc k et ( )
keempat jendela web browser yang mengakses
Bin d ( )
Lis t en ( )
halaman apache web server berhasil menerima
Loop
s ela m any a
Ac c ept ( )
respon dari apache web server pada waktu yang
For k ( )
Tid ak Chec k pr os es
par ent
hampir
Ya
Read ( ) PO RT
PO RT
bersamaan.
Hal
ini
membuktikan
Par ent dar i pr ox y Pr os es f ilt er CLI ENT
REQ UEST
kemampuan proxy untuk melakukan multi process
Soc k et ( )
Penola k an
k onek s i
CO NNECT
KE SERVER
Connec t ( )
dengan fungsi fork().
W r it e ( ) CLI ENT
REQ UEST
SERVER
RESPO NSE
Read ( )
W r it e ( ) RESPO NSE
SERVER
Clo s e
4.2. Pengujian Kemampuan filter alamat dari
Child dar i pr ox y
W EB
W EB
BROW SER
PROXY
W EB
SERVER
program Gambar 3.1 Arsitektur web-proxy
Pada pengujian program ini, program diakses menggunakan web browser yang sengaja
IV. PENGUJIAN DAN ANALISA PROGRAM Dalam
Bab
ini,
terdapat
2
memanggil alamat-alamat yang terdapat pada file
(dua)
check.dat, yang artinya akan ditolak oleh program.
kemampuan program yang akan diuji, yaitu
Terdapat 6 (enam) alamat yang sengaja
pertama, kemampuan program untuk menangani
ditempatkan pada baris pertama pada file, baris ke-
multi client dan kemampuan program untuk
100.000, baris ke-200.000, baris ke-300.000, baris
melakukan filter alamat yang dikirimkan oleh web
ke-400.000 dan baris ke-500.000.
browser.
Tiap alamat di atas yang diakses akan ditolak oleh program dengan menuliskan pesan: “ERROR 403:
4
MAKALAH SEMINAR TUGAS AKHIR
FORBIDDEN, ACCESS DENIED!” pada web
Dari grafik di atas terlihat bahwa peningkatan
browser.
jumlah baris alamat pada file check.dat tidak
Dari hasil pengujian, terdapat hubungan antara
menyebabkan peningkatan pemakaian memori yang
jumlah baris pada file check.dat dengan waktu yang
berarti (signifikan).
dibutuhkan
melakukan
Dalam kedua macam pengujian di atas, proxy
perbandingan. Hal ini terlihat pada Gambar 4.1 di
menggunakan metode baca/tulis (read/write) secara
bawah ini.
blocking yang berarti proxy melakukan proses
oleh
program
untuk
Waktu (detik)
baca/tulis hanya sekali untuk masing-masing proses, sampai proses baca/tulis tersebut selesai dilakukan.
3.5 3 2.5 2 1.5 1 0.5 0
Hal ini sangatlah riskan, karena dengan demikian, proxy tidak akan dapat melakukan proses baca/tulis lebih dari sekali, artinya untuk proses baca dari web browser maupun web server, dimana pesan yang 0
200000
400000
600000
diterima terdiri dari beberapa kali (lebih dari satu)
Jumlah Baris Alamat
operasi tulis oleh web browser maupun web server,
Gambar 4.1 Grafik hubungan antara jumlah baris pada file
maka proxy hanya dapat membaca (menerima
dengan waktu
pesan) pesan dari operasi tulis yang pertama saja, pesan dari operasi tulis selanjutnya tidak akan
Dari grafik terlihat bahwa terdapat hubungan antara
dibaca oleh proxy. Selain itu, jika data/pesan yang
waktu dan jumlah baris, yaitu semakin banyak
akan dibaca oleh proxy lebih besar dari ukuran
jumlah baris yang terdapat pada file check.dat yang
buffer yang dipakai untuk menyimpan hasil
perlu diuji, maka waktu yang diperlukan untuk
pembacaan, maka proxy hanya dapat membaca
pengujian tersebut pun akan semakin lama.
pesan tersebut hingga sebesar ukuran buffer saja,
Dari pengujian juga diperoleh hubungan antara
sisa pesan lainnya tidak akan terbaca oleh proxy,
memori yang terpakai oleh program berbeda-beda
karena itu, maka ukuran buffer pada proxy perlu
untuk jumlah baris pada file check.dat yang
ditetapkan sebesar mungkin.
berlainan. Gambar 4.2 di bawah ini menunjukkan
Memory yang Terpakai (byte)
hal ini.
V. KESIMPULAN DAN SARAN 421 420 419
5.1 Kesimpulan
Dari hasil perancangan dan implementasi
418 417 416 415
serta analisa, maka dapat diambil kesimpulan sebagai berikut: 0
200000
400000
600000
1.
Jumlah Baris Alamat
Web proxy berhasil diuji dalam komunikasi client/server pada mesin/komputer lokal.
2.
Gambar 4.2 Grafik hubungan antara jumlah baris alamat dengan memori yang terpakai
Program web proxy berhasil menjalankan fungsinya untuk menangani multi process,
5
MAKALAH SEMINAR TUGAS AKHIR
yaitu
3.
4.
5.
kemampuan
untuk
melayani
4
penulisan penolakan “paksa” terhadap web
(empat) client pada saat yang bersamaan.
browser, karena jenis respon yang tidak
Program web proxy berhasil melakukan
sesuai standar protokol HTTP seperti ini
filter terhadap alamat terlarang yang
tidak lagi dipakai oleh versi protokol HTTP
hendak diakses oleh web browser.
diatas versi HTTP/1.0
Semakin banyak jumlah baris alamat yang
4. Program
dapat
dikembangkan
untuk
hendak difilter yang terdapat pada file
paradigma Volume Based Internet Charging,
check.dat maka waktu (dalam detik) yang
yaitu
diperlukan untuk melakukan filterpun akan
berdasarkan banyaknya jumlah data yang
semakin lama.
dikirim atau diterima oleh pengguna akses
Semakin banyak jumlah baris alamat pada
Internet.
file check.dat tidak terlalu menyebabkan
5. Kelambatan
pengenaan
proses
biaya
akses
Internet
yang terjadi
akibat
kenaikan pemakaian memori yang berarti
banyaknya jumlah baris alamat yang akan
(tidak signifikan).
dilakukan
perbandingan
perlu
dicari
penyebabnya, sehingga dapat diperoleh suatu Saran
program yang bekerja dengan cepat.
Berdasarkan perancangan, hasil pengujian dan analisa maka dapat disarankan hal-hal berikut
VI. DAFTAR PUSTAKA
untuk peningkatan/perbaikan, antara lain: 1. Proses write() dan read() pada diskriptor
1.
Stevens, Richard W., UNIX Network
socket-socket sebaiknya menggunakan fungsi
Programming: Networking APIs Sockets
non-blocking
and XTI, Volume 1, Prentice Hall, 1998.
socket
sehingga
dapat
mengurangi kegagalan program dalam proses
2.
baca dan tulis pada socket. Selain itu kontrol
Forouzan, Behrouz A., TCP/IP Protocol Suite, McGraw-Hill, Inc., 2000.
program terhadap socket mana yang siap
3.
Donahoo, Michael J. & Calvert, Kenneth
untuk dibaca maupun yang siap untuk ditulisi
L., The Pocket Guide to TCP/IP Sockets, C
akan semakin baik. Fungsi-fungsi yang biasa
Version, Morgan Kaufmann Publisher,
digunakan untuk tujuan non-blocking socket
2001.
ini seperti fungsi thread, poll maupun select.
4.
2. Untuk implementasi program secara nyata,
Comer, Douglas, Internetworking With TCP/IP:
Principles,
Protocols,
and
maka perlu dilakukan penguraian request
Architectures, Volume 1, Prentice Hall
HTTP dari web browser untuk memperoleh
Englewood Cliff-New Jersey, 1988.
alamat yang diminta oleh browser tersebut.
5.
3. Perlu diperhatikan standar permintaan dan
Wierer, Jeff, Proxy Gods FAQ, MVP & Svyatoslav Pidgorny, 2002.
respon pada protokol HTTP, sehingga respon
6.
Kernighan, Brian W. & Ritchie, Dennis
penolakan dari program web proxy dapat
M., The C Programming Laguage, 2nd
dilakukan
Edition, Prentice-Hall Inc., 1988.
tersebut,
berdasarkan dan
tidak
standar-standar perlu
melakukan
6
MAKALAH SEMINAR TUGAS AKHIR
7.
Hartono,
Jogiyanto,
Konsep
Dasar
Pemrogaman Bahasa C, Edisi kedua, ANDI Yogyakarta, 2000. 8.
W. Purbo, Onno, TCP/IP: Standar, Desain dan
Implementasi,
PT.
Elex
Media
Komputindo, 1998.
*Abel Pires da Silva, Mahasiswa Teknik Elektro angkatan 1995, Lahir di Timor-Leste 24 Mei 1976, menyelesaikan pendidikan SMA di SMN2 Dili, Selama masa cuti kuliah (1999-2002) pernah bekerja sebagai Wartawan, Aktivis Forum Nasional NGO (LSM) Timor-Leste, dan terakhir bekerja pada ILO (International Labour Organization) Kantor Perwakilan Dili.
Menyetujui, Dosen Pembimbing II
Agung Budi Prasetijo, ST,MIT.
7