tns-cml 是什么
tns-cml 是 IANA 早期登记的服务名,登记说明写作 TNS CML,注册人为 Jerome Albin,登记表里没有附带 RFC 或任何协议实现说明。也就是说 590 号端口只是被一个名字占住了位置,具体跑什么协议、报文长什么样,注册表并不回答。590 属于系统端口区间(0-1023),按 RFC 6335 的口径,这一段只由 IETF Review 或 IESG Approval 分配。需要特别注意:名字里的 TNS 与 Oracle 数据库的 TNS 监听(默认 1521)没有任何从属关系,看到 TNS 三个字母就按 Oracle 排查是常见的误判路径。
基本信息
| 服务名 | tns-cml |
|---|---|
| IANA 登记说明 | TNS CML |
| 协议 | TCP 与 UDP(分别登记) |
| 登记 | IANA 早期登记,无 RFC 引用 |
| 端口区间 | 系统端口 500-599 |
| 登记人 | Jerome Albin |
典型使用场景
- 资产测绘命中 590:核实是真实监听还是扫描结果里的假阳性
- 日志里出现 590 的连接失败记录:判断是探测噪音还是业务重试
- 排查 Oracle 相关问题时:明确 590 不是 Oracle 监听端口,避免排查方向跑偏
- 整理防火墙白名单:对无实现的登记名默认不放行
- 做端口对照表复核:确认 590 的登记说明是 TNS CML,而不是被误抄成别的服务
定位占用进程
定位占用进程
ss -lntup 'sport = :590' # 列出监听 590 的进程(TCP 与 UDP)
sudo lsof -i :590 # 反查持有该端口的进程与用户
grep -w 590 /etc/services # 本地是否登记了这个名字
sudo netstat -plan | grep ':590 ' # 老系统上没有 ss 时用这个
# 端口占用来自容器时:docker ps --format '{{.Names}} {{.Ports}}' | grep 590排查判断要点
| 现象 | 含义 | 处置 |
|---|---|---|
| 590 在 LISTEN 且父进程是本机服务 | 有真实业务或自研程序占用 | 确认归属后纳入资产台账,限制来源 IP |
| 590 只有出站 SYN 无应答 | 对端在扫描或目标不可达 | 按扫描噪音处理,不必逐条告警 |
| 590 上出现大量短连接 | 典型的探测或爆破特征 | 结合源 IP 聚合统计,必要时封禁段 |
如果排查对象是 VNC 远程桌面,请盯 5900 而不是 590;VNC 的显示号 N 对应端口 5900+N,这和 IANA 登记在 590 上的 tns-cml 是两码事。
登记信息只能证明「名字被占用过」,不能证明该端口正在被使用,也不能作为放行或封禁的唯一依据;判断必须落到本机进程或流量特征上。