TL;DR
# List all ports:
$ netstat --all
# List all listening ports:
$ netstat --listening
# List listening TCP ports:
$ netstat --tcp
# Display PID and program names:
$ netstat --program
# List information continuously:
$ netstat --continuous
# List routes and do not resolve IP addresses to hostnames:
$ netstat --route --numeric
# List listening TCP and UDP ports (+ user and process if you're root):
$ netstat --listening --program --numeric --tcp --udp --extend
# MacOS 查看监听的端口
$ netstat -AaLlnW
$ sudo netstat -rn
Flag 含义
对于一个给定的路由器,可以打印出五种不同的标志(flag):
U: 该路由可以使用。G: 该路由是到一个网关(路由器)。如果没有设置该标志,说明目的地是直接相连的。H: 该路由是到一个主机,也就是说,目的地址是一个完整的主机地址。 如果没有设置该标志,说明该路由是到一个网络,而目的地址是一个网络地址: 一个网络号,或者网络号与子网号的组合。D: 该路由是由重定向报文创建的。M: 该路由已被重定向报文修改。
标志
G是非常重要的,因为由它区分了间接路由和直接路由(对于直接路由来说是不设置标志G的)。 其区别在于,发往直接路由的分组中不但具有指明目的端的IP地址,还具有其链路层地址。 当分组被发往一个间接路由时,IP地址指明的是最终的目的地,但是链路层地址指明的是网关(即下一站路由器)。