3种端口类型有什么区别?

Sim*_*mon 5 networking port-forwarding

我已经阅读了一个与此非常相似的线程,但我仍然不明白。

任何人都可以解释众所周知的、注册的和动态的端口之间的区别。

到目前为止我所知道的:

众所周知的端口用于侦听并转发端口以将流量发送到特定的 ip

动态端口是客户端,仅用于活动会话。一旦到期,端口将再次可用。这些仅用于使流量返回到正确的用户。

注册 - 完全不明白

DrZ*_*Zoo 8

知名港口

  • 0 到 1023 范围内的端口号是众所周知的端口或系统端口。它们由提供广泛使用的网络服务类型的系统进程使用。在类 Unix 操作系统上,进程必须以超级用户权限执行才能使用众所周知的端口之一将网络套接字绑定到 IP 地址

动态端口

  • 范围 49152–65535(2 15 +2 14到 2 16 ?1)包含无法向 IANA 注册的动态或私有端口。此范围用于私人或定制服务或临时目的以及临时端口的自动分配。

注册端口

  • 1024 到 49151 的端口号范围是注册的端口。根据请求实体的申请,它们由 IANA 分配用于特定服务。 [1] 在大多数系统上,注册的端口可以被普通用户使用。这里是众所周知的端口,这里是注册的端口

这里很好地解释了端口的用途,jcrawford 的补充


Spi*_*iff 6

就 TCP 和 UDP 协议而言,端口都是相同的。它们中的任何一个都可以用于服务/守护程序来侦听,它们中的任何一个都可以在 NAT(又名 NAPT,PAT)网关中进行端口转发,并且它们中的任何一个都可以用于客户端以从中发起连接。

历史上,许多众所周知的协议,例如 HTTP (80),都被分配了低于 1024 的默​​认端口,因此许多操作系统,包括大多数 Unix 和类 Unix 操作系统,不允许您在这些端口上打开侦听器,除非您有管理员/root 凭据。这是假设您的 Unix 机器实际上是一个多用户系统,并且 J. Random User 不应该能够在机器上运行 HTTP 服务器,并使其看起来好像该用户的 HTTP 服务器是官方的 HTTP 服务器通过在端口 80 上运行该框。与 SSH (22)、Telnet (23)、SMTP (25)、FTP (21) 等相同。

1024 和 49152 之间是一堆端口,这些端口已被指定为许多不太知名的默认端口,尤其是公司/专有协议。操作系统尽量不使用这些端口被认为是最佳实践。

当客户端或服务器进程请求侦听端口,或请求启动传出 TCP 连接或 UDP 流,并且未指定特定端口时,内核中的 TCP 和 UDP 网络代码(“网络堆栈”)任意分配一个当前未使用的端口。为了不妨碍以后可能想要使用专有“注册”端口的服务,网络堆栈通常会尝试避免为此使用众所周知的或注册的端口,而是将自己限制在临时/ 49152 和 65535 之间的动态端口。