Birden fazla TCP / IP portunu http'ye ayırmak neden mantıklı değil? Kuşkusuz saf olmasına rağmen, sunucu performansının bir şekilde artırılabileceğini düşünmek bir şekilde sezgisel değil mi?
Birden fazla TCP / IP portunu http'ye ayırmak neden mantıklı değil? Kuşkusuz saf olmasına rağmen, sunucu performansının bir şekilde artırılabileceğini düşünmek bir şekilde sezgisel değil mi?
Yanıtlar:
Bağlantı Noktası 80, iyi bilinen bir bağlantı noktasıdır, yani normalde HTTP sunucularını bulacağınız konum olarak bilinir. HTTP / 1.1 RFC'de belgeli olarak bulabilirsiniz .
Varsayılan değere sahip olmanız kesin olarak yararlıdır çünkü URI ile web tarayıcınıza girmeniz gerekmez. Standart olmayan bir bağlantı noktasında bir HTTP sunucusu (ya da aslında herhangi bir hizmeti) çalıştırırsanız, istemciyi hangi rasgele seçeceğiniz 16 bitlik sayıyı hatırlamaya ve girmeye zorlarsınız.
Bu dostluğa ek olarak, performans avantajı yoktur: bir port, (dst ip:port, src ip:port)
benzersiz bir TCP bağlantısını tanımlayan 4- parçanın sadece bir kısmıdır . İki bağlantı bir a paylaşıyorsa dst ip:port
, bu bazı sistem kaynaklarını paylaştığı anlamına gelmez - farklı iş parçacıklarında veya farklı işlemlerde bulunabilirler.
Her iki mantıksal olarak farklı hizmetler varsa Şimdi, ne HTTP kullanmak, orada hiçbir sorun farklı bağlantı noktalarında bunları çalışan. Bu sadece URI biraz çirkin yapar.
Sunucu, bir veya daha fazla bağlantı noktasındaki bağlantıları ele alarak kaynakları israf etmez. Sunucu kaynakları bağlantıları işlemek için tahsis edilmiştir ve port numarası belirli bir programı belirli bir bağlantıya bağlamanın bir yoludur.
Örneğin: HTTP sunucusu, 80 numaralı bağlantı noktasından gelen bağlantıları dinleyeceğini bilir. 80 numaralı bağlantı noktasından bir istek aldığında, sunucunun http sunucusuna işleyeceğini bilir. Bundan sonra, http sunucusu iletişimi idare edecek ve sonra kaynakları tüketecektir.
Limanları gerçek bir şey olarak görüyorsunuz; IP paketinin başlığında bir etiket olan 16 bitlik işaretsiz bir numaradır (0-65535). Bu, uygulama düzeyinde çoğullama ile yardımcı olur. Gelen bir paket bir ağ kartına ulaştığında, işletim sistemi bir bildirim alır. Gelen paketin hangi bağlantı noktasına yönlendirildiğini kontrol eder ve ardından paketi yalnızca doğru uygulamaya iletir. Web sunucunuzu (nginx) 80 numaralı bağlantı noktasını dinlemek için çalıştırıyorsanız, yalnızca nginx 80 numaralı bağlantı noktasına gönderilen paketleri alır.
Bir istemci (IP: 100.200.100.200) sunucuya bir HTTP isteği yaptığında (55.55.55.55), bu isteği sunucudaki 80 numaralı hedef bağlantı noktasına (55.55.55.55:80) yapar, ancak kaynak bağlantı noktası rasgele tarafından seçilir. Web tarayıcısı için işletim sistemi (45490 gibi bir şey). Web sunucusundan gelen HTTP yanıtı daha sonra (55.55.55.55:80) 'den gelir, ancak varış yerine (IP'niz) gönderilir (100.200.100.200:45490). Bilgisayarınızın işletim sistemi, 45490 portundaki gelen paketlerin (55.55.55.55:80'den itibaren) isteği yapan web tarayıcısına verilmesi gerektiğini bilir. İstemciden bir web sitesine yapılan her benzersiz bağlantı benzersiz bir rasgele bağlantı noktası aldığından, aynı web sitesine bağlanan birden çok web tarayıcınız olabilir ve bir sayfa bir tarayıcıya yeniden yüklendiğinde diğer pencereler etkilenmez.
Her IP paketinde hem kaynak hem de hedef IP adresleri ve başlıkta mevcut olan portlar bulunur. İşletim sistemi ve uygulama (web tarayıcısı veya web sunucusu), paketin nasıl işleneceğine ilişkin uygun eylemi bulmak için her ikisini de kullanabilir.
80 ve 443 numaralı bağlantı noktaları HTTP / HTTPS için "varsayılan" bağlantı noktalarıdır.
Bu , bir web tarayıcısı kullanırken bağlantı noktasını ( http://www.example.com:80 , https://www.example.com:443 ) belirtmeniz gerekmediği anlamına gelir .
Başka bir bağlantı noktasını dinleyen bir web sunucusuna sahip olmak istiyorsanız, kullanıcıların bağlantı noktasını manuel olarak URL'ye eklemeleri gerekir veya bu bağlantı noktasına ait herhangi bir bağlantıda kodlanması gerekir.
Ayrıca, çoğu Proxy ve Güvenlik Duvarı, özel olarak yapılandırılmadıkça, bu bağlantı noktalarına bağlantılara izin vermez (Yapılandırma olmadan, Giden proxy'ler varsayılan olmayan bağlantı noktalarını dinlemeyecek, bu nedenle isteği web sunucularına iletmeyecektir; TCP80 / 443 bağlantı girişimlerini engelleme)
Bütün bu sınırlar TCP / IP seviyesinde neler yapılabileceğini
Performansı artırmanın bir yolu, TCP80 / 443'ü dinleyen bir yük dengeleme cihazına / hizmetine sahip olmaktır; bu, talebi farklı portlardaki ve / veya ip (Yerel Dengeleme) veya hatta farklı uzaktaki sitelerdeki (Global Dengeleme) sunuculara yönlendirecektir. Fakat bu tamamen bir başka konu.
Ekstra bağlantı noktaları eklemek, fazladan bant genişliği veya buna benzer bir şey eklemez, bir bağlantı noktası bir borudan çok bir etikettir , borunun dolu olması nedeniyle yavaşlamadan, ihtiyaç duyduğunuz kadar "büyüyebilir".
Bir sunucu çok fazla istek alırsa, sunucu elbette yavaşlar, ancak bu başka bir bağlantı noktası numarası ekleyerek giderilebilecek bir sorun değildir.
Rasgele bağlantı noktaları kullandıysanız, kullanıcının sitenize her girişinde doğru bağlantı noktası numaralarını eklemesi gerekir. yani, www.example.com:80; www.example.com:81; www.ornek.com.tr:82 vb
Daha fazla port kullanmak performansı arttırmaz. Her bağlantı için kaynak bağlantı noktaları geçici bağlantı noktaları ve yine de çok farklı
Her TCP / IP bağlantısının bir sourceIP: sourcePort ve bir destinationIP: destinationPort vardır.
Bir bağlantı başlattığınızda, her zaman 80'i hedef bağlantı noktası olarak kullanırsınız (bu, Sunucunun yalnızca HTTP için 80 bağlantı noktasını dinlemesi gerekir, birkaç bağlantı noktasında değil) kullanması gerekir. İşin püf noktası sourcePort'un her bağlantı için dinamik olmasıdır.
Örnek:
kullanıcı1: 1.1.1.1:29999 - 2.2.2.2:80
kullanıcı2: 1.1.1.2:45333 - 2.2.2.2:80
Farklı bir fiziksel bağlantı veya daha yüksek bir ağ bant genişliği veya sunucu işleme performansı için farklı bir bağlantı noktasını yanlışlamayın. Sunucunun aldığı adresin bir parçası olarak port numarasına sahip olan TCP veya UDP paketleridir. Hala aynı telleri geçiyorlar, aynı ağ arayüzü donanım ve sürücüsünden geçiyorlar vb.
Bir sunucuya iki paket gönderecekseniz, kaynaklar açısından, sunucu bu iki paketi işlemeye harcarsa, ikisinden birinin farklı bağlantı noktası numaralarına veya bunlarla ilişkili aynı bağlantı noktası numaralarına sahip olması önemli değildir. aynı olmak.
Bu nedenle, bu performansı hiçbir şekilde arttırmanın bir yöntemi değildir.
Bunun tek istisnası, aynı anda çalışan iki farklı şeytanı (veya aynı iki kopyasını) aynı anda iki farklı liman numarasına ilişkilendirmek olsaydı ve bu şeytanların her biri yükle aşırı derecede kötüleşirse. Genelde durum böyle değil.
Remi'nin dediği gibi, Port 80 & 443, HTTP / HTTPS için "varsayılan" portlardır.
Çoğu ağ ve güvenlik duvarı bu portlardan geçen trafiği engellemez. Bu yüzden, bu portları kullanmak daha kolaydır çünkü çoğu zaman hizmetinizi engelleyen güvenlik duvarları için endişelenmenize gerek kalmayabilir; güvenlik duvarı kurallarının yeniden yapılandırılması ve bunun için uyumluluk / güvenlik onayları alınması gerekir.
Buradaki herkesin dediği gibi, evden barındırmıyorsanız, bir web sunucusunu 80 numaralı bağlantı noktası dışındaki herhangi bir bağlantı noktasında barındırmak anlamsız. Birçok ISP kısma giden TCP / UDP bağlantı noktaları 80 ve 443 ( IANA olarak tanımlar , HTTP ve HTTPS sırasıyla), ve bu durumda, bu bağlantı noktalarını kullanarak Ancak, vb Alanı yükleme hızı, olumsuz etkisi olur IANA 3 atanmış HTTP ALT için bağlantı noktaları hem TCP hem de UDP. Bunlar: 591, 8008 ve 8080. Bu bağlantı noktalarını kullanmak da kabul edilebilir, ancak sunucu yöneticilerinin ömrünü cehenneme çevireceksiniz.
Liman numaralarının kaynağı: https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml