GNU/Linux >> Belajar Linux >  >> Linux

Ikatan gagal:Alamat sudah digunakan

Semua orang benar. Namun, jika Anda juga sibuk menguji kode milik Anda aplikasi mungkin masih "memiliki" soket jika mulai dan berhenti relatif cepat. Coba SO_REUSEADDR sebagai opsi soket:

Apa sebenarnya yang dilakukan SO_REUSEADDR?

Opsi soket ini memberi tahu kernel bahwa meskipun port ini sibuk (dalam status TIME_WAIT), lanjutkan dan tetap gunakan kembali. Jika sedang sibuk, tetapi dengan status lain, Anda masih akan mendapatkan alamat yang sudah dalam kesalahan penggunaan. Ini berguna jika server Anda telah dimatikan, dan kemudian langsung dihidupkan ulang saat soket masih aktif di portanya. Anda harus menyadari bahwa jika ada data yang tidak terduga masuk, ini dapat membingungkan server Anda, tetapi meskipun hal ini memungkinkan, kemungkinan kecil.

Telah ditunjukkan bahwa "Soket adalah 5 tuple (proto, localaddr, local port, remote addr, remote port). SO_REUSEADDR hanya mengatakan bahwa Anda dapat menggunakan kembali alamat lokal. 5 tuple masih harus unik!" oleh Michael Hunter ([email protected]). Ini benar, dan inilah mengapa sangat tidak mungkin data yang tidak terduga akan terlihat oleh server Anda. Bahayanya adalah bahwa 5 tuple seperti itu masih mengambang di internet, dan saat tuple memantul, koneksi baru dari klien yang sama, pada sistem yang sama, kebetulan mendapatkan port jarak jauh yang sama. Hal ini dijelaskan oleh Richard Stevens dalam ``2.7 Pleaseexplain the TIME_WAIT state.''.


Anda memiliki proses yang sudah menggunakan port tersebut. netstat -tulpn akan memungkinkan seseorang untuk menemukan ID proses yang menggunakan port tertentu.


Linux
  1. Bagaimana Menemukan Port Serial Yang Digunakan?

  2. Apache 2 Tidak Dapat Mengikat, Alamat Sudah Digunakan?

  3. Bagaimana Cara Menggunakan Chromecast?

  1. Periksa penggunaan port di Linux

  2. Android Studio - Sinkronisasi Gradle gagal:Sudah dibuang

  3. Apakah mungkin untuk melakukan ping ke alamat:port?

  1. Cara menggunakan Pemblokir IP di cPanel

  2. Haruskah saya menggunakan alamat IP kedua/khusus untuk SSH?

  3. Bisakah saya menggunakan ufw untuk mengatur port forward?