繁体   English   中英

客户端使用高端口号

[英]Client use high port number

为什么连接的客户端使用高端口号(临时端口),而应用程序通常监听小端口号?

Thx in advans,Karthik Balaguru

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM