关注 Linux 的系统状态,主要从两个角度出发,一个角度是系统正在运行什么服务;另外一个就是
有什么连接或服务可用。使用 ps 命令可以查看处于活跃状态的服务;使用 netstat 命令则可以显示所有可用连接和服务,以及它们的状态。netstat 还可以显示 ps 无法显示的、从 inetd 或 xinetd 中运行的服务,比如 telnet 等。
用 netstat 查看所有服务
以下命令可以显示所有的服务:
$ netstat -a
激活Internet连接 (服务器和已建立连接的)
Proto Recv-Q Send-Q Local Address       Foreign Address         State   
tcp        0      0           *:telnet                 *:*                            LISTEN
tcp        0      0           *:smtp                  *:*                            LISTEN
tcp        0      0 192.168.1.5:32851 nest.anthill.echid:ircd ESTABLISHED
tcp        0      0           *:nfs                      *:*                           LISTEN     
tcp        0      0           *:60966                 *:*                           LISTEN     
tcp        0      0           *:sunrpc                 *:*                           LISTEN     
tcp        0      0           *:52694                  *:*                          LISTEN     
tcp        0      0          localhost:ipp            *:*                          LISTEN     
tcp        0      0          localhost:smtp          *:*                         LISTEN     
tcp        0      0          *:56445                   *:*                         LISTEN     
udp       0      0          *:ipp                        *:*
Active Unix domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
Unix 2 [ ACC ] STREAM LISTENING 1065 /tmp/ksocket-carla/klaunchertDCh2b.slave-socket

上述显示中,"Proto"是 Protocol 的简称,它可以是 TCP 或 UDP。"Recv-Q"和"Send-Q"指
的是接收队列和发送队列,这些数字一般都应该是 0,如果不是,则表示软件包正在队列中堆积。这种情
况只能在非常短的时间内存在,比如在 KMail 中单击检查邮件按钮时,有如下显示是正常现象:
tcp 0 593 192.168.1.5:34321 venus.euao.com:smtp ESTABLISHED
   如果接收队列持续处于阻塞状态,那么很有可能受到了拒绝式服务的攻击。如果发送队列不能被快速清除,则可能是因为有一个应用程序不能将所要发送的东西传送完。
"Local Address" 指本机的 IP 和端口号。"Foreign Address"指所要连接的主机名称和服务。
"State"指现在连接的状态。三种常见的 TCP 状态如下所示:
a) LISTEN 等待接收连接;
b) ESTABLISHED 一个处于活跃状态的连接;
c) TIME_WAIT 一个刚被终止的连接。它只持续 1 至 2 分钟,然后就会变成 LISTEN 状态。
由于 UDP 是无状态的,所以其 State 栏总是空白。
持续获取有用信息
    使用"netstat -a"命令,显示结果可能会有数百行。其实,在这些结果中可以忽略所有"Active
Unix domain sockets"以后的内容。因为这些内容是本地内部进程之间的通信,而不是网络连接。使用以下命令可以避免显示无用信息:
$ netstat --inet -a
   " netstat --inet -a" 命 令 的 显 示 结 果 将 只 有 网 络 连 接 , 包 括 所 有 正 处 在 " LISTEN" 状态和"ESTABLISHED"状态的。
需要特别注意的是,对于普通用户而言,一般不需要使用 telnet 或 SMTP 服务。因此需要将其关闭,以提高系统安全性;并且要重新配置启动文件,以保证它们不会在下次系统启动时自动重新启动。
要想持续不断地查看随时都在更改的网络信息,可以使用 netstat 命令的"-c"参数,并且将结果存
入文件中:
$ netstat --inet -a -c > netstat.txt
这时,查看 netstat.txt 文件即可检查邮件服务、Web 服务和 telnet 服务等的状态变化。
检查网卡使用 netstat 命令的"-i"参数还可以帮助检查网卡。该命令的显示结果如下所示:
Kernel Interface table
eth0   1500   0      86192         0         0          0            60005   0         0         0          BMRU
lo       16436 0      434             0         0          0            434       0         0         0          LRU
在"RX-OK (Received OK)"和"TX-OK (Transmitted OK)"栏应该看到很多数字,而其它地方的
数字应该非常小。如果在"RX-ERR"或"TX-ERR"栏看到很多数据,则很有可能是网卡或网线出现了
问题。

==================================================

可以是用命令:netstat -lnp来察看系统当前监听的端口。其中l选项表示显示正在被监听(listen)的端口;n选项表示直接显示端口数字而不是通过察看/etc/service来转换为端口名;p选项表示列出监听的程序。例如:
netsat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 *:mysql                 *:*                     LISTEN
tcp        0      0 *:netbios-ssn           *:*                     LISTEN
tcp        0      0 *:swat                  *:*                     LISTEN
tcp        0      0 *:www                   *:*                     LISTEN
tcp        0      0 *:linuxconf             *:*                     LISTEN
tcp        0      0 *:finger                *:*                     LISTEN
tcp        0      0 *:login                 *:*                     LISTEN
tcp        0      0 *:shell                 *:*                     LISTEN
tcp        0      0 *:telnet                *:*                     LISTEN
tcp        0      0 *:ftp                   *:*                     LISTEN
udp        0      0 radiusd.301:netbios-dgm *:*
udp        0      0 radiusd.301h:netbios-ns *:*
udp        0      0 *:netbios-dgm           *:*
udp        0      0 *:netbios-ns            *:*
udp        0      0 *:ntalk                 *:*
udp        0      0 *:talk                  *:*
raw        0      0 *:icmp                  *:*                     7
raw        0      0 *:tcp                   *:*                     7
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix 0      [ ACC ]     STREAM     LISTENING     40250 /tmp/mysql.sock

netstat -ln
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:139             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:901             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:98              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:79              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:513             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:514             0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:23              0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN
udp        0      0 192.168.2.33:138        0.0.0.0:*
udp        0      0 192.168.2.33:137        0.0.0.0:*
udp        0      0 0.0.0.0:138             0.0.0.0:*
udp        0      0 0.0.0.0:137             0.0.0.0:*
udp        0      0 0.0.0.0:518             0.0.0.0:*
udp        0      0 0.0.0.0:517             0.0.0.0:*
raw        0      0 0.0.0.0:1               0.0.0.0:*               7
raw        0      0 0.0.0.0:6               0.0.0.0:*               7
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix 0      [ ACC ]     STREAM     LISTENING     40250 /tmp/mysql.sock

================

Netstat命令举例
  请输入下面的命令:
  # netstat -tulpn
  或者是
  # netstat -npl
  请看输出结果::
  Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
  tcp 0 0 0.0.0.0:6881 0.0.0.0:* LISTEN 6908/python
  tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 5562/cupsd
  tcp 0 0 127.0.0.1:3128 0.0.0.0:* LISTEN 6278/(squid)
  tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 5854/exim4
  udp 0 0 0.0.0.0:32769 0.0.0.0:* 6278/(squid)
  udp 0 0 0.0.0.0:3130 0.0.0.0:* 6278/(squid)
  udp 0 0 0.0.0.0:68 0.0.0.0:* 4583/dhclient3
  udp 0 0 0.0.0.0:6881 0.0.0.0:* 6908/python
  请注意,最后一栏给出了关于程序名称和端口的信息。在这里,我们解释一下各参数的含义:
  -t : 指明显示TCP端口
  -u : 指明显示UDP端口
  -l : 仅显示监听套接字(所谓套接字就是使应用程序能够读写与收发通讯协议(
protocol
)与资料的程序)
  -p : 显示
进程
标识符和程序名称,每一个套接字/端口都属于一个程序。
  -n : 不进行DNS轮询(可以加速操作)

==========================================================

