IP地址与端口承担不同任务

TCP、UDP等协议使用16位端口字段区分主机上的通信端点。IPv4本身没有这个端口字段;应用常说的IP加端口,是把不同层的信息组合起来使用,不能把端口看成IP地址末尾新增的一段。

端口编号还依赖具体传输协议。TCP和UDP可以使用同一个数值而保持不同协议语义,判断某条通信不能只看到一个裸数字;本地绑定地址、远端和协议等上下文会影响如何区分连接或分派数据。

参考:[1] [2]

注册范围与临时选择不是一回事

RFC 6335把注册表划分为0—1023的系统端口、1024—49151的用户端口,以及49152—65535的动态或私有端口。前两类还存在已分配、未分配和保留状态;动态范围不由IANA逐项分配给固定服务。

这是登记管理规则,不保证每台操作系统的临时端口选择范围都与表中边界完全相同。应用可以请求本地绑定或让系统选择合适端口;需要同时核对操作系统策略、协议和实际配置,不能把注册表当成机器当前打开服务的清单。

参考:[1] [2] [3]

熟悉的端口不证明服务身份

服务名与端口登记帮助软件和管理者形成约定,但流量走在某个已登记端口,并不证明它确实属于所登记应用。一个进程可以按允许的配置监听其他端口,协议识别也可能需要读取实际协商和应用数据。

RFC 6335明确指出,IANA分配既不是对产品的背书,也不是“良性流量”的认证。防火墙规则、服务身份验证和应用授权需要自己的依据;仅因为某个端口被允许通过,就断定其中内容可信,是把编号约定误当成安全保证。

参考:[1]