客户端使用高端口号

时间:2010-02-20 04:43:51

标签: networking sockets network-programming client-server ports

为什么客户端结束连接 使用高端口号(临时端口)而应用程序 听一般的小端口号码?

先知, Karthik Balaguru

5 个答案:

答案 0 :(得分:10)

服务器侦听固定端口号,以便客户端知道连接的位置。客户端不需要使用固定端口号,因为没有人启动与它们的连接,并且实际上如果在同一台机器上运行多个客户端(例如Web浏览器),则它们不能使用固定端口号连接到同一台服务器。范围为0..49151的IANA has designated端口为特定服务的固定端口号,49152..65535范围内的端口为未分配给任何服务的动态(临时)端口,可在固定时使用端口号不是必需的。

端口范围0..49151进一步划分为众所周知的范围0..1023,只有特权进程才能绑定(至少在Unix / Linux上),并且< em>已注册范围1024..49151。服务器进程可以使用1024..49151范围内的端口,这些服务器进程可以作为非特权用户运行,如果服务器没有使用它们,客户端也可以使用此范围内的端口(例如Linux上的动态端口) Solaris默认情况下从32768开始,而不是49152。

答案 1 :(得分:3)

1024以下的端口号称为“已注册”,而上述值(限制为65,535)称为“未注册”。所有这两个术语的意思是1024以下的端口具有与之关联的标准服务。 IE:53用于DNS,80用于HTTP,25用于SMTP等。注意它们是关联的 - 没有什么可以阻止您将应用程序设置为使用端口53,25等,但不建议这样做,因为其他服务将尝试连接或者在这些端口上操作,这样可能会导致问题。

未注册的端口区域由客户端应用程序动态使用。 IE:您在连接到StackOverflow.com网络服务器的端口80时正在阅读此答案,但您的浏览器正在使用未注册的端口来启动该请求。

答案 2 :(得分:1)

因为服务器端口通常是众所周知的端口。在Unix框中,您将在/etc/services文件中看到它们的分配。另一方面,客户端端口通常由特定高范围的TCP / IP堆栈挑选。因此,服务器知道要侦听的端口,客户端知道要连接到哪个端口,没有人关心建立连接的端口。

答案 3 :(得分:0)

较低的端口号(&lt; 1024)保留给特权进程。此外,Internet Assigned Number Authority将许多端口分配给特定服务。客户端与侦听这些众所周知的端口的服务器建立连接,但根据可用的端口使用较高范围内的动态分配的端口号。

答案 4 :(得分:0)

较低的端口号通常保留用于常见应用程序。更短=更容易记住。

相关问题