我试图了解哪些端口正在我的机器上积极侦听(正在使用?),但并不真正知道我在做什么。我尝试过的三个命令是nmap
、ss
(? netscan
?) 和lsof
。
netscan
报告只有 1 个端口正在主动侦听 (631):
$ sudo nmap -sT localhost
Starting Nmap 7.91 ( https://nmap.org ) at 2021-06-02 21:28 EDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000094s latency).
Not shown: 999 closed ports
PORT STATE SERVICE
631/tcp open ipp
ss
(? netscan
?) 报告 2 个端口正在使用中(631 和 53):
$ sudo ss -tulwn | grep LISTEN
tcp LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:*
tcp LISTEN 0 5 127.0.0.1:631 0.0.0.0:*
tcp LISTEN 0 5 [::1]:631 [::]:*
最后,如果我使用 检查各个端口lsof -i:xx
,我会看到 631 和 53 的结果,还会看到端口 80 和 443 的结果:
$ sudo lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
firefox 3481 me 74u IPv4 85172 0t0 TCP Machine:56024->lga25s63-in-f3.1e100.net:http (ESTABLISHED)
$ sudo lsof -i:443
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
skypeforl 2426 me 27u IPv4 77133 0t0 TCP Machine:60396->13.83.65.43:https (ESTABLISHED)
skypeforl 2453 me 72u IPv4 56536 0t0 TCP Machine:58945->40.86.187.166:https (ESTABLISHED)
firefox 3481 me 95u IPv4 81375 0t0 TCP Machine:53788->104.16.249.249:https (ESTABLISHED)
firefox 3481 me 157u IPv4 80283 0t0 TCP Machine:49080->lga34s15-in-f5.1e100.net:https (ESTABLISHED)
chrome-gn 3799 me 74u IPv4 55080 0t0 TCP Machine:42196->server-52-85-61-100.ewr53.r.cloudfront.net:https (CLOSE_WAIT)
chrome-gn 3799 me 95u IPv4 55072 0t0 TCP Machine:43998->104.16.248.249:https (CLOSE_WAIT)
我原以为这三个命令基本上是同一信息的不同视图。为什么某些端口仅由其中某些命令显示?
答案1
ss
从和之间的差异开始nmap
。对于端口 53,原因是localhost
与为本机保留的其他 1600 万个地址之间的差异。127.0.0.1
不等于127.0.0.53
.ss
正在报告本地计算机的所有端口,同时nmap
将自身限制为地址 127.0.0.1。
至于来自 的额外报告lsof
,这是在寻找非常不同的东西。您的ss
和nmap
命令正在寻找处于LISTEN
状态的套接字,即等待传入连接。你的lsof
正在寻找所有套接字,特别是包括任何已建立的连接和已拆除的连接。您正在寻找的东西任何一个结束正在使用端口 80 或任何一个end 使用端口 443。
所以重点是这 3 个命令显示不同的内容,因为您认为这些命令显示相同信息的想法是错误的。这是苹果、橙子和香蕉的比较。 3个不同的命令显示不同的信息,因为它们显示的信息不同。