Kar*_*uru 3 sockets networking network-programming client-server ports
为什么连接的客户端使用高端口号(临时端口),而应用程序通常监听小端口号?
Thx in advans,Karthik Balaguru
mar*_*k4o 10
服务器侦听固定端口号,以便客户端知道连接的位置.客户端不需要使用固定端口号,因为没有人启动与它们的连接,并且实际上如果在同一台机器上运行多个客户端(例如Web浏览器),则它们不能使用固定端口号连接到同一台服务器. IANA已将 0..49151范围内的端口指定为特定服务的固定端口号,将49152..65535范围内的端口指定为未分配给任何服务的动态(短暂)端口,并可在固定端口号时使用不需要.
端口范围0..49151进一步划分为众所周知的范围0..1023,只有特权进程可以绑定(至少在Unix/Linux上),注册范围1024..49151.服务器进程可以使用1024..49151范围内的端口,这些服务器进程可以作为非特权用户运行,如果服务器没有使用它们,客户端也可以使用此范围内的端口(例如Linux上的动态端口) Solaris默认情况下从32768开始,而不是49152).
低于 1024 的端口号称为“已注册”,而高于 1024 的端口号(限制为 65,535)称为“未注册”。所有这两个术语都意味着 1024 下的端口具有与其关联的标准服务。IE:DNS 为 53,HTTP 为 80,SMTP 为 25,等等。请注意它们是相关联的 - 没有什么可以阻止您将应用程序设置为使用端口 53、25 等,但不建议这样做,因为其他服务将尝试连接和或在这些端口上操作,因此可能会导致问题。
客户端应用程序动态使用未注册的端口区域。IE:您在连接到 StackOverflow.com 网络服务器的端口 80 时正在阅读此答案,但您的浏览器正在使用未注册的端口来发起该请求。
| 归档时间: |
|
| 查看次数: |
13271 次 |
| 最近记录: |