Ada 65536 port untuk setiap sistem dalam jaringan, dan setiap koneksi atau Kirim / Terima akan menggunakan salah satunya.
Pertanyaan saya adalah: apa yang terjadi jika kita memiliki 65536 + 1 koneksi ?!
Saya tahu itu tidak terjadi dengan cara biasa, tetapi saya ingin tahu bagaimana Sistem Operasi menanganinya.
networking
operating-systems
Omid Golparvar
sumber
sumber
Jawaban:
Perlu diketahui bahwa suatu sistem dapat menangani lebih dari 65536 koneksi bersamaan, karena masing-masing tidak harus menggunakan port terpisah.
Koneksi TCP atau aliran UDP ditentukan oleh 4-tuple:
Jadi, bahkan jika Anda memiliki mesin server web dengan hanya satu alamat IP, dan satu paket perangkat lunak server HTTP yang hanya mendengarkan pada port 80, secara teoritis ia dapat menangani 65536 koneksi per alamat IP klien yang terhubung . Jadi koneksi 64Ki dari alamat IP klien 1, ditambah koneksi 64Ki dari alamat IP klien 2, dll.
Jadi protokol mendukung, untuk perkiraan pertama, 2 48 koneksi / mengalir ke port TCP atau UDP tunggal pada alamat IPv4 tunggal. Pertimbangkan TCP dan UDP secara bersamaan, dan kedua ruang alamat IPv4 dan ruang alamat IPv6 yang besar secara kosmis / komikal, dan Anda dapat melihat bahwa protokol itu sendiri tidak akan pernah menjadi sumber batas jumlah koneksi bersamaan yang dimiliki oleh suatu host dapat menangani.
Demikian pula, tidak ada dalam protokol TCP atau UDP yang menjaga mesin klien dari menggunakan port sumber tunggal pada alamat IP tunggal untuk membuat beberapa koneksi keluar ke berbagai alamat server dan port. Terkadang API jaringan OS tertentu mungkin tidak membuat ini mudah, tetapi penting untuk diingat bahwa, katakanlah, API "[BSD] Sockets" lama yang terhormat hanyalah satu API untuk TCP dan UDP. TCP dan UDP mungkin memiliki kemampuan yang tidak diekspos oleh API Soket tradisional.
Jadi jumlah koneksi TCP bersamaan atau aliran UDP yang dapat ditangani oleh host tertentu tidak dibatasi oleh jumlah port, tetapi oleh sumber daya sistem seperti ruang RAM dan waktu CPU yang diperlukan untuk melacak semua koneksi tersebut dan melayani semuanya. Juga detail khusus implementasi OS dapat memaksakan batas buatan. Misalnya, dalam filosofi Unix "everything is a file", mungkin ada deskriptor file untuk setiap koneksi TCP atau aliran UDP. Jika kernel Unix Anda memiliki batasan jumlah deskriptor file yang dapat dilacak, batas deskriptor file adalah batas buatan pada jumlah koneksi TCP bersamaan atau aliran UDP yang dapat ditangani oleh kernel Anda.
sumber