Tag: Go

Bahasa pemograman Go adalah bahasa pemograman yang dikembangkan oleh Google untuk membuat aplikasi native. Go lebih sederhana dari bahasa C dan mendukung sintaks conccurrency bawaan. Selain itu, Go juga memiliki fasilitas build bawaan dengan CLI go tanpa harus melibatkan Makefile, CMake, dan sebagainya. Go juga dapat dipakai untuk membuat shared library yang dapat digunakan oleh program C.

Apa Itu Protokol Traversal Using Relays around NAT (TURN)?

Traversal Using Relays around NAT (TURN) adalah sebuah protokol relay yang memungkinkan client berkomunikasi dengan peer yang tidak memiliki IP publik secara langsung (misalnya berada dibalik NAT). Protokol ini didefinisikan di RFC 8656. Komponen TURN terdiri atas TURN client dan TURN server. Komunikasi antara TURN client dengan peer selalu melalui TURN server yang berperan sebagai perantara. Oleh sebab itu, TURN server dan peer harus bisa saling berkomunikasi yang biasanya dilakukan dengan meletakkan TURN server pada jaringan publik.

Kategori: Network Tags: Protocol Go

Memakai Long-Term Credential Di STUN

RFC 5389 mendefinisikan dua metode authentication untuk STUN: short-term credential dan long-term credential. Metode short-term credential dipakai pada protokol seperti ICE sementara long-term credential merupakan persyaratan untuk protokol TURN. Pada tulisan kali ini, saya akan mencoba menggunakan long-term credential di STUN.

Kategori: Network Tags: Protocol Go

Apa Itu Protokol Session Traversal Utilities for NAT (STUN)?

Salah satu istilah yang sering saya jumpai saat membuat kode program yang berhubungan dengan WebRTC adalah STUN. Session Traversal Utilities for NAT (STUN) adalah protokol yang didefinisikan di RFC 5389. STUN membantu mempermudah komunikasi dengan perangkat yang berada dibalik NAT yang tidak dapat dihubungi secara langsung dari IP publik. Komponen STUN disebut sebagai STUN Agent yang terdiri atas STUN Client dan STUN Server.

Kategori: Network Tags: Protocol Go JavaScript

Melakukan Binding Port Yang Sama Di Go Dengan SO_REUSEPORT

Sebuah socket di sistem operasi berbasis UNIX adalah kombinasi dari alamat IP sumber, port sumber, alamat IP tujuan dan port tujuan. Pada umumnya, bila sebuah program ingin membuat socket baru, kombinasi dari ke-empat elemen tersebut harus unik. Untuk membuktikannya, saya akan membuat sebuah program yang melakukan binding di port 12345/UDP dan pada saat yang bersamaan, juga mengirim pesan dari port 12345/UDP ke alamat multicast 239.255.255.259 di port 3702/UDP. Contoh kode program Go-nya terlihat seperti berikut ini:

Kategori: Network Tags: Go

Melakukan Hashing Password Dengan Nonce di Sisi Client

Proses hashing untuk password di sisi frontend biasanya dilakukan supaya password tidak dikirimkan apa adanya (plain text) melalui jaringan. Secara umum, proses ini tidak begitu meningkatkan keamanan password karena website modern sudah menggunakan HTTPS sehingga password yang dikirim ke backend sudah ter-enkripsi. Proses hashing ini lebih berguna untuk serangan tertentu seperti MITM proxy dan mencegah password tidak sengaja tersimpan di log backend (misalnya di server NGINX yang men-log seluruh request body).

Kategori: Pemograman Tags: Go JavaScript

Memakai Algoritma HOTP & TOTP

Salah satu algoritma yang paling sering digunakan untuk menghasilkan one-time password (OTP) adalah algoritma HMAC-based one-time password (HOTP) dan Time-based one-time password (TOTP). Sebagai contoh, Google Authenticator mendukung kedua algoritma tersebut dimana HOTP disebut sebagai counter based dan TOTP disebut sebagai time based seperti yang diperlihatkan pada gambar berikut ini:

Kategori: Pemograman Tags: Go

Mencari Router Dengan IPv6 Neighbor Discovery Protocol

Seluruh perangkat yang terhubung ke jaringan yang sama secara langsung dapat berkomunikasi satu dengan lainnya. Namun, untuk berkomunikasi dengan perangkat di segmen jaringan yang berbeda, perangkat harus melalui router terlebih dahulu. Pada konfigurasi manual, pengguna bisa mengisi alamat IP router sebagai gateway. Namun, hampir semua sistem operasi modern mendukung konfigurasi jaringan otomatis dimana perangkat bisa terhubung ke router tanpa harus tahu apa IP router tersebut. Bagaimana cara kerjanya?

Kategori: Network Tags: Go Protocol