linux netstat 命令详解
功能说明:Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

  语  法:netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]

  补充说明:利用netstat指令可让你得知整个Linux系统的网络情况。

  参  数:

  -a或–all 显示所有连线中的Socket。

  -A<网络类型>或–<网络类型> 列出该网络类型连线中的相关地址。

  -c或–continuous 持续列出网络状态。

  -C或–cache 显示路由器配置的快取信息。

  -e或–extend 显示网络其他相关信息。

  -F或–fib 显示FIB。

  -g或–groups 显示多重广播功能群组组员名单。

  -h或–help 在线帮助。

  -i或–interfaces 显示网络界面信息表单。

  -l或–listening 显示监控中的服务器的Socket。

  -M或–masquerade 显示伪装的网络连线。

  -n或–numeric 直接使用IP地址,而不通过域名服务器。

  -N或–netlink或–symbolic 显示网络硬件外围设备的符号连接名称。

  -o或–timers 显示计时器。

  -p或–programs 显示正在使用Socket的程序识别码和程序名称。

  -r或–route 显示Routing Table。

  -s或–statistice 显示网络工作信息统计表。

  -t或–tcp 显示TCP传输协议的连线状况。

  -u或–udp 显示UDP传输协议的连线状况。

  -v或–verbose 显示指令执行过程。

  -V或–version 显示版本信息。

  -w或–raw 显示RAW传输协议的连线状况。

  -x或–unix 此参数的效果和指定”-A unix”参数相同。

  –ip或–inet 此参数的效果和指定”-A inet”参数相同

  netstat 的一些常用选项

  ·netstat –s

  本选项能够按照各个协议分别显示其统计数据。如果我们的应用程序(如Web浏览器)运行速度比较慢,或者不能显示Web页之类的数据,那么我们就可以用本选项来查看一下所显示的信息。我们需要仔细查看统计数据的各行,找到出错的关键字,进而确定问题所在。

  ·netstat –e

  本选项用于显示关于以太网的统计数据。它列出的项目包括传送的数据报的总字节数、错误数、删除数、数据报的数量和广播的数量。这些统计数据既有发送的数据报数量,也有接收的数据报数量。这个选项可以用来统计一些基本的网络流量)。

  ·netstat –r

  本选项可以显示关于路由表的信息,类似于后面所讲使用route print命令时看到的 信息。除了显示有效路由外,还显示当前有效的连接。

  ·netstat –a

  本选项显示一个所有的有效连接信息列表,包括已建立的连接(ESTABLISHED),也包括监听连接请(LISTENING)的那些连接。

  ·netstat –n

显示所有已建立的有效连接
----------------------------------------------------------------------------------------------------------------------------------------

LISTEN:侦听来自远方的TCP端口的连接请求

SYN-SENT:再发送连接请求后等待匹配的连接请求(如果有大量这样的状态包,检查是否中招了)

SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(如有大量此状态,估计被flood攻击了)

ESTABLISHED:代表一个打开的连接

FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认

FIN-WAIT-2:从远程TCP等待连接中断请求

CLOSE-WAIT:等待从本地用户发来的连接中断请求

CLOSING:等待远程TCP对连接中断的确认

LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认(不是什么好东西,此项出现,检查是否被攻击)

TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认

CLOSED:没有任何连接状态

1. 列出所有端口 (包括监听与非监听端口)
使用netstat -a列出所有端口
# netstat -a | more
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost:30037         *:*                     LISTEN
udp        0      0 *:bootpc                *:*

Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     6135     /tmp/.X11-unix/X0
unix  2      [ ACC ]     STREAM     LISTENING     5140     /var/run/acpid.socket
使用netstat -at列出所有tcp端口
# netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost:30037         *:*                     LISTEN
tcp        0      0 localhost:ipp           *:*                     LISTEN
tcp        0      0 *:smtp                  *:*                     LISTEN
tcp6       0      0 localhost:ipp           [::]:*                  LISTEN
使用netstat -au列出所有UDP端口
# netstat -au
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
udp        0      0 *:bootpc                *:*
udp        0      0 *:49119                 *:*
udp        0      0 *:mdns                  *:*
2. 列出监听中的Sockets使用netstat -l列出监听中的ports
# netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost:ipp           *:*                     LISTEN
tcp6       0      0 localhost:ipp           [::]:*                  LISTEN
udp        0      0 *:49119                 *:*
使用netstat -lt列出监听中的TCP ports
# netstat -lt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost:30037         *:*                     LISTEN
tcp        0      0 *:smtp                  *:*                     LISTEN
tcp6       0      0 localhost:ipp           [::]:*                  LISTEN
使用netstat -lu列出监听中的UDP ports
# netstat -lu
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
udp        0      0 *:49119                 *:*
udp        0      0 *:mdns                  *:*
使用netstat -lx列出监听中的UNIX ports
# netstat -lx
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     6294     private/maildrop
unix  2      [ ACC ]     STREAM     LISTENING     6203     public/cleanup
unix  2      [ ACC ]     STREAM     LISTENING     6302     private/ifmail
unix  2      [ ACC ]     STREAM     LISTENING     6306     private/bsmtp
3. 显示所有控制协议的详情使用
netstat -s列出所有使用中的端口【协议】详情
# netstat -s
Ip:
    11150 total packets received
    1 with invalid addresses
    0 forwarded
    0 incoming packets discarded
    11149 incoming packets delivered
    11635 requests sent out
