pemrograman socket dengan tcp

13
LAPORAN RESMI ADMINISTRASI & MANAGEMENT JARINGAN PRAKTIKUM 3 “Pemrograman Socket dengan TCP” Oleh : Teesa Wijayanti 2 D3 IT B 2103141036 POLITEKNIK ELEKTRONIKA NEGERI SURABAYA

Upload: eepis-its

Post on 30-Nov-2023

2 views

Category:

Documents


0 download

TRANSCRIPT

LAPORAN RESMI

ADMINISTRASI & MANAGEMENT

JARINGAN

PRAKTIKUM 3 “Pemrograman Socket dengan TCP”

Oleh : Teesa Wijayanti

2 D3 IT B 2103141036

POLITEKNIK ELEKTRONIKA NEGERI

SURABAYA

Praktikum 3

Pemrograman Socket dengan TCP

A. LISTING PROGRAM

Program Aplikasi Chat Server dengan menggunakan TCP

Nomor port server

Program Aplikasi Chat Client dengan menggunakan TCP

5678;

Nomor port server

Nomor IP server

Program Utama (Main Program) Aplikasi Server dengan Multithread

Program Aplikasi Server Untuk Melayani Koneksi Client pada Multithread

Nomor port server

B. PERCOBAAN

TCP Singlethread

Langkah-langkah :

1. Jalankan program TCPEchoServer dan wireshark, pada komputer server.

2. Jalankan program TCPEchoClient, pada komputer client.

3. Lakukan pengiriman pesan yang berbeda. Pesan terakhir adalah “close”.

4. Pada wireshark, klik kanan pada salah satu line kemudian mengklik “Follow TCP

Stream”

Pada Server :

Pesan dari client yang

diterima oleh server

Alamat IP dan nomor port

sumber dan tujuan

Pada Client :

Analisa :

Pada percobaan di atas ketika menjadi server, pertama kali yang dilakukan yaitu

membuka wireshark dan mengisi kolom filter dengan ip.addr==192.168.137.114, dimana

192.168.137.114 adalah IP address dari komputer client. Lalu jalankan program TCPEchoServer

dan tunggu client untuk mengirimkan pesan ke server, ketika pesan telah diterima maka akan

tampil isi dari pesan yang dikirimkan oleh client tersebut. Dan ketika client mengirimkan pesan

close maka yang akan diterima oleh server adalah ***Menutup koneksi*** (dapat dilihat pada

capture di atas). Pada wireshark, lakukan klik kanan pada salah satu line kemudian klik “Follow

TCP Stream” yang digunakan untuk menganalisa paket (melihat pesan atau data yang telah

tertangkap) sehingga dapat terlihat secara jelas pesan yang telah dikirimkan oleh client pada

server.

Sebuah segmen TCP dapat memiliki flag (tanda-tanda) khusus yang mengindikasikan

segmen yang bersangkutan, seperti berikut :

1. URG (Urgent) Mengindikasikan bahwa beberapa bagian dari segmen TCP

mengandung data yang sangat penting, dan field Urgent Pointer dalam header TCP

harus digunakan untuk menentukan lokasi di mana data penting tersebut berada dalam

segmen.

2. SYN (Synchronize) Digunakan untuk memulai suatu koneksi antara suatu device.

3. ACK (Acknowledgement) Digunakan untuk balasan dari paket yang telah

diterima (SYN)

4. PSH (Push) Mengindikasikan bahwa isi dari TCP Receive buffer harus

diserahkan kepada protokol layer aplikasi. Data dalam receive buffer harus berisi

sebuah blok data yang berurutan (continue), dilihat dari ujung paling kiri dari buffer.

Dengan kata lain, sebuah segmen yang memiliki flag PSH diset ke nilai 1, tidak boleh

ada satu byte pun data yang hilang dari aliran byte segmen tersebut; data tidak dapat

diberikan kepada protokol layer aplikasi hingga segmen yang hilang tersebut datang.

Jadi, berdasarkan capture di atas bahwa PSH,ACK maksudnya dimana Flag PSH

berarti mengindikasi isi dari TCP yang diterima dikomputer client, dan jika PSH

bernilai 1 maka data tidak boleh satu byte pun hilang, jika hilang maka data akan

dikirim ulang.

5. RST (Reset) Mengindikasikan bahwa koneksi yang dibuat akan digagalkan.

Untuk sebuah koneksi TCP yang sedang berjalan (aktif), sebuah segmen dengan flag

RST diset ke nilai 1 akan dikirimkan sebagai respons terhadap sebuah segmen TCP yang

