为什么将多个TCP / IP端口专用于http为什么不明智?尽管公认很幼稚,但认为可以以某种方式提高服务器性能不是很直观吗?

评论

你是绝对正确的。我将Web服务器的默认端口从80更改为90,91,92&93。服务器上的负载已急剧下降。

...也许是因为没有客户端可以再找到该服务器?

80只是用于http的端口。当您说“ something.com”时; (或什至是“ something.com”)浏览器将其完成后作为对“ something.com:80”的请求; (在端口80上,因为它是默认的知名http端口)。与443上的https相同。如果决定更改它,则必须在URL中说出来:“ myserver.com:1280”;否则,浏览器将尝试在端口80上找到该端口。列表可以在Wikipedia上看到

对不起,马可斯,那是幽默的拙劣尝试。我从来都不擅长。

@DavidHoude,该为您复习表情符号了。 :-) cs.cmu.edu/~sef/sefSmiley.htm

#1 楼

端口80是一个众所周知的端口,这意味着它通常是通常会找到HTTP服务器的位置。您可以在HTTP / 1.1 RFC中找到它的文档。

具有默认设置非常有用,因为您不必使用URI在Web浏览器中键入它。
如果运行非标准端口上的HTTP服务器(或实际上是任何服务),您会强制客户端记住您选择的任意16位数字并输入。

除了这种不友好之外,没有性能优势:端口只是(dst ip:port, src ip:port) 4元组的一部分,它唯一地标识TCP连接。如果两个连接共享一个dst ip:port,这并不意味着它们共享某些系统资源-它们可以驻留在不同的线程或不同的进程中。 HTTP,在不同端口上运行它们没有问题。它只是使URI有点难看。

评论


而已!端口80不是资源!这只是元组的一部分!谢谢您说得这么清楚。

–马科斯·冈萨雷斯(Marcos Gonzalez)
2013年6月20日17:03



即使对于不同的服务,也没有任何价值,实际的HTTP连接通常是由系统范围的驱动程序在端口80上接收的,该驱动程序执行初始协议分析,然后将其交给正确的服务,从而允许不同进程中的完全不同的服务共享同一端口。

–先生
2013年6月21日7:04



无用的有用答案

–戴卡德
15年8月13日在2:13

#2 楼

服务器不会通过处理一个或多个端口中的连接来浪费资源。服务器资源被分配用于处理连接,端口号只是将特定程序连接到特定连接的一种方式。

例如:HTTP服务器知道他会监听即将出现的连接在端口80中。服务器知道,只要他在端口80上收到一些请求,便会将其处理到http服务器。之后,http服务器将处理通信,然后消耗资源。

评论


我要在此答案中添加一个端口80,该端口不会被发送请求的用户占用。这就是为什么仅使用端口80(或您正在查看的传入协议的任何知名端口)都不会成为可伸缩性的瓶颈的原因。

–克雷格·西金(Craig Sirkin)
13年6月20日在16:47

这正是我不太了解的内容。即使同时连接到www.example.com:80的100,000个用户也不会占用端口80。感谢您的澄清。我发现下面的@Useless'信息也很有启发性。

–马科斯·冈萨雷斯(Marcos Gonzalez)
13年6月20日在17:01



某些Web服务器软件对每个实例和/或过程都有限制。有时,运行多个实例是一个好主意,但是在同一台计算机上执行此操作需要另一个侦听端口,第一个(TCP80 / 443)正在将连接转发到第一个实例。

– Remi Letourneau
13年6月20日在17:21

#3 楼

您似乎认为端口是真实的东西;它只是一个16位无符号数字(0-65535),它是IP数据包标头中的标签。这有助于应用程序级多路复用。当传入的数据包到达网卡时,操作系统会收到通知。它检查传入数据包定向到哪个端口,然后将数据包仅转发到正确的应用程序。如果您正在运行Web服务器(nginx)以侦听端口80,则只有nginx会将数据包发送到端口80。

当客户端(IP:100.200.100.200)向服务器(55.55)发出HTTP请求时.55.55),它们向服务器上的目标端口80发出请求(55.55.55.55:80),但是操作系统为Web浏览器随机选择了源端口(类似45490)。然后,来自Web服务器的HTTP响应来自(55.55.55.55:80),但发送到目标(您的IP)(100.200.100.200:45490)。您计算机的操作系统知道需要将端口45490(来自55.55.55.55:80)上的传入数据包提供给发出请求的Web浏览器。由于从客户端到网站的每个唯一连接都会获得一个唯一的随机端口,因此您可以有多个Web浏览器连接到同一网站,并且当在一个浏览器中重新加载页面时,其他窗口不会受到影响。

