Frans A. Siagian : Perancangan Komunikasi Client Server Dan Sistem Database, 2008 USU Repository © 2009
maka penerima tidak dapat mengirimkan konfirmasi negatif kembali kepada pengirim. Sebagai pengganti, dikonfirmasi kembali byte terakhir data yang sudah diterima.
Karena pengirim sering mengirimkan jumlah segmen yang besar kembali ke belakang, jika satu segmen hilang maka akan ada banyak duplikat ACK. Jika pengirim
TCP menerima tiga duplikat ACK untuk data yang sama, maka ini diambil sebagai indikasi bahwa segmen yang di-ACK tiga kali sudah hilang. Dalam kasus ini tiga ACK
duplikat diterima, pengirim TCP melakukan fast retransmit retransmisi cepat, mentransmisi ulang segmen sebelum timer segmen berakhir.
3.4 Penanganan Koneksi TCP
Dalam sub bagian ini akan dibahas dari dekat bagaimana koneksi TCP dibangun dan menguraikannya. Meskipun topik ini terlihat tidak terlalu khusus, namun perlu
karena pembentukan koneksi TCP ini dapat menjelaskan delay yang ada. Lebih lanjut, banyak serangan jaringan, termasuk serangan SYN dengan memanfatkan pengelolaan
koneksi TCP. Pertama dibahas bagaimana koneksi TCP dibentuk. Nyatakanlah proses yang dijalankan itu dalam satu host client ingin memulai koneksi dengan proses dalam
host yang lain server. Proses aplikasi client ini pertama kali memberitahukan TCP client bahwa ia mau membangun sebuah koneksi proses dalam server. TCP dalam client
kemudian memulai membangun koneksi TCP dalam server dengan cara sebagai berikut:
Langkah 1. TCP sisi client mengirimkan segmen TCP khusus pada sisi server TCP. Segmen khusus ini tidak memiliki data lapisan aplikasi. Tetapi salah satu bit flag
dalam header segmen, bit SYN, diset 1. Untuk alasan itu, segmen khusus ini disebut segmen SYN. Disamping itu, client secara acak memilih nomor urut awal client_isn
Frans A. Siagian : Perancangan Komunikasi Client Server Dan Sistem Database, 2008 USU Repository © 2009
dan meletakkan nomor ini ke dalam field nomor urut sequence number dari TCP SYN awal. Segmen ini dikemas dalam datagram IP dan mengirimkannya ke server.
Langkah 2. Sekali datagram IP yang memuat segmen TCP SYN tiba pada host server,
maka server akan mengeksktrak segmen TCP SYN dari datagram, mengalokasikan buffer TCP dan variabel menuju koneksi dan mengirimkan segmen yang disetujui ini
kepada TCP client. Segmen yang disetujui ini juga tidak memuat data lapisan aplikasi. Begitupun, ia memuat tiga bagian informasi penting dalam header segmen.
Pertama, bit SYN diset 1. Kedua, field acknowledgement dari header segmen TCP diset ke client_isn+1. Akhirnya, server memilih nomor urutan awalnya server_isn
dan menempatkan nilai ini pada field nomor urut dari header segmen TCP. Segmen yang disetujui ini akan berkata,”Saya menerima paket SYN anda untuk memulai
koneksi dengan nomor urut awalmu, client_isn. Saya setuju untuk membangun koneksi ini. Nomor urut awal yang saya miliki adalah server_isn”. Segmen koneksi
yang disetujui ini disebut juga sebagai segmen SYNACK.
Langkah 3. Setelah menerima segmen SYNACK, client juga mengalokasikan buffer dan variabel pada koneksi. Host client mengirimkan kepada server segmen lain,
Segmen terakhir ini mengkonfirmasikan segmen server client juga melakukannya dengan menempatkan nilai server_isn+1 pada field acknowledgement dari header
segmen TCP. Bit SYN diset ke 0, semenjak koneksi dibangun. Setelah tiga langkah diselesaikan, client dan server dapat mengirimkan segmen yang
memuat data satu sama lain. Dalam setiap segmen ini, bit SYN akan diset ke nol. Sebagai catatan untuk membangun koneksi, tiga paket dikirimkan diantara dua host yang
Frans A. Siagian : Perancangan Komunikasi Client Server Dan Sistem Database, 2008 USU Repository © 2009
diilustrasikan pada Gambar 3.7. Dengan alasan tersebut, aturan membangun koneksi ini sering dinamakan three way handshake jabatan tangan tiga arah.
Gambar 3.7 Jabatan Tangan handshake Tiga Arah TCP Sekarang akan dibahas bagaimana proses untuk mengakhiri koneksi TCP. Salah
satu dari dua proses yang berpartisipasi dalam koneksi TCP dapat mengakhiri koneksi. Ketika koneksi berakhir, maka “sumber” dalam host akan dibebaskan. Anggap client
memutuskan untuk menutup koneksi seperti pada Gambar 3.8. Proses aplikasi client mengeluarkan perintah untuk menutup koneksi. Hal ini menyebabkan TCP client
mengirimkan segmen TCP khusus kepada proses server. Segmen khusus ini memiliki sebuah bit flag dalam header segmen, yaitu bit FIN diset ke 1. Ketika server menerima
segmen ini, ia mengirimkan client sebuah segmen acknowledgement. Server kemudian mengirimkan segmen menutupnya, yang memiliki bit FIN yang diset 1. Akhirnya, client
Frans A. Siagian : Perancangan Komunikasi Client Server Dan Sistem Database, 2008 USU Repository © 2009
mengkonfirmasikan segmen menutup shutdown server. Dalam hal ini, semua sumber daya yang ada pada kedua host diakhiri.
Gambar 3.8 Penutupan Koneksi TCP Selama pemakaian koneksi TCP, protokol TCP yang berjalan pada masing-
masing host melakukan peralihan melalui berbagai kondisi TCP. Gambar 3.9 mengilustrasikan urutan kondisi TCP dengan kunjungan TCP client. TCP client ini
memulai kondisi CLOSED. Aplikasi pada sisi client memulai koneksi TCP yang baru. Ini meyebabkan TCP pada client mengirimkan segmen SYN pada TCP dalam server.
Setelah mengirimkan segmen SYN, TCP client membuka kondisi SYN_SENT. Ketika dalam kondisi SYN_SENT, TCP client menunggu sebuah segmen dari TCP server yang
memasukkan sebuah konfirmasi untuk segmen client sebelumnya dan memiliki bit SYN yang diset 1. Setelah menerima segmen, TCP client membuka kondisi ESTABLISHED.
Frans A. Siagian : Perancangan Komunikasi Client Server Dan Sistem Database, 2008 USU Repository © 2009
Ketika dalam kondisi ESTABLISHED, client TCP dapat mengirim dan menerima segmen TCP yang berisikan data.
Anggap bahwa aplikasi client memutuskan ingin menutup koneksi. Hal ini menyebabkan TCP client mengirimkan sebuah segmen TCP dengan bit FIN diset 1.
Ketika dalam kondisi FIN_WAIT_1, TCP client menunggu sebuah segmen TCP dari server dengan sebuah acknowledgement. Ketika ia menerima segmen ini, TCP client
membuka kondisi FIN_WAIT_2. Ketika dalam kondisi FIN_WAIT_2, client menunggu segmen yang lain dari server dengan bit FIN diset 1. Setelah menerima segmen ini, TCP
client mengkonfirmasikan segmen server dan membuka kondisi TIME_WAIT. Kondisi TIME_WAIT membiarkan client TCP mengirimkan ulang acknowledgement terakhir
dalam kasus ACK hilang. Waktu yang dihabiskan dalam kondisi TIME_WAIT ini adalah implementasi tanggungan, namun nilai yang khusus adalah 30 detik, 1 menit, dan 2
menit. Setelah menunggu, koneksi dengan resmi ditutup dan semua sumber daya pada sisi client dihentikan.
Frans A. Siagian : Perancangan Komunikasi Client Server Dan Sistem Database, 2008 USU Repository © 2009
Gambar 3.9 Urutan Kondisi TCP yang Dikunjungi oleh TCP Client Gambar 3.10 mengilustrasikan rangkaian kondisi yang dikunjungi oleh TCP sisi
server dengan mengasumsikan client memulai uraian koneksi. Transisi ini merupakan penjelas. Dalam dua diagram kondisi transisi ini hanya diketahui bagaimana koneksi TCP
ini dibangun dan ditutup. Sehingga tidak perlu dijelaskan apa yang telah terjadi dalam skenario pathologic, sebagai contoh ketika kedua sisi dari koneksi mau memulai atau
menutup pada waktu yang sama.
Frans A. Siagian : Perancangan Komunikasi Client Server Dan Sistem Database, 2008 USU Repository © 2009
Gambar 3.10 Urutan Kondisi TCP yang Dikunjungi oleh TCP Server Sekarang dijelaskan apa yang terjadi ketika host menerima segmen TCP yang
memiliki nomor port atau alamat IP sumber yang tidak sesuai dengan socket dalam host. Misalnya anggap sebuah host menerima paket TCP SYN dengan port tujuan 80, tetapi
host itu tidak menerima koneksi pada port 80. Maka host akan mengirimkan segmen reset khusus pada sumber. Segmen TCP memiliki bit flag RST yang diset ke 1 [9].
Sehingga ketika host mengirimkan segmen itu, ia akan berbicara ke sumber, “Saya tidak punya socket untuk segmen itu. Tolong jangan kirim kembali segmen itu.”
BAB IV
Frans A. Siagian : Perancangan Komunikasi Client Server Dan Sistem Database, 2008 USU Repository © 2009
PERANCANGAN PERANGKAT LUNAK SISTEM KOMUNIKASI CLIENT SERVER
4.1 Kebutuhan Sistem