问题描述
我想知道如何检查我的电脑上打开/关闭的端口。
我在命令行上使用了netstat -a
。端口状态”LISTENING”是否表示端口已打开?输出中没有显示的任何端口是否关闭?
最佳解决方法
netstat
有几个参数对此很有用:
-
-l
或--listening
仅显示当前正在侦听传入连接的套接字。 -
-a
或--all
显示当前正在使用的所有套接字。 -
-t
或--tcp
显示tcp套接字。 -
-u
或--udp
显示udp套接字。 -
-n
或--numeric
将主机和端口显示为数字,而不是在dns中解析并在/etc /services中查找。
你使用这些组合来得到你想要的。要知道当前正在使用哪些端口号,请使用以下其中一个端口号:
netstat -atn # For tcp
netstat -aun # For udp
netstat -atun # For both
在输出中,所有提到的端口都在监听传入连接或者连接到一个对等端,其他所有端口都关闭。 TCP和UDP端口是16位宽(从1-65535开始)
**他们也可以与对方连接/断开连接。
次佳解决方法
你可以使用这个命令:
netstat -tulnp | grep <port no>
如果它显示了它使用的某个过程。如果没有输出,则关闭(未使用)。
第三种解决方法
另一个易于使用的命令行来找出哪个进程正在使用一个端口:
lsof -n -i4TCP:$PORT | grep LISTEN
我在.bash_profile中添加了下一个函数,
function pslisten {
echo `lsof -n -i4TCP:$1 | grep LISTEN`
}
现在运行“pslisten 5060”来查看谁在抓我的SIP端口。
它也适用于Apple Mac OS X。
第四种方法
端口状态”LISTENING”是否表示端口已打开?
是。这意味着某些服务正在监听计算机上的该端口是否有传入连接,即该端口已建立以建立新的连接。
输出中未显示的任何端口都表示它已关闭?
是。请记住,netstat -a
将显示所有活动连接,即充当服务器的端口(某些服务正在侦听这些端口以连接来自其他机器/进程的端口)并建立连接(连接建立在这些端口上,而不管主机/a服务可以是服务器或客户端)
所有的tcp和udp端口都属于一个名为sockets的类别,并且有很多这样的类别。要查看套接字信息,您可以检查man ss
。