PERCOBAAN 5 Pemrograman Socket User Datagram Protocol (UDP)
Tujuan : Memahami cara kerja protocol UDP Memahami konsep client-server Memahami konsep pemrograman socket Membuat aplikasi client-server…
PERCOBAAN 5
Pemrograman Socket User Datagram Protocol (UDP)
Tujuan : Memahami cara kerja protocol UDP Memahami konsep client-server Memahami konsep pemrograman socket Membuat aplikasi client-server menggunakan protocol UDP Memahami perintah dasar Linux (Alpine)
Dasar Teori : UDP adalah suatu protokol pengiriman data yang berbasis Internet Protocol (IP) dan bersifat connection-less oriented. Dengan kata lain UDP paket yang akan dikirim tidak pada urutan yang benar. Faktanya protokol ini tidak menjamin bahwa paket akan diterima semua. Selain itu UDP tidak melakukan pengecekan error pada pake. Namun demikian, kurangnya UDP membuat lebih efisien dari pada TCP. Contoh case nya seperti saat menelpon di aplikasi whatsapp, ketika melakukan panggilan telpon secara real-time suara kadang terputus-putus karena faktor internet yang tidak stabil, tetapi panggilan tetap berlanjut (karena menggunakan protokol UDP), berbeda halnya dengan TCP, saat melakukan aktivitas browsing, TCP memastikan semua file (HTML, CSS, Gambar) dikirim utuh tanpa ada yang hilang atau rusak, jika ada paket data yang hilang di tengah jalan, TCP akan meminta server mengirim ulang paket tersebut sampai diterima dengan sempurna. Pada OSI layer UDP berada pada layer transport yang fungsinya mengatur pengiriman suatu data dari client ke server

Untuk pengiriman datanya, pada masing-masing komputer (client-server) akan menggunakan port dengan pendefinisian terlebih dahulu. Kemudian dari client akan mengirimkan data dari port pada PC client ke arah port pada PC server. Apabila port tersebut sudah digunakan oleh aplikasi lainnya maka akan terjadi error apabila aplikasi yang kita jalankan menggunakan port yang sama.

Alur penggunaan socket programming untuk UDP seperti pada gambar di bawah ini

UDP header terdiri dari empat fields : Source port, Destination port, Length, dan Checksum. Penggunaan field checksum pada UDP adalah opsional. Gambar 5 menunjukan sebuah UDP segment.

