Tunneler Datagram

Program klien/server lintas platform sederhana yang meneruskan datagram UDP melalui koneksi TCP (alias terowongan). Klien bergabung dengan grup multicast dan meneruskan datagram yang diterima ke server, yang kemudian melakukan multicast pada subnetnya sendiri.
- Dirancang dengan mempertimbangkan kesederhanaan
- Diuji pada OSX 10.13.3 , Ubuntu 16.04 dan Centos 7.4
- TIDAK kompatibel dengan Windows
Isi
Persyaratan
Instalasi
Ringkasan
Contoh
Bagaimana cara kerjanya?
Protokol DTEP
Perizinan
Persyaratan
- Komputer yang menjalankan distribusi Linux atau Mac OS
- Kompiler c++
Instalasi dalam 10 detik
- Unduh atau kloning repositori.
- Masuk ke repositori:
cd <path_to_the_repo>/DatagramTunneler
- Bangun DatagramTunneler hanya dengan menjalankan make:
- Anda siap menjalankan biner DatagramTunneler:
./bin/DatagramTunneler -h
Untuk lebih jelasnya cara menjalankannya, simak Sinopsisnya di bawah ini
Ringkasan
Untuk menggunakan DatagramTunneler Anda harus memulai sisi server terlebih dahulu, kemudian sisi klien. Jika tidak, klien akan gagal terhubung ke server dan langsung keluar.
pelayan
dgramtunneler --server -i <udp_iface_ip> -t <tcp_listen_port> [-u <udp_dst_ip>:<port>]
- <udp_iface_ip> : antarmuka yang digunakan untuk mempublikasikan datagram yang diteruskan
- <tcp_listen_port> : port tcp digunakan untuk mendengarkan koneksi klien
- <udp_dst_ip>:<port> : (opsional) udp IP tujuan dan port tempat server menerbitkan datagram yang diteruskan. Jika tidak disediakan, datagram diterbitkan pada saluran yang sama yang diikuti oleh klien.
Klien
dgramtunneler --client -i <udp_iface_ip> -t <tcp_srv_ip>:<tcp_srv_port> -u <udp_dst_ip>:<port>
- <udp_iface_ip> : antarmuka yang digunakan untuk bergabung dengan saluran multicast yang disediakan oleh -u
- <tcp_srv_ip>:<port> : IP dan port server tujuan penerusan datagram
- <udp_dst_ip> : <port> : udp IP tujuan dan port saluran yang ingin kita gabung
Contoh
(Jangan lupa beri bintang kecil jika alat ini bermanfaat bagi Anda :]) sisi server:
./bin/datagramtunneler --server -i 192.168.0.104 -u 228.14.28.52:1234 -t 28052
sisi klien:
./bin/datagramtunneler --client -i 192.168.0.105 -u 228.1.2.3:7437 -t 192.168.0.104:28052
Bagaimana cara kerjanya?
Tujuan dari DatagramTunneler adalah untuk mentransfer data multicast dari satu subnet A ke subnet B lainnya di mana saluran multicast tersebut tidak tersedia. Untuk mencapai hal ini, DatagramTunneler dibagi menjadi 2 sisi: sisi klien dan sisi server, seperti yang ditunjukkan pada diagram di bawah ini: 
Sisi Klien
Sisi klien harus berjalan di subnet tempat saluran multicast dapat digabungkan. Setelah dimulai, ia akan melakukan hal berikut:
- terhubung ke Server DatagramListener (TCP)
- bergabung dengan saluran multicast (UDP)
- meneruskan semua datagram yang diterima ke server menggunakan koneksi TCP yang telah ada. Datagram ditransmisikan melalui TCP menggunakan Datagram Tunneler Encapsulation Protocol (atau DTEP).
Sisi Server
Sisi server harus berjalan di subnet dimana multicast tidak tersedia. Setelah dimulai, ia akan melakukan hal berikut:
- mendengarkan koneksi klien (perhatikan bahwa hanya satu koneksi yang diterima sepanjang masa pakai server/klien. Setelah terowongan terputus, kedua ujungnya keluar.
- setelah koneksi dengan klien dibuat, ia akan mempublikasikan semua datagram yang dikirim oleh klien ke saluran multicast. Saluran tersebut dapat berupa apa pun yang ditentukan saat server diluncurkan, atau jika tidak ditentukan, saluran tersebut akan menggunakan saluran multicast yang sama yang dikodekan dengan datagram yang diterimanya (lih. DTEP).
Protokol Enkapsulasi Terowongan Datagram (DTEP)
Datagram Tunneler Protocol atau DTEP adalah protokol biner sederhana, yang dijelaskan dalam diagram berikut: 
Paket DTEP memiliki header 1 byte yang menentukan jenis payload yang dikandungnya.
Tipe Paket 0x00 = Detak Jantung
Paket jenis ini tidak memiliki payload. Ini dikirim oleh klien ke server dan membantu memastikan kedua ujung koneksi mengetahui apakah ujung lainnya masih hidup.
Tipe Paket 0x01 = DATAGRAM
Paket ini merangkum datagram yang diamati oleh klien. Berikut penjelasan lengkapnya: 
Meskipun diagram ini sudah cukup jelas, berikut rincian semua bidangnya:
- Panjang Datagram : jumlah byte datagram yang dienkapsulasi (panjang header DTEP TIDAK termasuk)
- Alamat Saluran UDP : alamat tujuan grup multicast tempat klien bergabung untuk menerima datagram tersebut
- Port Saluran UDP : port tujuan grup multicast tempat klien bergabung untuk menerima datagram tersebut
- Datagram UDP Terenkapsulasi : datagram aktual yang diterima oleh klien dari saluran multicast
Perizinan
Lih LISENSI