Answers:
端口号是一个无符号的16位整数,即65535。
根据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中的有效端口。
端口的有效数字为: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