Skip to content

iqbalhaidr/Tubes-IF2230-Jaringan-Komputer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tugas Besar IF2230 Jaringan Komputer 2024/2025

jar

Deskripsi Umum

ChatTCP adalah implementasi protokol TCP di atas UDP. Proyek ini terdiri dari dua bagian utama:

  1. Implementasi fitur TCP di atas UDP - Mengimplementasikan mekanisme TCP seperti three-way handshake, flow control, error detection, dan segmentasi data

  2. Aplikasi chat room sederhana - Chat room berbasis command line yang menggunakan protokol TCP buatan sendiri

Fitur

Protokol ChatTCP

✅ TCP Segments: Segmentasi data dengan payload maksimal 64 bytes per segment

✅ Three-Way Handshake: Koneksi establishment dengan sequence number acak

✅ Flow Control: Implementasi Selective Repeat ARQ untuk pengiriman data yang efisien

✅ Error Detection: Checksum 16-bit untuk verifikasi integritas data

✅ Connection Termination: FIN-ACK handshake untuk penutupan koneksi

Aplikasi Chat Room

✅ Multi-client support: Server dapat menangani multiple client secara bersamaan

✅ Real-time messaging: Pengiriman dan penerimaan pesan secara real-time

✅ Heartbeat mechanism: Deteksi client yang terputus (timeout 30 detik)

✅ Special commands: Command khusus untuk disconnect, kill server, dan change username

✅ User management: Tracking user online dan notifikasi join/leave

✅ GUI Client: Interface grafis menggunakan Tkinter (opsional)

Persyaratan Sistem

  • Python 3.13 atau lebih baru
  • Package manager uv (recommended) atau pip
  • Sistem operasi: Windows, Linux, atau macOS

Setup dan Instalasi

1. Clone Repository

git clone https://github.com/labsister22/tugas-besar-if2230-jaringan-komputer-jarjarjarkom.git

cd tugas-besar-if2230-jaringan-komputer-jarjarjarkom

2. Setup Environment dengan uv (Recommended)

# Install uv jika belum ada
# Ikuti panduan di: https://docs.astral.sh/uv/getting-started/installation/

uv python install 3.13
uv python pin 3.13

# Initialize project
uv init

3. Verifikasi Python Version

python --version
# Output harus: Python 3.13.x

Cara Menjalankan

Server

uv run --link-mode=copy -m src.app.server 127.0.0.1 -p 55555

Client (CLI)

uv run --link-mode=copy -m src.app.client <server_ip> -p <port> -n <username>

uv run --link-mode=copy -m src.app.client 127.0.0.1 -p 55555 -n Owo

Client (GUI)

uv run client_gui.py

# Masukkan server IP, port, dan username melalui interface

Command Khusus

!disconnect - Keluar dari chat room
!kill <password> - Mematikan server (password: admin123)
!change <nama_baru> - Mengubah username
!heartbeat - Heartbeat message (otomatis setiap 1 detik)

Arsitektur dan Implementasi

TCP Segment Header

Setiap segment memiliki header dengan format:

  • Source Port (16 bit)
  • Destination Port (16 bit)
  • Sequence Number (32 bit)
  • ACK Number (32 bit)
  • Data Offset + Reserved (8 bit)
  • Flags (8 bit) - SYN, ACK, FIN
  • Window Size (16 bit)
  • Checksum (16 bit)
  • Urgent Pointer (16 bit)

Flow Control Algorithm

Menggunakan Selective Repeat ARQ dengan window size 4:

  • Sender dapat mengirim multiple segment dalam window
  • Receiver mengirim ACK untuk setiap segment yang diterima
  • Automatic retransmission untuk segment yang timeout
  • Window sliding setelah menerima ACK

Three-Way Handshake

  1. Client → Server
  2. Server → ClientServer → Client
  3. Client → Server

Testing dan Simulasi Jaringan Buruk

Linux

# Simulasi jaringan buruk
sudo tc qdisc add dev lo root netem delay 100ms 50ms reorder 8% corrupt 5% duplicate 2% 5% loss 5%

# Reset konfigurasi
sudo tc qdisc del dev lo root netem delay 100ms 50ms reorder 8% corrupt 5% duplicate 2% 5% loss 5%

Windows

  • Download Clumsy dari: https://jagt.github.io/clumsy/
  • Jalankan clumsy.exe sebagai administrator
  • Konfigurasi: Lag 100±50ms, Drop 5%, Duplicate 2%, Reorder 8%

Author

Nama NIM Pembagian Kerja
Muh. Rusmin Nurwadin 13523068 Implementasi Flow Control
Muhammad Iqbal Haidar 13523111 Implementasi Client
Guntara Hambali 13523114 Implementasi Server
Reza Ahmad Syarif 13523119 Three-Way Handshake, Checksum

About

Tugas Besar IF2230 Jaringan Komputer ITB (TCP over UDP Chatroom)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5

Languages