为什么只有65,535个端口,我们会有更多? [关闭]

Modified on: Wed, 17 Apr 2019 13:40:02 +0800

我理解每个IP地址有65,535个端口背后的原始推理:这是可以用16位或2字节数字表示的最高数字,并且无法想象计算机是否能够为那些像港口这样微不足道的东西,或类似的东西,多余的东西。实际上,每个端口可能需要超过1位,因为每个端口都可以打开,阻塞,“潜行”或其他端口,但由于某些原因,人们总是说端口以16位数运行。如果我有任何错误,请务必告诉我。

然而,在一个大多数计算机都是32位的情况下,并且有足够的内存/空间来备用更多端口,为什么我们仍然拥有这么多端口?我们正在迁移到HTML5,HTTP2.0,IPv6和其他绝对不同的版本,为什么不同端口?其中许多允许超过16位;实际上,IPv6允许16个字节!我知道其中很多都是几年甚至几十年之后,但是为什么所有这些升级的喋喋不休,甚至没有窥探更多的端口(我,一个业余爱好者,听说过)?

我可以看到保留65,535个端口的唯一两个原因是让大企业保留原有的遗留系统,这几乎不是一个好理由,嵌入式系统的兴起,其中许多是微小的,具有微乎其微的空间,内存等等,很快就会上网,很多都是物联网的一部分。使用这些嵌入式系统,也许我们可以让它们拥有更少的端口,当一台大型台式计算机尝试连接到一台时,它可以被告知温和,因为婴儿嵌入式系统只能使用~65,000个端口。

另一方面,我可以想到有一些很好的理由可以拥有更多端口,其中大部分与NAT和其他系统有关,其中超过1个私有IP地址必须使用相同的公共信息与其他Internet通信IP地址,就像VM在同一台计算机上的崛起一样,都使用相同的IP地址。从技术上讲,每个VM IP地址有65,535个端口,但实际上它们都使用主机端口。在这种情况下,这些系统可能会很快耗尽端口。另一个特定情况是运营商级NAT,其中一个公共IP地址被转换为多个私有IP地址,并且这些私有地址中的至少一个被转换为另一组甚至更私有的地址。同样,每个私有IP地址在技术上都有自己的一套65,535个端口,但这是一种幻觉,因为当数据传输到公共Internet时,它们正在使用公共IP的端口。我不确定我们本身是否一定需要NAT,但我们需要类似的东西来保存地址,即使IPv6会给我们带来巨大的数量。当我们遇到这样的情况时,我们甚至可以承受不超过65,535个端口吗?

那么,为什么我们仍然只有65,535个端口,有没有计划允许更多?

P.S。我知道技术上每个IP地址有65,536个端口,但端口0通常不用于任何东西。

作者:,trysis

最佳答案

该端口是正在使用的第4层协议的一部分 - TCPUDP,大部分内容;它与实际计算机的内存寻址无关,因此不要对现代操作系统的32位或64位内存寻址感到困惑。

这些第4层协议的标题包含明确定义的结构,正好16个位用于源端口和目标端口。如果没有对整个互联网所依赖的第4层协议的兼容性破坏性更改,则无法更改端口数。即使较新的SCTP对端口​​也有16位约束。

请记住,这些协议不仅基于接收端口识别流量,还基于接收IP和发送端口以及IP识别流量;您只能使用65535个侦听TCP端口(但是您没有那么多),并且您在特定远程系统上限制为65535个与特定服务的连接(实际上较低,请参阅临时端口),因此除非你有一个系统创建了大量的连接,否则很难遇到这些协议的限制。特定的远程系统。

作者:Shane Madden

相关问答

添加新评论