Icmp:
    0 ICMP messages received
    0 input ICMP message failed.
Tcp:
    582 active connections openings
    2 failed connection attempts
    25 connection resets received
Udp:
    1183 packets received
    4 packets to unknown port received.
.....
使用 netstat -st / -su列出所有TCP/ UDP的端口详情
# netstat -st

# netstat -su4.  使用netstat -p,在输出中显示PID和程序名

netstat -p 可以和其他netstat 选项组合使用. 它将在netstat输出中显示 “PID/Program Name” . 对于在调试中需要确认哪个程序使用特定的端口,这将非常有用。
# netstat -pt
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        1      0 ramesh-laptop.loc:47212 192.168.185.75:www        CLOSE_WAIT  2109/firefox
tcp        0      0 ramesh-laptop.loc:52750 lax:www ESTABLISHED 2109/firefox

5. 在netstat输出中不显示主机名、端口号和用户名
当你不想在netstat输出中不显示主机名、端口号和用户名时,你可以使用netstat -n 选项. 它将显示一个numbers来代替主机名、端口和用户名.当然他也会加快输出信息。
# netstat -an

如果你只是不想显示主机名、端口号和用户名之间的一个,你可以使用如下命令:
# netsat -a --numeric-ports

# netsat -a --numeric-hosts

# netsat -a --numeric-users6. 周期性输出netstat信息

每隔几秒钟netstat打印输出信息
# netstat -c
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 ramesh-laptop.loc:36130 101-101-181-225.ama:www ESTABLISHED
tcp        1      1 ramesh-laptop.loc:52564 101.11.169.230:www      CLOSING
tcp        0      0 ramesh-laptop.loc:43758 server-101-101-43-2:www ESTABLISHED
tcp        1      1 ramesh-laptop.loc:42367 101.101.34.101:www      CLOSING
^C7. 找出你的系统所不支持的协议族(Address families)netstat --verbose

在最后几列, 你会看到如下信息.
        netstat: no support for `AF IPX' on this system.
        netstat: no support for `AF AX25' on this system.
        netstat: no support for `AF X25' on this system.
        netstat: no support for `AF NETROM' on this system.8. 使用netstat -r显示核心路由信息# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     *               255.255.255.0   U         0 0          0 eth2
link-local      *               255.255.0.0     U         0 0          0 eth2
default         192.168.1.1     0.0.0.0         UG        0 0          0 eth2

注意:
使用netstat -rn 以数字格式显示路由信息而不显示主机名
9. 找出程序运行使用的哪个
Port# netstat -ap | grep ssh
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp        1      0 dev-db:ssh           101.174.100.22:39213        CLOSE_WAIT  -
tcp        1      0 dev-db:ssh           101.174.100.22:57643        CLOSE_WAIT  -

Find out which process is using a particular port:
# netstat -an | grep ':80'10. 
显示网络接口列表
# netstat -i
Kernel Interface table
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500 0         0      0      0 0             0      0      0      0 BMU
eth2       1500 0     26196      0      0 0         26883      6      0      0 BMRU
lo        16436 0         4      0      0 0             4      0      0      0 LRU

使用netstat -ie显示某个接口的扩展信息(类似于ifconfig):
# netstat -ie
Kernel Interface table
eth0      Link encap:Ethernet  HWaddr 00:10:40:11:11:11
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Memory:f6ae0000-f6b00000

