Mengapa tidak masuk akal untuk mendedikasikan lebih dari satu port TCP / IP ke http? Meskipun memang naif, bukankah itu intuitif untuk berpikir bahwa kinerja server bisa meningkat?
Mengapa tidak masuk akal untuk mendedikasikan lebih dari satu port TCP / IP ke http? Meskipun memang naif, bukankah itu intuitif untuk berpikir bahwa kinerja server bisa meningkat?
Jawaban:
Port 80 adalah port terkenal , yang artinya terkenal sebagai lokasi Anda biasanya akan menemukan server HTTP. Anda dapat menemukannya didokumentasikan dalam HTTP / 1.1 RFC .
Memiliki default berguna justru karena Anda tidak perlu mengetiknya di browser web Anda dengan URI. Jika Anda menjalankan server HTTP (atau bahkan layanan apa pun) pada port non-standar, Anda memaksa klien untuk mengingat nomor 16-bit mana saja yang Anda pilih dan ketik.
Selain ketidaksepakatan ini, tidak ada manfaat kinerja: port hanyalah salah satu bagian dari (dst ip:port, src ip:port)
4-tuple yang secara unik mengidentifikasi koneksi TCP. Jika dua koneksi berbagi a dst ip:port
, itu tidak berarti mereka berbagi beberapa sumber daya sistem - mereka dapat berada di utas yang berbeda, atau proses yang berbeda.
Sekarang, jika Anda memiliki layanan logis yang berbeda yang keduanya terjadi untuk menggunakan HTTP, tidak ada masalah dengan menjalankan mereka pada port yang berbeda. Itu hanya membuat URI sedikit lebih jelek.
Server tidak membuang sumber daya dengan menangani koneksi di satu atau beberapa port. Sumber daya server dialokasikan untuk menangani koneksi, dan nomor port hanyalah cara untuk menghubungkan program tertentu ke koneksi tertentu.
Sebagai contoh: server HTTP tahu bahwa ia akan mendengarkan koneksi yang datang di port 80. Dan server tahu bahwa kapan saja ia menerima beberapa permintaan pada port 80, ia akan menanganinya ke server http. Setelah itu, server http akan menangani komunikasi dan kemudian akan menghabiskan sumber daya.
Anda tampaknya menganggap port sebagai sesuatu yang nyata; itu hanya nomor unsigned 16-bit (0-65535) yang merupakan label di header paket IP. Ini membantu dengan multiplexing tingkat aplikasi. Ketika paket yang masuk tiba di kartu jaringan, OS mendapat pemberitahuan. Ia memeriksa ke port mana paket masuk diarahkan, dan kemudian meneruskan paket hanya ke aplikasi yang tepat. Jika Anda menjalankan server web Anda (nginx) untuk mendengarkan pada port 80, hanya nginx yang menerima paket yang dikirim ke port 80.
Ketika klien (IP: 100.200.100.200) membuat permintaan HTTP ke server (55.55.55.55), mereka membuat permintaan itu ke port tujuan 80 di server (55.55.55.55:80), tetapi port sumber dipilih secara acak oleh OS untuk browser web (sekitar 45490). Respons HTTP dari server web kemudian berasal dari (55.55.55.55:80), tetapi dikirim ke tujuan (IP Anda) (100.200.100.200:454904). OS komputer Anda tahu bahwa paket yang masuk pada port 45490 (mulai 55.55.55.55:80) perlu diberikan ke browser web yang mengajukan permintaan. Karena setiap koneksi unik ke situs web dari klien mendapatkan port acak yang unik, sehingga Anda dapat memiliki beberapa browser web yang terhubung ke situs web yang sama dan ketika sebuah halaman dimuat ulang di satu browser, windows lain tidak terpengaruh.
Setiap paket IP memiliki sumber dan tujuan alamat IP dan port yang tersedia untuknya di header. OS dan aplikasi (browser web atau server web) dapat menggunakan keduanya untuk mengetahui tindakan yang sesuai tentang cara memproses paket.
Port 80 & 443 adalah port "default" untuk HTTP / HTTPS
Ini berarti bahwa Anda tidak perlu menentukan port ( http://www.example.com:80 , https://www.example.com:443 ) saat menggunakan browser web.
Jika Anda ingin server web mendengarkan pada port lain, pengguna harus menambahkan port secara manual ke URL, atau harus dikodekan dalam tautan apa pun ke port tertentu.
Juga, sebagian besar Proxy dan Firewall tidak akan membiarkan koneksi ke port tersebut kecuali jika dikonfigurasikan secara khusus untuk melakukannya (Tanpa konfigurasi, Proxy keluar tidak akan mendengarkan port non-default, maka tidak akan meneruskan permintaan ke server web, sementara Firewall hanya akan memblokir upaya koneksi non-TCP80 / 443)
Semua ini membatasi apa yang dapat dilakukan pada level TCP / IP
Salah satu cara untuk meningkatkan kinerja adalah dengan memiliki alat / layanan penyeimbang beban yang mendengarkan TCP80 / 443 yang kemudian akan mengarahkan permintaan ke server pada port yang berbeda dan / atau ip (Penyeimbangan Lokal) atau bahkan situs jarak jauh yang berbeda (Penyeimbangan Global). Tapi ini adalah topik lain
Menambahkan port tambahan tidak menambah bandwidth ekstra atau semacamnya, port lebih merupakan label daripada pipa , dapat "tumbuh" selebar yang Anda butuhkan tanpa menjadi lebih lambat karena pipa penuh.
Jika server menerima terlalu banyak permintaan, tentu saja server akan melambat, namun ini bukan jenis masalah yang dapat diperbaiki dengan menambahkan nomor port lain.
Jika Anda menggunakan port acak, pengguna harus menambahkan nomor port yang benar setiap kali mereka pergi ke situs Anda. yaitu www.example.com:80; www.example.com:81; www.example.com:82 dll
Itu tidak akan meningkatkan kinerja untuk menggunakan lebih banyak port. Port-port sumber untuk setiap koneksi merupakan porta porte dan sebagainya pula
Setiap koneksi TCP / IP memiliki sourceIP: sourcePort dan destinationIP: destinationPort.
Ketika Anda memulai koneksi, Anda akan selalu menggunakan 80 sebagai port tujuan (yang masuk akal karena Server hanya perlu mendengarkan pada port 80 untuk HTTP dan bukan pada beberapa port). Triknya adalah sourcePort dinamis untuk setiap koneksi.
Contoh:
pengguna1: 1.1.1.1:9999 hingga 2.2.2.2:80
user2: 1.1.1.2:45333 hingga 2.2.2.2:80
Jangan salah mengira port yang berbeda untuk koneksi fisik yang berbeda atau bandwidth jaringan yang lebih tinggi atau kinerja pemrosesan server. Apa yang didapat server adalah paket TCP atau UDP, yang kebetulan memiliki nomor port sebagai bagian dari alamat. Mereka masih datang dengan kabel yang sama, melalui perangkat keras dan driver antarmuka jaringan yang sama, dan sebagainya.
Jika Anda mengirim dua paket ke server, dalam hal sumber daya yang dikeluarkan server untuk memproses dua paket ini, tidak masalah jika salah satu dari keduanya memiliki nomor port yang berbeda atau nomor port yang sama yang terkait dengannya, penanganan internal akan dekat dengan identik.
Karena itu, ini bukan metode untuk meningkatkan kinerja dengan cara apa pun.
Satu-satunya pengecualian yang mungkin untuk ini adalah jika Anda mengaitkan dua setan yang berbeda (atau dua salinan dari yang sama) berjalan pada waktu yang sama ke dua nomor port yang berbeda, dan jika masing-masing setan ini akan naik skala sangat buruk dengan beban. Yang biasanya tidak demikian.
Seperti yang disebutkan Remi, Port 80 & 443 adalah port "default" untuk HTTP / HTTPS.
Sebagian besar jaringan dan firewall tidak memblokir lalu lintas melalui port ini. Jadi menggunakan port ini lebih mudah karena sebagian besar waktu Anda mungkin tidak perlu khawatir tentang firewall memblokir layanan Anda, Anda mungkin harus melalui konfigurasi ulang aturan firewall dan mendapatkan persetujuan dari kepatuhan / keamanan untuk hal yang sama.
Seperti yang dikatakan semua orang di sini, pada dasarnya tidak ada gunanya meng-host server web pada port apa pun selain port 80 ... kecuali Anda hosting dari rumah. Banyak ISP membatasi port TCP / UDP 80 dan 443 outbound ( masing-masing IANA didefinisikan sebagai HTTP dan HTTPS ), dan dalam hal ini, menggunakan port tersebut akan mengurangi kecepatan pemuatan situs, dll. Namun, IANA telah menetapkan 3 port HTTP-ALT untuk baik TCP dan UDP. Ini adalah: 591, 8008 dan 8080. Menggunakan port-port ini juga dapat diterima, tetapi Anda akan membuat kehidupan admin server menjadi gila.
Sumber nomor port: https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml