Saya bekerja di tempat di mana setiap aplikasi internal kami berjalan pada instance Tomcat individu dan menggunakan port TCP tertentu. Apa rentang port IANA terbaik yang digunakan untuk aplikasi ini untuk menghindari benturan nomor port dengan proses lain di server?
Berdasarkan http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml , berikut adalah opsi yang saya lihat saat ini:
- Port Sistem (0-1023): Saya tidak ingin menggunakan salah satu port ini karena server mungkin menjalankan layanan pada port standar dalam kisaran ini
- Port Pengguna (1024-49151): Mengingat bahwa aplikasi bersifat internal, saya tidak bermaksud meminta IANA untuk mencadangkan nomor untuk aplikasi kami mana pun. Namun, saya ingin mengurangi kemungkinan port yang sama digunakan oleh proses lain, misalnya, Oracle Net Listener pada 1521.
- Port Dinamis dan / atau Pribadi (49152-65535): Rentang ini ideal untuk nomor port khusus. Satu-satunya kekhawatiran saya adalah jika ini terjadi:
Sebuah. Saya mengkonfigurasi salah satu aplikasi saya untuk menggunakan port X
b. Aplikasi mati selama beberapa menit atau jam (tergantung pada sifat aplikasi), membiarkan port tidak digunakan untuk sementara waktu,
c. Sistem operasi mengalokasikan nomor port X ke proses lain, misalnya, saat proses tersebut bertindak sebagai klien yang memerlukan koneksi TCP ke server lain. Ini berhasil karena ia berada dalam rentang dinamis dan X saat ini tidak digunakan sejauh menyangkut sistem operasi, dan
d. Aplikasi gagal memulai karena port X sudah digunakan
sumber
Jawaban:
Saya tidak mengerti mengapa Anda akan peduli. Selain aturan hak istimewa "jangan gunakan port di bawah 1024", Anda harus dapat menggunakan port apa pun karena klien Anda harus dapat dikonfigurasi untuk berbicara dengan alamat IP dan port mana pun!
Jika tidak, maka itu belum dilakukan dengan baik. Kembali dan lakukan dengan benar :-)
Dengan kata lain, jalankan server di alamat IP
X
dan portY
kemudian konfigurasikan klien dengan informasi itu. Kemudian, jika Anda menemukan Anda harus menjalankan server yang berbeda padaX
konflik dengan AndaY
, cukup konfigurasi ulang server dan klien Anda untuk menggunakan port baru. Ini benar apakah klien Anda adalah kode, atau orang yang mengetik URL ke browser.Saya, seperti Anda, tidak akan mencoba mendapatkan nomor yang ditetapkan oleh IANA karena itu seharusnya untuk layanan yang begitu umum sehingga banyak, banyak lingkungan akan menggunakannya (pikirkan SSH atau FTP atau TELNET).
Jaringan Anda adalah jaringan Anda dan, jika Anda ingin server Anda pada port 1234 (atau bahkan port TELNET atau FTP dalam hal ini), itu adalah urusan Anda. Contohnya, di area pengembangan mainframe kami, port 23 digunakan untuk server terminal 3270 yang sangat berbeda dengan telnet. Jika Anda ingin melakukan telnet ke sisi UNIX dari mainframe, Anda menggunakan port 1023. Terkadang hal itu mengganggu jika Anda menggunakan klien telnet tanpa menentukan port 1023 karena ini menghubungkan Anda ke server yang tidak mengetahui apa-apa tentang protokol telnet - kita harus memutuskan keluar dari klien telnet dan lakukan dengan benar:
Jika Anda benar - benar tidak dapat membuat sisi klien dapat dikonfigurasi, pilih satu di kisaran kedua, seperti 48042, dan gunakan saja, nyatakan bahwa perangkat lunak lain pada kotak itu (termasuk yang ditambahkan di masa mendatang) harus menghalangi Anda .
sumber
Saya memutuskan untuk mengunduh nomor port yang ditetapkan dari IANA, menyaring port yang digunakan, dan mengurutkan setiap rentang "Tidak ditetapkan" dalam urutan sebagian besar port yang tersedia, menurun. Ini tidak berhasil, karena file csv memiliki rentang yang ditandai sebagai "Tidak ditetapkan" yang tumpang tindih dengan reservasi nomor port lain. Saya secara manual memperluas rentang nomor port yang ditetapkan , meninggalkan saya dengan daftar semua nomor port yang ditetapkan. Saya kemudian mengurutkan daftar itu dan membuat daftar rentang yang belum ditetapkan.
Karena halaman stackoverflow.com ini berperingkat sangat tinggi dalam pencarian saya tentang topik tersebut, saya pikir saya akan memposting rentang terbesar di sini untuk siapa pun yang tertarik. Ini untuk TCP dan UDP di mana jumlah port dalam rentang setidaknya 500.
Sumber (melalui tombol unduh CSV):
http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml
sumber
44100-44199
terlihat mudah diingat karena audio 44100 sampling pada udp dan tcp dengan aman? Baik udp 44100-44199 dan tcp 44100-44199 gratis?Jawaban singkat: gunakan port pengguna yang belum ditetapkan
Lebih dari jawaban yang berprestasi - Pilih dan terapkan solusi penemuan sumber daya. Minta server memilih porta pribadi secara dinamis. Minta klien menggunakan penemuan sumber daya.
Risiko bahwa server akan gagal karena port yang ingin didengarkan tidak tersedia adalah nyata; setidaknya itu terjadi pada saya. Layanan lain atau klien mungkin sampai di sana lebih dulu.
Anda hampir dapat sepenuhnya mengurangi risiko dari klien dengan menghindari port pribadi, yang secara dinamis diberikan kepada klien.
Risiko dari layanan lain minimal jika Anda menggunakan port pengguna. Risiko port yang tidak ditetapkan hanya bahwa layanan lain kebetulan dikonfigurasi (atau secara dinamis) menggunakan port tersebut. Tapi setidaknya itu mungkin di bawah kendali Anda.
Dokumen besar dengan semua penetapan port, termasuk Port Pengguna, ada di sini: http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.txt mencari token Tidak ditetapkan .
sumber