shell网络编程netstat相关推荐

  1. linux学习笔记4:linux的任务调度,进程管理,mysql的安装和使用,ssh工具的使用,linux网络编程...

    1.设置任务调度命令crontab 任务调度是指系统在某个时间执行的特定的命令或程序.任务调度分为:1)系统工作:有些重要的工作必须周而复始的执行,如病毒扫描.2)个别用户工作:个别用户可能希望执行某 ...

  2. Python 全栈开发十 socket网络编程

    一.客户端(client)服务端(sever)架构 在计算机中有很多常见的C/S架构,例如我们的浏览器是客户端.而百度网站和其他的网站就是服务端:视频软件是客户端,提供视频的腾讯.优酷.爱奇艺就是服务 ...

  3. 一文带你走进网络编程

    网络编程 什么是网络编程: 就是用来实现网络互通的不同计算机运行程序之间进行数据的交换的编程 网络模型 OSI(模型):七层协议 应用层: 如: HTTP协议 主要解决如何包装数据,用于通信的应用程序 ...

  4. C++笔记--Linux网络编程(15-0)-socket(供自查,文档说明)

    目录 网络基础 协议的概念 什么是协议 典型协议 网络应用程序设计模式 C/S模式 B/S模式 优缺点 分层模型 OSI七层模型 TCP/IP四层模型 通信过程 协议格式 数据包封装 以太网帧格式 A ...

  5. linux服务器开发三(网络编程)

    转载自:http://www.cnblogs.com/zfc2201/archive/2017/05/04/6804990.html 作者:水之原 网络基础 协议的概念 什么是协议 从应用的角度出发, ...

  6. Linux网络编程——千峰物联网笔记

    B站视频:千峰物联网学科linux网络编程 网址:https://www.bilibili.com/video/BV1RJ411B761?p=1 目录 第一章:计算机网络概述 1.1计算机网络发展简史 ...

  7. 【Linux】《Linux命令行与shell脚本编程大全》阅读笔记

    目录 什么是Linux操作系统 什么是Linux内核 Linux 内核的功能 GNU GUN 实用工具 图形化界面 文件操作相关注意点 内置的目录通配符 复制文件 链接文件 文件重命名 删除文件 新建 ...

  8. Linux网络编程基础知识

    Linux网络编程基础知识 1. 协议的概念 1.1 什么是协议 1.2 典型协议 2 网络应用程序设计模式 2.1 C/S模式 2.2 B/S模式 2.3 优缺点 3 分层模型 3.1 OSI七层模 ...

  9. 网络编程0:网络基础知识

    返回:Linux网络编程学习笔记 1.网络应用程序设计模式 C/S模式:传统的网络应用设计模式,客户机(client)/服务器(server)模式.需要在通讯两端各自部署客户机和服务器来完成数据通信. ...

最新文章

  1. [SCOI2005]王室联邦
  2. 【转】一文掌握 Linux 性能分析之网络篇(续)
  3. AOP实现Android集中式登录架构
  4. 【MySQL】mysql 远程连接111
  5. oracle 数据库运行模式
  6. 强制将IE8设置为IE7兼容模式来解析网页(转)
  7. cc穿盾并发脚本_敢不敢模拟超过 5 万的并发用户?
  8. 讲真话的朋友才是我们需要的!
  9. Android 智能指针 视频,Android系统智能指针中轻量级指针
  10. 顺序查找、折半查找及索引顺序查找
  11. 如何利用机器学习进行海量数据挖掘
  12. 编译原理-第一章:引论
  13. 2021-07-31
  14. 丅rust是什么意思_网红编程语言Rust到底是个什么鬼?
  15. 【Transformers】第 8 章 :使Transformers高效生产
  16. C++ -Pointer指针总结(一)
  17. 多人联机——Photon插件的是使用
  18. 华为nova2自带计算机,华为Nova2 root图文教程 华为Nova2获取root权限的方法
  19. Unity3D 自由视角代码之解析
  20. 修改linux系统iqn,linux iscsi initiator 安装配置

热门文章

  1. php和mhp,达人专业评测容声BDBC-516MHP质量怎么样呢?评测好不好?老铁吐露实情...
  2. 云创大数据加入南京工业互联网产业联盟
  3. Oracle 利用 UTL_SMTP 包发送邮件
  4. 联想x3850x6从u盘引导_联想扬天T4900v进入bios中设置legacy和uefi两种引导模式U盘启动教程...
  5. 重庆春季高考计算机试题,2017年重庆春季高考数学模拟练习题一
  6. 编译器连接器分析器_使用构建分析器了解您的构建
  7. Clamav 杀毒软件安装
  8. 科创板市价申报订单中拟用价格保护措施,买入申报的成交价不高于保护限价... 1
  9. 关于车--标致206相关问题解析及选车建议(zt)
  10. 小白说js--我是一个逆袭的JS