ss 命令在哪里收集端口等数据

ss 命令在哪里收集端口等数据

当我尝试查看系统中的端口冲突时,许多在线网站建议使用/etc/服务或者SS隧道查看端口信息

我注意到/etc/服务正在提供不同的信息-SS在大多数情况下。

输出比较示例

sudo cat /etc/services

ftp                21/udp
ftp                21/sctp
ssh                22/tcp
ssh                22/udp
ssh                22/sctp
telnet             23/tcp
telnet             23/udp
smtp               25/tcp

相对

ss -tunl

Netid  State   Recv-Q   Send-Q   Local Address:Port    Peer Address:Port                               
udp    UNCONN  0        0        0.0.0.0:5353          0.0.0.0:*                                  
udp    UNCONN  0        0        0.0.0.0:46670         0.0.0.0:*                                  
udp    UNCONN  0        0        [::]:5353             [::]:*                                  
udp    UNCONN  0        0        [::]:38838            [::]:*   

/etc/服务静态数据文件,只能用作指导,不能真实反映系统的真实端口配置。

哪里有SS程序收集此端口数据,以及如何修改/删除某些端口,或者通过SS或者另一个程序?

答案1

该文件/etc/services仅提供端口的编号到名称映射,与 ports ss 列出的内容无关。此外,此文件中的名称是端口的常见用途,而不是端口在系统上的实际用途,因为任何程序(具有足够的权限)都可以出于任何目的打开任何端口。基本上/etc/services是 IANA 分配号码注册表的子集。

列出的ss是系统上正在使用的端口。如果它列在 ss 中,则它正在使用中。如果您ss -p以 root 身份运行,它应该列出具体开放端口的进程。

您无法直接修改正在使用的端口。您需要做的是sudo ss -p找出正在使用该端口的程序并将其杀死。或者,相反,如果 ss 中未列出某个端口而您希望它列出,则启动使用该端口的服务。

人们普遍错误地认为端口可以创建和删除。端口只是一个数字,它们始终存在并且无法删除或创建。它们要么正在使用,要么未使用。

答案2

这是两件不同的事情。该/etc/services文件显示服务通常使用哪个端口,类似于https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

ss是一个命令,用于显示您的计算机上当前有哪些服务处于活动状态,等待传入连接,例如将侦听 TCP 端口 80 和 443 的 Web 服务器。 它还会显示当前打开的传出连接,例如通过 Web 浏览器或ssh 客户端到 web/ssh 服务器。

ss类似于netstat已弃用的旧命令,取而代之的是ss.

相关内容