SO_PORT_SCALABILITY
Opsi soket SO_PORT_SCALABILITY memungkinkan skalabilitas port lokal untuk soket.
-
SO_PORT_SCALABILITY
-
-
0x3006
-
Opsi soket SO_PORT_SCALABILITY memungkinkan skalabilitas port lokal dengan memungkinkan alokasi port dimaksimalkan dengan mengalokasikan port kartubebas beberapa kali untuk pasangan port alamat lokal yang berbeda pada komputer lokal.
-
Keterangan
Catatan: pada platform di mana SO_PORT_SCALABILITY dan SO_REUSE_UNICASTPORT didukung, lebih suka menggunakan SO_REUSE_UNICASTPORT.
Lingkungan server proksi memiliki masalah skalabilitas karena ketersediaan port lokal yang terbatas. Salah satu cara untuk mengatasinya adalah dengan menambahkan lebih banyak alamat IP ke komputer. Namun, secara default port kartubebas yang digunakan dengan fungsi ikatan terbatas pada ukuran rentang port dinamis pada komputer lokal (hingga port 64K, tetapi biasanya kurang) tidak peduli jumlah alamat IP pada komputer lokal. Mengatasi hal ini mengharuskan aplikasi untuk mempertahankan kumpulan portnya sendiri baik dengan reservasi port atau dengan menggunakan heuristik.
Untuk menghindari setiap aplikasi yang memerlukan skalabilitas mengelola kumpulan portnya sendiri, dan untuk memungkinkan skalabilitas yang lebih besar sambil mempertahankan kompatibilitas aplikasi, Windows Server 2008 memperkenalkan opsi soket SO_PORT_SCALABILITY untuk membantu memaksimalkan alokasi port wildcard. Alokasi port dimaksimalkan dengan memungkinkan aplikasi mengalokasikan port wildcard untuk setiap alamat lokal dan pasangan port yang unik. Jadi, jika komputer lokal memiliki empat alamat IP, maka hingga 256 K port wildcard (64 K port × 4 alamat IP) dapat dialokasikan oleh permintaan fungsi ikatan kartubebas.
Ketika opsi soket SO_PORT_SCALABILITY diatur pada soket dan panggilan ke fungsi ikatan dibuat untuk alamat dan port kartubebas tertentu (parameter nama diatur dengan alamat tertentu dan port 0), Winsock akan mengalokasikan port untuk alamat yang ditentukan. Alokasi ini akan didasarkan pada semua kemungkinan alamat IP dan port/per alamat di komputer lokal. Jika port kartubebas diperoleh menggunakan opsi SO_PORT_SCALABILITY , port tersebut tidak dapat dialokasikan oleh soket lain tanpa opsi SO_PORT_SCALABILITY . Pembatasan ini diberlakukan untuk menghindari masalah kompatibilitas mundur dengan aplikasi yang mengasumsikan port lokal kartubebas tidak dapat digunakan kembali. Perhatikan bahwa ini berarti bahwa aplikasi yang memperoleh sejumlah besar port menggunakan SO_PORT_SCALABILITY dapat kelaparan aplikasi port warisan. Jika semua port ephemeral yang tersedia telah diperoleh setidaknya untuk satu alamat dengan SO_PORT_SCALABILITY , maka tidak ada lagi alokasi port wildcard yang dimungkinkan tanpa opsi soket.
Agar berpengaruh, opsi SO_PORT_SCALABILITY harus diatur sebelum fungsi ikat dipanggil. Contoh bagaimana ini akan digunakan di komputer dengan dua alamat diuraikan di bawah ini:
- Fungsi soket dipanggil oleh proses untuk membuat soket.
- Fungsi setsockopt dipanggil untuk mengaktifkan opsi soket SO_PORT_SCALABILITY pada soket yang baru dibuat.
- Fungsi ikatan dipanggil untuk melakukan pengikatan pada salah satu alamat IP komputer lokal dan port 0.
- Fungsi sambungkan kemudian dipanggil untuk menyambungkan ke alamat IP jarak jauh. Soket digunakan oleh aplikasi sesuai kebutuhan.
- Fungsi soket dipanggil oleh proses yang sama (mungkin utas yang berbeda) untuk membuat soket kedua.
- Fungsi setsockopt dipanggil untuk mengaktifkan opsi soket SO_PORT_SCALABILITY pada soket kedua yang baru dibuat.
- Fungsi ikatan dipanggil dengan alamat IP kedua komputer lokal dan port 0. Bahkan ketika semua port telah dialokasikan sebelumnya, panggilan ini berhasil karena ada beberapa alamat IP yang tersedia di komputer lokal dan opsi soket SO_PORT_SCALABILITY diatur pada kedua soket dalam proses yang sama.
- Fungsi sambungkan kemudian dipanggil untuk menyambungkan ke alamat IP jarak jauh. Soket kedua digunakan oleh aplikasi sesuai kebutuhan.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien minimum yang didukung |
Tidak ada yang didukung |
Server minimum yang didukung |
Windows Server 2008 [hanya aplikasi desktop] |
Header |
|
Lihat juga