Langsung ke konten

Arsip

Socket

8 artikel
Teknologi 22 Sep 2026 5 min read

TCP TIME_WAIT Memisahkan Koneksi yang Sudah Ditutup dari Segmen Terlambat

Sebuah koneksi TCP dapat selesai bertukar data aplikasi tetapi masih meninggalkan catatan socket. State TIME_WAIT merupakan bagian dari mekanisme penutupan TCP, bukan tanda bahwa proses lupa menutup descriptor. Endpoint yang melakukan active close biasanya masuk ke TIME_WAIT setelah closing handshake. Kernel mempertahankan state secukupnya selama interval terbatas agar segmen terlambat dari koneksi lama tidak tercampur dengan traffic dari koneksi baru yang memakai identitas endpoint yang sama. Perilaku ini paling terlihat pada sistem yang membuat banyak koneksi berumur pendek. Jumlah TIME_WAIT yang besar dapat tampak mencolok pada daftar socket, tetapi state tersebut menjaga ketepatan protokol dan tidak berarti setiap entri masih memiliki proses aplikasi.

Linux 22 Sep 2026 4 min read

SO_PEEK_OFF Memberi UNIX Socket Cursor Peek yang Stateful

SO_PEEK_OFF Memberi UNIX Socket Cursor Peek yang Stateful recv(..., MSG_PEEK) biasanya memeriksa data di depan receive queue socket tanpa menghapusnya. Pada UNIX-domain socket Linux, SO_PEEK_OFF dapat mengganti pola yang selalu melihat kepala queue itu dengan cursor yang bergerak maju setelah setiap peek. Cursor tersebut merupakan state milik socket. Peek menggesernya ke depan, sedangkan konsumsi byte dari depan queue menggesernya kembali sebesar jumlah byte yang diambil. Interaksi ini memungkinkan proses memeriksa bagian queue secara berurutan tanpa mengonsumsinya, sambil mempertahankan posisi peek terhadap data yang masih tersisa.

Linux 17 Sep 2026 5 min read

TCP_NODELAY Menonaktifkan Penggabungan Nagle pada Socket

Socket TCP dapat menahan write kecil alih-alih langsung mengirimkannya ketika data sebelumnya belum menerima acknowledgment. Perilaku ini berasal dari penggabungan Nagle: aliran segmen TCP kecil dibatasi dengan membiarkan data yang masih outstanding memengaruhi pengiriman byte yang baru masuk antrean. Di Linux, pengaturan TCP_NODELAY menonaktifkan aturan penggabungan tersebut untuk socket. Write kecil menjadi memenuhi syarat untuk segera dikirim, dengan tetap tunduk pada bagian lain dari stack TCP, congestion control, flow control, keadaan antrean, dan penjadwalan perangkat.

Rekayasa Perangkat Lunak 17 Sep 2026 6 min read

SO_REUSEPORT Memindahkan Distribusi Koneksi TCP ke Kernel

Dengan SO_REUSEPORT, beberapa socket TCP Linux dapat listen pada alamat lokal dan port yang sama secara bersamaan. Koneksi masuk ditetapkan ke salah satu anggota reuseport group sebelum aplikasi memanggil accept(). Aplikasi tidak lagi membutuhkan satu listening socket bersama sebagai satu-satunya titik handoff antara network stack dan banyak worker. Perubahan ini lebih dari sekadar kelayakan bind(). Distribusi koneksi dipindahkan ke kernel dan setiap listener memiliki identitas socket serta jalur accept sendiri. Arsitektur yang dihasilkan memiliki sifat queueing, lifecycle, dan routing yang berbeda dari desain ketika banyak worker berebut satu listening socket.

Rekayasa Perangkat Lunak 17 Sep 2026 4 min read

SO_REUSEPORT Membentuk Grup Socket dengan Seleksi oleh Kernel

Beberapa socket Linux dapat melakukan bind ke alamat lokal yang sama ketika setiap socket mengaktifkan SO_REUSEPORT sebelum bind(). Traffic masuk kemudian ditetapkan ke salah satu anggota reuseport group, bukan dikirim ke setiap socket. Alamat bersama tersebut menjadi batas seleksi oleh kernel, bukan endpoint broadcast. Perilaku ini mendukung receive loop atau accept loop yang berdiri sendiri tanpa memaksa seluruh pekerjaan melewati satu listening descriptor. Konsekuensinya juga jelas: keanggotaan grup dan kebijakan seleksi menentukan socket yang menerima packet atau connection.

Linux 17 Sep 2026 6 min read

SO_REUSEPORT Membagi Trafik ke Beberapa Grup Socket

SO_REUSEPORT mengubah satu endpoint lokal dari binding satu socket menjadi sebuah grup socket. Di Linux, beberapa socket TCP atau UDP dapat melakukan bind ke alamat lokal yang sama ketika semua socket yang ikut mengaktifkan opsi ini sebelum bind() dan kredensial binding memenuhi aturan reuse dari kernel. Perilaku ini berbeda dari sekadar melonggarkan pemeriksaan konflik alamat. Trafik yang masuk juga harus diarahkan ke salah satu anggota grup. Batas pemilihan ini memengaruhi arsitektur listener, isolasi antrean, restart proses, penempatan flow UDP, dan desain apa pun yang menganggap satu port selalu identik dengan satu socket.

Linux 17 Sep 2026 4 min read

SO_RCVLOWAT Menaikkan Ambang Readability pada Socket Linux

Socket Linux dengan SO_RCVLOWAT di atas satu byte dapat memiliki data dalam antrean sementara poll(), select(), atau epoll belum melaporkan readiness baca normal. Sejak Linux 2.6.28, antarmuka readiness tersebut menghormati receive low-water mark yang dikonfigurasi. Opsi ini mengubah ambang yang terkait dengan readiness penerimaan normal. Opsi ini tidak menetapkan batas pesan, tidak mencadangkan ruang receive buffer, dan tidak menjamin operasi penerimaan berikutnya mengembalikan tepat sejumlah byte sesuai nilai konfigurasi. Readability dapat memerlukan lebih dari satu byte dalam antrean Readiness penerimaan socket biasanya diamati dengan low-water mark bawaan sebesar satu byte. Pada kondisi ini, data biasa yang sudah masuk antrean cukup untuk memenuhi bagian volume data dari kondisi readable.

Teknologi 16 Sep 2026 5 min read

TCP TIME-WAIT Mempertahankan State Koneksi yang Sudah Ditutup

Endpoint TCP dapat menyelesaikan operasi close dari aplikasi sementara protocol masih mempertahankan state untuk koneksi tersebut. Setelah active close menyelesaikan pertukaran FIN, endpoint biasanya masuk ke TIME-WAIT alih-alih langsung membuang connection record. State yang dipertahankan ini memiliki dua fungsi. Pertama, endpoint tetap dapat mengakui retransmitted final FIN. Kedua, ia memisahkan koneksi yang sudah ditutup dari incarnation berikutnya yang mungkin memakai local dan remote address serta port yang sama. Karena itu TIME-WAIT bukan established connection yang sedang idle. Ia adalah protocol boundary di antara connection incarnation.