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


20

我了解每个IP地址具有65,535个端口的背后的原始原因:这是可以由16位或2字节数字表示的最高数字,并且无法想象计算机能够再保留更多的空间而不是像端口之类的琐事或类似的东西。实际上,每个端口可能需要超过1位,因为每个端口都可以打开,阻塞,“隐身”或其他,但是出于某些原因,人们总是说端口以16位数字运行。如果我有任何此错误的部分,一定要告诉我。

但是,在当今大多数计算机都是32位且具有足够的内存/空间可用来容纳更多端口的世界中,为什么我们仍然有这么多端口?我们正在过渡到HTML5,HTTP2.0,IPv6和其他绝对不同的版本,那么为什么端口不一样?其中许多允许超过16位。实际上,IPv6允许16 个字节!我知道其中许多距离还需要数年甚至数十年,但是为什么所有这些升级问题都the之以鼻,而不是窥视更多的端口(我,一个业余爱好者已经听说过)?

我看到保留65,535个端口的唯一两个原因是让大企业保留其旧的旧系统,这并不是一个好理由,而嵌入式系统的兴起(其中许多系统很小,占用的空间,内存等却很少)。很快就进入了互联网,其中许多是物联网的一部分。使用这些嵌入式系统,也许我们可以让它们具有更少的端口,并且当一台大型台式计算机尝试连接一个端口时,由于婴儿嵌入式系统只能使用约65,000个端口,因此可以说它很温和。

另一方面,我可以想到一些充分的理由来拥有更多的端口,其中大部分与NAT和其他系统有关,在这些系统中,不止一个私有IP地址必须使用相同的公共IP地址与Internet的其余部分进行通信,例如虚拟机在同一台计算机上的兴起,它们都使用相同的IP地址。从技术上讲,每个VM IP地址都有65,535个端口,但实际上它们都使用主机的端口。在这种情况下,这些系统可能会很快耗尽端口。另一特定情况是运营商级NAT,其中一个公用IP地址被转换为几个专用IP地址,而这些专用地址中的至少一个被转换为另一组甚至更多的专用地址。同样,每个私有IP地址从技术上来说都有自己的65,535个端口集,但这只是一种幻想,当数据发送到公共Internet时,它们正在使用公共IP的端口。我不确定我们本身是否一定需要NAT,但是即使IPv6会给我们带来大量费用,我们也需要类似的东西来保存地址。当我们遇到这样的情况时,我们能负担不起不超过65,535个端口的费用吗?

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

PS我知道每个IP地址在技术上有65,536个端口,但是端口0通常不用于任何用途。


我认为您需要问IANA这些问题,它们控制着资源。我认为您也需要阅读TCP / IP指南,因为您的某些理解似乎有缺陷。
user9517支持GoFundMonica 2014年

1
是的,我想。我尽我所能说出了很多话,但是如您所见,我并不了解所有内容。
trysis

7
这个问题有什么题外话?就是想。
trysis

1
我也放弃了在这些站点中提问。这些天似乎一切
都没那么好

IPv6通过为计算机提供/ 64地址供使用,从而限制了端口的限制。
J.Money

Answers:


28

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

这些第4层协议的标头具有专门定义的结构,对于这些结构,恰好16位用于源端口和目标端口。如果不破坏整个Internet依赖的第4层协议的兼容性,就不能更改端口数。甚至较新的SCTP在端口上也具有16位限制。

请记住,这些协议不仅根据接收端口识别流量,而且还根据接收IP以及发送端口和IP识别流量。您只能使用65535个侦听TCP端口(但是数量不多),并且只能使用65535个连接到特定远程系统上的特定服务(实际上是较低的,请参阅临时端口),因此并不常见除非您的系统创建了到特定远程系统的大量连接,否则这些协议将受到限制。


3
它总是归结为向后兼容,不是吗?为什么我们可以更改为IPv6,IPv6允许使用这么多的IP地址,这很荒谬,但是我们不能再有几个端口?那是我主要的烦恼。
trysis

2
@trysis正确-从IPv4过渡到IPv6与将TCP标头和UDP标头包含在端口头中的更多位进行比较。而且,如果您没有注意到,那么将全球IPv6部署到现在的位置(使用全球1-2%的流量)是一个缓慢而痛苦的过程。对于IPv4,迫切需要采取行动-地址耗尽。另一方面,在这些协议上用尽端口空间不是一个普遍的问题,因此,没有必要进行必要的大规模更改来实现它。
Shane Madden

哦,这更有意义。谢谢。也许有一天我们会感到需要,但我想您是对的,因为现在不存在这种需求。
trysis

我希望,如果遇到所有麻烦,我们可以提出比基于整数的端口寻址更好的方法。诸如基于UUID的端口之类的东西会很棒。否则,实际的名称空间将更具描述性,并消除了应用程序之间发生冲突的可能性。想象一下为“ com.windows.local.yourdomain.server001”名称空间或类似名称设置端口转发。
njbair

因此,如果两台PC一起建立了65,535个连接或与NAT之外的其他PC相似,则其他PC将无法访问itnernet。我对么?
丹尼斯(Denis)2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.