TCP允许的端口范围

10

1
TCP客户端中,1024以上的所有端口都被视为正常。如果您需要在维基百科页面上查看条目才能将其视为“可接受”的TCP端口,则您考虑得太多了。所有小于等于1024的TCP端口都适用于客户端套接字源端口。 - Mike Pennington
1个回答

20

如果您将端口绑定到0,则操作系统将选择一个有效且未被使用的端口。

如果您需要随机而不是任意的端口,49152-65535中的任何端口都应该安全地用于自动使用,因此只需在该范围内选择一个随机数字。(但如果该端口已被使用,则可能需要重试。)


那么该范围内的任何端口都支持TCP吗?因为从维基页面上看,有些端口仅标记为UDP。另外,我如何在Java中检查端口是否正在使用?谢谢! - Mike G
1
所有从1-65535的端口都支持TCP,该页面列出的TCP/UDP是指注册端口;也就是说,这些端口被分配给特定的用途。通常检查端口是否正在使用只需要尝试绑定它,如果返回有关端口正在使用的错误,则表示正在使用。如果无论得到哪个端口都可以,那么应该绑定端口0,然后从新套接字获取本地端口以找出你得到了什么。 - Eric
2
稍微详细解释一下,当你的本地服务器绑定到特定端口时,UDP和TCP位于不同的“命名空间”,因此是独立的。同时使用双方通常会为两者打开相同的端口号。连接是由协议、本地地址、本地端口、远程地址、远程端口构成的五元组来定义的,这就解释了为什么你不会遇到交叉对话等问题。 - Brian White

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接