diterima yang ternyata segmen tersebut bukan yang diminta, sehingga koneksi pun

menjadi gagal.

6. FIN (Finish) Menandakan bahwa pengirim segmen TCP telah selesai dalam

mengirimkan data dalam sebuah koneksi TCP.

Tampilan ketika client

mengirimkan pesan ke server

Tampilan ketika client

mengirimkan pesan

close(menutup koneksi) ke

server, dapat dilihat terdapat

jumlah pesan yang telah

dikirimkan ke server

Dan jika dilihat pada hasil capture di atas bahwa terdapat FIN,ACK dari client ke server

dan sebaliknya, yang nantinya akan dibalas dengan ACK, maksudnya adalah client

meminta persetujuan kepada server untuk mengakhiri pengiriman data, karena dianggap

telah selesai, begitu juga sebaliknya.

Tujuan Three Way Handshake ini adalah agar dapat melakukan sinkronisasi terhadap

nomor urut dan nomor acknowledgement yang dikirimkan oleh kedua pihak dan saling

bertukar ukuran TCP Window.

Dan pada wireshark, dapat dilihat bahwa nomor port client berubah menjadi 49813, hal

ini dikarenakan nomor port yang dituliskan pada program client merupakan no port server/tujuan

sehingga diganti menjadi nomor port milik client sendiri pada saat mengirimkan data.

Pada percobaan di atas ketika menjadi client, yang dilakukan yaitu hanya menjalankan

program TCPEchoClient kemudian mengetikkan pesan yang ingin dikirimkan ke server (dapat

dilihat pada capture di atas).

TCP Multithread

Langkah-langkah :

1. Jalankan program TCPEchoServerThread dan wireshark, pada komputer server.

2. Jalankan program TCPEchoClient, pada masing-masing komputer client.

3. Lakukan pengiriman pesan yang berbeda. Pesan terakhir adalah “close”.

4. Pada wireshark, klik kanan pada salah satu line kemudian mengklik “Follow TCP

Stream”

Pada Server :

Tampilan pesan

yang diterima

server

Menunjukkan

banyaknya

koneksi/client yang

terhubung ke server

Ketika client

0,1,2 dan 3

menutup koneksi

Tampilan wireshark pada client 0

Tampilan wireshark pada client 1

Tampilan wireshark pada client 2

Tampilan wireshark pada client 3

Analisa :

Pada percobaan di atas hampir sama dengan percobaan sebelumnya hanya saja pada

percobaan ini mempelajari strategi penggunaan multithread pada pemrograman client-server

sehingga server tidak hanya dapat melayani satu client tetapi dapat melayani banyak client.

Seperti pada hasil capture di atas bahwa server dapat melayani tiga client sekaligus, yaitu client

0, client 1 dan client 2.

Pada sisi aplikasi server terdapat penambahan 1 buah class bernama clientHandler yang

digunakan untuk melayani koneksi ke client dimana main class dari aplikasi server memanggil

thread yang berisi class tersebut apabila ada aplikasi client yang meminta koneksi.

Sehingga dapat disimpulkan bahwa singlethread dan multithread diatas melakuan

pengakhiran dalam pengiriman data secara half close. Karena masih terdapat pengiriman

data kembali setelah koneksi terputus.

Analisa :

Pada gambar diatas perintah “netsatat –ap tcp” dijalankan pada komputer server dengan

mengguanakan cmd yang berfungsi untuk mengetahui status PC. Dimana terdapat empat buah

PC yang terhubung yaitu IFA : 49431, Teesa-PC : 49183, ElyaIntanP : 51753 dan User : 4065

yang berada pada status ESTABLISHED yang mempunyai arti bahwa koneksi telah dibangun

dan client-server telah siap untuk mengirim dan menerima data.

Untuk lebih jelasnya terdapat berbagaimacam state – state yang dilakukan oleh TCP pada

saat melakukan koneksi yaitu :

- LISTEN

Menunggu connection request dari client. ( di set oleh TCP Server )

- SYN-SENT

Client telah mengirim paket SYN dan ACK ke TCP Server , kemudian client menunggu

paket SYN dan ACK balasan dari Server.

- SYN-RECEIVED

Menunggu dari TCP Client untuk mengembalikan state acknowledgment setelah

mengirim state acknowledgment ke TCP Client.

- ESTABLISHED

Koneksi telah dibangun, client server siap untuk mengirim dan menerima data.

- TIME-WAIT

Merupakan waktu yang dibutuhkan untuk memastikan TCP menerima state

acknowledgment pada saat menghentikan koneksi.