Neden web servisleri için sadece port 80?


54

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?


17
Kesinlikle haklısın. Web sunucularımın varsayılan bağlantı noktasını 80'den 90,91,92 ve 93'e değiştirdim. Sunucudaki yük ciddi şekilde düştü.
David Houde

17
... belki de hiçbir müşteri artık sunucuyu bulamadığı için?
Marcos Gonzalez,

5
80 sadece http için kullanılan porttur. "Bir şey.com" derken; (veya hatta "something.com") tarayıcı, "something.com:80" için bir istek olmasını tamamlar; (varsayılan iyi bilinen http bağlantı noktası olduğu için 80 numaralı bağlantı noktasında). 443'te https için de aynı. Değiştirmeye karar verirseniz, URL’de söylemeniz gerekir: "myserver.com:1280"; aksi takdirde tarayıcı 80 numaralı bağlantı noktasını deneyecek ve bulamayacaktır. Wikipedia'da
Olivier Dulac

6
Üzgünüm Marcos, mizah için kötü bir girişimdi. Bu konuda hiç iyi olmadım.
David Houde

3
@DavidHoude, sizin için ifadeleri tazeleme zamanı. :-) cs.cmu.edu/~sef/sefSmiley.htm
generalnetworkerror

Yanıtlar:


70

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.


7
Bu kadar! Port 80 bir kaynak değil! Bu sadece bir demet parçası! Açıkça belirttiğin için teşekkürler.
Marcos Gonzalez

2
Ayrıca, farklı servisler için bile, gerçek HTTP bağlantısının genellikle ilk protokol analizini yapan ve ardından doğru hizmete aktaran, böylece farklı işlemlerde tamamen farklı servislere izin veren sistem çapında bir sürücü tarafından 80 numaralı bağlantı noktasında alınmasının hiçbir önemi yoktur. aynı limanı paylaş.
Monstieur,

1
Kullanışlı cevabı Useless
Deckard

26

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.


8
Bu cevaba, 80 nolu bağlantı noktasının isteğini gönderen bir kullanıcı tarafından tüketilmediğini de eklerdim. Bu nedenle, yalnızca 80 numaralı bağlantı noktasını (veya baktığınız protokol için iyi bilinen bir bağlantı noktasını kullanarak) ölçeklenebilirlik için bir darboğaz bulunmaz.
Craig Sirkin,

1
Bu tam olarak anlamadığım şeydi. Www.example.com:80’e aynı anda bağlanan 100.000 kullanıcı bile 80 numaralı bağlantı noktasını tüketmeyecek. Açıklama için teşekkür ederiz. Aşağıda “Yararsız” bilgisini aşağıda çok aydınlatıcı buluyorum.
Marcos Gonzalez

Bazı web sunucusu yazılımlarının örnek ve / veya işlem başına Sınırı vardır. Bazen birden fazla örnek çalıştırmak iyi bir fikir olabilir, ancak bunu aynı makinede yapmak başka bir dinleme portu gerektirir; ilk (TCP80 / 443) ilk örneğe bağlantı iletiyor.
Remi Letourneau

22

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.


2
+2 oy yapabilseydim.
generalnetworkerror

13

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.


Beni “yük dengeleme” kavramına dahil ettiğiniz için teşekkür ederiz.
Marcos Gonzalez

1
Eğer bazı "takma" uygulamaları ve bazı yük dengeleme konseptleri hakkında fikir sahibi olmak istiyorsanız, F5 üniversitede bir kaç ücretsiz çevrimiçi eğitime sahiptir. ) nasıl göründüğünü görebileceğiniz ve bazı yük dengeleme kavramlarını öğrenebileceğiniz (örneğin: Gerçek IP, Sanal IP, Havuzlar, sağlık kontrolü, vb ...)
Remi Letourneau

Güzel bir tavsiye!
Marcos Gonzalez

9

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.


s / label, sonra / label 'dan /' dan daha çok düzenleme yapardım, ancak yalnızca bir karakter kabul edilebilir bir düzenleme değildir.
Paul Gear,

7

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ı


7

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


2

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.


1

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.


1
Amin, standart olmayan bağlantı noktalarını kullanarak web siteleri herhangi bir güvenlik yöneticisinin varlığının felaketi, sizin nedwork üzerinde bir kullanıcı garip liman = vekil değişim, FW değişim, güvenlik inceleme vb bir web sitesi kullanması gerekir vardır
wintermute000

0

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.