IPv4允许的最大TCP / IP网络端口号是多少?


Answers:


565

端口号是一个无符号的16位整数,即65535。


216
“嘿,吉姆,我们应该支持多少个港口?” “只要做好准备,就将其设置为16位即可。顶部,没有人一次可以打开几百个。”
JessieArr 2014年

3
@barlop我建议他们最初创建端口时,一台具有数百个连接的计算机可能被认为是最坏的情况。但是如今,Web服务器,网络设备等绝对可以克服端口数限制。微软撰写了一篇有趣的Technet文章,内容涉及如何在Windows环境中进行诊断和避免它:blogs.technet.microsoft.com/askds/2008/10/29/…–
JessieArr

3
在这两种情况下,@ JessieArr并不是一个真正的65536问题,而是一个问题:A)程序未释放连接,使它们处于“等待”状态,netstat显示与B结合使用)某些早期的Windows版本仅从1024-5000开始运行即使到那时,谁也知道那件事是否曾发生过,因为没有程序曾向任何人报告无法获得动态端口,也没有Windows。所以这是一个理论上的问题,甚至不是由65536号。Web浏览器可能是连接的最大用户。我的netstat输出中有297行。远离65K
barlop

3
@JessieArr大多数IP堆栈使用源IP地址,源端口,目标IP地址和目标端口的元组作为连接的唯一标识符。这意味着,一台服务器可以有很多很多活动的连接比可用的开放端口和端口的数量仅在单一源和单一目的地间的连接量放置的限制(尽管是一个非常大的一个)。我认为没有人会在任何时候在超过65536个端口上运行服务器(或侦听连接)。
jduncanator

41
@JessieArr-这将教您尝试开个玩笑,这是一件严肃的事,您知道这没时间了:/
马特

145

最大的端口号是无符号短2 ^ 16-1:65535

注册端口是由互联网名称与数字地址分配机构(ICANN)分配给特定用途的端口。每个注册端口的范围为1024–49151。

自2001年3月21日起,注册机构为ICANN;在那之前是IANA。

编号小于注册端口号的端口称为众所周知的端口;端口号大于已注册端口号的端口称为动态端口和/或专用端口。

维基百科:注册端口


71

据我了解,您最多只能使用49151,因为从49152到65535是为临时端口保留的


11
临时端口范围因系统而异。我正在运行具有3.19.0-43-通用内核的ubuntu linux。$ cat /proc/sys/net/ipv4/ip_local_port_range结果输出 32768 61000。至于是否应该在系统的临时端口范围内使用端口,我怀疑大多数(如果不是全部)现代网络操作系统都将跳过已经使用的端口。
基思·雷诺兹

37

只是smashery答案的后续工作。临时端口范围(至少在Linux上,并且我怀疑其他Unices也是如此)不是固定的。可以通过写到 /proc/sys/net/ipv4/ip_local_port_range

唯一的限制(就IANA而言)是将1024以下的端口指定为众所周知的端口。上面的端口可以免费使用。通常,您会发现低于1024的端口仅限于超级用户访问,因此我相信。


15

根据RFC 793,端口是16位无符号整数。

这表示范围是0-65535。

但是,在该范围内,端口0-1023通常保留用于特定目的。我之所以这么说是因为,除了端口0外,通常不会执行0-1023保留。TCP / UDP 实现通常不强制使用0以外的保留。如果需要,可以在端口80或25或65535而不是标准443上运行Web服务器的TLS端口。同样,即使是SMTP服务器在端口25上侦听的标准,您可以在80、443或其他端口上运行它。

大多数实现将 0保留用于特定目的-随机端口分配。因此,在大多数实现中,说“侦听端口0”实际上意味着“我不在乎我使用哪个端口,只需给我一些随机的未分配端口即可监听”。

因此,使用0-65535范围内的端口(包括0,临时保留范围等)的任何限制都是特定于实现(即OS /驱动程序)的,但是所有包括0的端口都是RFC 793中的有效端口。



11

端口的有效数字为:0到2 ^ 16-1 = 0到65535,
这是因为端口号是16位长。

但是,端口分为:
知名端口:0到1023(用于系统服务,例如HTTP,FTP,SSH,DHCP等)
注册/用户端口:1024到49151(您可以将其用于服务器,但可以小心一些著名的应用程序:Microsoft SQL Server数据库管理系统(MSSQL)服务器或Apache Derby Network Server等已经在该范围内,即不建议将MSSQL端口分配给您的服务器,否则,如果MSSQL正在运行,则您的服务器最可能由于端口冲突而无法运行)
动态/专用端口:49152至65535。(不用于服务器,而不是用于客户端,例如在NATing服务中)

在编程时,您可以为服务器使用0到65535之间的任何数字,但是您应遵循上述范围,否则某些系统服务或某些应用程序将由于端口冲突而无法运行。
在此处检查大多数端口的列表:https : //en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers


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.