我有点困惑,
我注意到:
知名端口,是服务器上预定义的端口,用于将客户端连接到服务器。(在 IANA 中保留)
动态端口,是客户端临时随机选择的与服务器通信的端口。(它们不在 IANA 保留)
但我不知道用户端口到底是什么。我只知道它们是由某些实体在 IANA 中为某些服务保留的,但如果是这样,那么知名端口和它们有什么区别?
答案1
知名端口定义为端口及其编号小于 1024。通常只允许以超级用户身份运行的进程(Linux 术语中为 root,见下文)监听这些端口。
编号较高的端口,也称为用户端口或者注册端口是港口在 1024–49151 范围内任何用户都可以收听。
此限制通常在类 Unix 系统上强制执行。
最后,最高编号的端口,在 49152–65535 范围内通常仅用于临时连接。它们通常分配给客户端应用程序。这些端口称为短暂的或者动态的。
关于超级用户
超级用户帐户(不要混淆此问答网站),通常称为root
,有时也有其他名称,例如,toor
在类 Unix 操作系统(Linux、类 BSD 系统等)上,允许执行所有操作且对其施加的限制最少的用户帐户。它的定义是具有唯一标识设置为 0该用户帐户类似于Windows管理员帐户。
该用户可以收听(或者更准确地说绑定) 的权限,因此允许在知名端口上提供服务。许多需要使用此端口号的程序都以 root 身份运行(但它们通常会切换用户以进行网络以外的其他工作)。此限制应可防止普通用户假装是可以提供“知名”服务(如 SSH(端口 22)、HTTP(S)(端口 80、443)、FTP 等)的计算机的所有者。
答案2
维基百科 注册端口 列出所有类型的端口及其各种名称:
编号为 0 至 1023 的端口称为系统端口或知名端口;编号为 1024-49151 的端口称为用户端口或注册端口,编号为 49152-65535 的端口称为动态端口、私有端口或临时端口。[2] 传输协议(TCP、UDP、DCCP、SCTP)使用系统端口和用户端口来识别应用程序或服务。
- 端口 0–1023– 系统或知名端口
- 端口 1024–49151 – 用户或注册端口
- 端口 49152–65535– 动态 / 私有 / 临时端口
答案3
互联网号码分配机构具有以下定义:
端口号的分配方式多种多样,基于三个范围:系统端口(0-1023)、用户端口(1024-49151)以及动态和/或私有端口(49152-65535);这些范围的不同用途在 [RFC6335]。
这种区分主要是为了 IANA 的批准政策,但当然也意味着操作系统默认使用数字范围。
诸如“知名”端口之类的术语有点模糊,但通常指 IANA 注册表或 /etc/services 文件中的所有端口。
有些操作系统(例如 Windows)没有特权端口的概念,有些操作系统允许配置动态端口范围或在私有范围内为 PAT 保留额外的范围(例如 Linux)。
如果您谈论的是非特权用户(而不是特权根进程)可以在端口上侦听的端口,我不会使用术语用户端口(因为这正是原始问题背后的混淆)。