每个IP数据包在标头中都具有可用的源IP地址和目标IP地址以及端口。操作系统和应用程序(Web浏览器或Web服务器)可以同时使用两者来确定有关如何处理数据包的适当操作。

评论


如果可以的话,+ 2票。

–generalnetworkerror
13年6月21日在6:14

#4 楼

端口80和443是HTTP / HTTPS的“默认”端口。这意味着您不必指定端口(http://www.example.com:80,https:// www.example.com:443)使用网络浏览器时。

如果要让网络服务器监听其他端口,则用户必须手动将端口添加到URL中,或者可以在指向该特定端口的任何链接中进行编码。非默认端口,因此不会将请求转发到Web服务器,而防火墙只会阻止非TCP80 / 443连接尝试)

所有这些限制可以在TCP / IP级别上完成

提高性能的一种方法是让负载平衡设备/服务侦听TCP80 / 443,然后将请求重定向到不同端口和/或ip(本地平衡)或e上的服务器。或不同的远程站点(全球平衡)。但这是另一个话题

评论


感谢您向我介绍“负载平衡”的概念。

–马科斯·冈萨雷斯(Marcos Gonzalez)
13年6月20日在17:42

如果您想对某些负载平衡概念有一些“伪”的动手和想法,F5在university.f5.com上提供了一些免费的在线培训。注册是免费的,它使您可以访问LTM(本地流量管理器-他们的本地平衡器) )培训,您可以在其中看到外观并了解一些负载平衡概念(例如:真实IP,虚拟IP,池,运行状况检查等)。

– Remi Letourneau
13年6月20日在18:08

很好的建议!

–马科斯·冈萨雷斯(Marcos Gonzalez)
2013年6月20日19:16

#5 楼

添加额外的端口不会增加额外的带宽或类似的内容,端口更多的是标签而不是管道,它可以“增长”到所需的宽度,而不会因管道已满而变慢。

如果服务器收到太多请求,则服务器当然会变慢,但这不是可以通过添加其他端口号来解决的问题。

评论


s / label then / label than /-我会编辑,但似乎只有一个字符是不可接受的编辑。

– Paul Gear
2013年6月22日21:50

#6 楼

如果您使用随机端口,则用户每次访问您的站点时都必须添加正确的端口号。即www.example.com:80; www.example.com:81; www.example.com:82等

使用更多端口不会提高性能。每个连接的源端口都是短暂端口,因此仍然有所不同

#7 楼

每个TCP / IP连接都有一个sourceIP:sourcePort和一个destinationIP:destinationPort。

启动连接时,始终将80用作目标端口(这很有意义,因为服务器只需要侦听在HTTP的端口80上,而不是在多个端口上)。诀窍在于,每个连接的sourcePort都是动态的。 > user2:1.1.1.2:45333至2.2.2.2:80

#8 楼

不要将其他端口误认为是不同的物理连接,更高的网络带宽或服务器处理性能。服务器得到的是TCP或UDP数据包,它们恰好具有端口号作为地址的一部分。它们仍然通过同一根导线,通过相同的网络接口硬件和驱动程序,依此类推。这两个数据包无关紧要,无论这两个数据包之一具有不同的端口号或与之关联的相同端口号,内部处理将接近相同。

因此,这不是一种方法以任何方式提高性能。

唯一可能的例外是,如果要将同时运行的两个不同的恶魔(或两个相同的副本)关联到两个不同的端口号,如果这些恶魔中的每一个都将因负载而严重扩展。通常情况并非如此。

#9 楼

如Remi所述,端口80和443是HTTP / HTTPS的“默认”端口。

大多数网络和防火墙都不会阻止通过此端口的流量。因此,使用此端口更加容易,因为大多数时候您可能不必担心防火墙会阻止服务,否则您可能需要重新配置防火墙规则并获得法规遵从性/安全性的批准。

评论


嗯,使用非标准端口的网站是任何安全管理员存在的祸根,您网络工作中的一位用户需要使用一个端口奇怪的网站,即代理服务器更改,固件更改,安全审查等。

– wintermute000
2013年6月22日12:45



#10 楼

正如这里其他人所说的那样,在端口80以外的任何端口上托管Web服务器基本上是没有意义的,除非您是在家中托管它。许多ISP限制出站TCP / UDP端口80和443(IANA分别定义为HTTP和HTTPS),在这种情况下,使用这些端口会降低站点加载速度,等等。但是,IANA分配了3个HTTP-ALT端口用于TCP和UDP。它们分别是:591、8008和8080。使用这些端口也是可以接受的,但是您将使服务器管理员的生活变得更加艰辛。

端口号来源:https://www.iana.org /assignments/service-names-port-numbers/service-names-port-numbers.xhtml