Singkatnya, praktikum ini mempraktekkan “berkirim surat kilat” di jaringan menggunakan protokol UDP (User Datagram Protocol).
Berbeda dengan TCP yang “sopan” (harus salaman/handshake dulu), UDP itu ibarat kamu melempar surat ke halaman rumah teman; cepat, praktis, tapi kamu tidak benar-benar tahu apakah surat itu sampai atau urutannya benar.
PERALATAN
- 2 PC (VM Linux OS) Disini saya menggunakan Alpine
- gcc / build-base (untuk alpine)
- open-ssh
- nano (text editor)
- Hub / Switch (optional
build-base di Alpine sudah mencakup gcc, make, dan libc-dev yang dibutuhkan untuk mengompilasi program C tersebut.
PERCOBAAN
- Hubungkan 2 PC, bisa menggunakan switch atau dihubungkan langsung menggunakan kabel cros, Jika tidak punya linux bisa menggunakan VM di kedua PC, Gunakan adapter Bridge. PC 1 (Client) sebagai talker dan PC 2 (server) sebagai listener.
Install gcc/build-base di kedua vm, pastikan sudah terhubung ke internet


Agar bisa melakukan copy paste script, bisa gunakan SSH di kedua PC ke Host
Setting ip pada kedua pc menggunakan ifconfig
PC Client (Talker) 192.168.5.1

PC Server (Listener) 192.168.5.2

Uji koneksi, pastikan terhubung

Ping Client Ke Server

Ping Server ke Client
Agar lebih cepat dalam pembuatan script saya menggunakan openssh di kedua linux agar bisa copy paste script nya, uji koneksi antar host untuk memastika ssh bisa dilakukan

Ping dari host ke Server (listener)


Ping dari Host ke Client (talker)

Ketika sudah fiks terkoneksi dengan uji packet icmp, lakukan ssh client dan server via terminal/cmd pada host


Buat script yang sesuai dengan laporan-5
Pada talker (client)

Pada listener (server)

Buat script yang sesuai dengan menggunakan text-editor nano
pada client buat script talker.c dengan nano talker.c, lalu copas script nya ctrl + o (save) enter, ctrl + x (exit)

Pada listener, nano listener.c, lalu copas scriptnya, ctrl+o, enter, ctrl + x

Lakukan kompilasi program dengan cara :
Di VM Listener
gcc -o listener listener.c
Di VM Talker
gcc -o talker talker.c
Pada listener, jalankan script nya dengan ./listener Pada talker, lakukan perintah ini ./talker <IP LISTENER> “Percobaan pesan UDP”

Percobaan

Pada gambar tersebut percobaan pada nomer 10 sudah selesai dilakukan yang dimana pada PC A menjalankan program Listener dan pada PC B melakukan program talker
Pada percobaan kedua dengan kondisi PC A tidak menjalankan program listener sedangkan PC B, menjalankan program talker


Hasilnya, client menghasilkan outpur sent karena fungsi sendto() pada script, serta UDP tidak butuh “handshake” jabat tangan, serta UDP tidak mengecek bahwa penerimanyua sedang dalam kondisi aktif maupun nonaktif.
Pada server tidak menampilkan output apa pun karena program listener harus dalam kondisi berjalan agar fungsi recvfrom() dapat aktif menunggu data pada port 4950. Jika script tidak dijalankan, paket yang sampai di PC tujuan (dalam hal ini server)akan langsung dibuang oleh sistem operasi karena tidak ada aplikasi yang menggunakan (bind/listening) pada port tersebut.
Monitoring packet menggunakan wireshark : Disini, karena saaya menggunakan 2vm dalam 1 laptop, saya menggunakan wireshark di host, jadi saya harus menggunakan eth2 (adapter host only) agar packet bisa ter-capture, jika saya menggunakan adapter eth1 (lan segement) packet bisa dilihat ketika saya menjalankan wireshark di client atau server, bukan di host, karena jika menggunakan lan segment untuk melakukan praktikum ini anggapannya saya tidak bisa menembus lan segemen jika menjalankan wireshark di host (blind spot).
cek ip yang ada pada adapter host, disini ip nya didapat secara dynamic, pastikan 2 vm (2 PC) ini terhubung


Jalankan script nya, lalu filter pakcet udp pada wireshark



Disna terlihat ada 1 packet udp dengan Src ip 172.16.209.129 (ip client) Dst ip 172.16.209.128 (ip server) Protocol : UDP Length : 22 Bytes (UDP) / 60 Bytes (Frame) Checksum : 0x55a8
Di bagian data, terlihat rangkaian data 0000 74 65 73 74 20 77 69 72 65 73 68 61 72 6b (HexDump), jika diterjemahkan dari ASCII, ini adalah pesan teks yang kamu kirim melalui program talker.c

Bukti? nih :D

Di wireshark itu ada fitur Follow UDP Stream, ini adalah cara paling mudah untuk melihat “isi surat” (payload) dari paket yang dikirim tanpa harus kode Hexadecimal.
Apa itu Follow UDP Stream? Wireshark memiliki fitur untuk mengumpulkan semua potongan data dari satu percakapan (istilahnya komunikasi antar 2 pc dengan segment ip yg sama) dan menyajikannya dalam format teks yang mudah dibaca. Karena UDP bersifat connection-less, Wireshark hanya mengelompokkan paket-paket yang memiliki kombinasi IP dan Port asal-tujuan yang sama.
Lihat nih tampilannya

Isi payloadnya terlihat disana “test wireshark” sesuai dengan apa yang saya kirim barusan
Lanjut ke case kedua dimana, PC Client Menjalankan program sedangkan PC Server tidak menjalankan

Tampilannya seperti itu, kenapa?
Meskipun UDP bersifat connection-less (tidak butuh koneksi), sistem operasi pada VM Listener (172.16.209.128) tetap memiliki tanggung jawab atas :
Paket UDP (Baris Biru): Talker mengirimkan data ke port 4950. Paket ini sampai ke VM tujuan dengan selamat.
Problemnya Karena script listener.c tidak dijalankan, tidak ada proses/aplikasi/program di VM itu yang melakukan bind() ke port 4950.
Jadi respon Kernel Linux pada VM Listener menerima paket tersebut, memeriksa daftar port yang terbuka, dan mendapati port 4950 “kosong”. Sebagai protokol yang baik, Sistem Operasi mengirimkan balasan ICMP Type 3 Code 3 (Destination unreachable: Port unreachable) yang artinya packet kembali ke Talker untuk memberitahu bahwa paket tidak bisa diteruskan ke aplikasi/program manapun.
Sekian dari saya kurang lebih nya mohon maaf jika ada kekurangan WriteUp ini di buat hanya untuk membantu saya dalam menyusun laporan praktikum dalam bentuk dokumen.
메타데이터
- post_id
- 3017b474cbea
- slug
- percobaan-5-pemrograman-socket-user-datagram-protocol-udp-3017b474cbea
- url
- https://medium.com/@poprasberypy277/percobaan-5-pemrograman-socket-user-datagram-protocol-udp-3017b474cbea
- canonical_url
- https://medium.com/@poprasberypy277/percobaan-5-pemrograman-socket-user-datagram-protocol-udp-3017b474cbea
- author_url
- https://medium.com/@poprasberypy277
- status
- ok
- fetched_at
- 2026-07-29 03:46:03