linux命令之netstat

netstat是linux下用于显示网络状态的命令。通过它能统计端口情况,网络连接状态,路由表等信息。在网络开发或运维中,经常会使用netstat来查看网络状态。

参数含义

-a,--all

显示所有套接字的连接状态,默认只显示已建立连接的套接字,加上此参数后,也会显示Listen状态的套接字。
默认:

[root ~]# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 iZ135ux6u63Z:42584      121.58.13.94:mysql     ESTABLISHED
tcp        0      0 iZ135ux6u63Z:6379       62.48.69.16:54744      ESTABLISHED
tcp        0      0 localhost:40940         localhost:metasys       ESTABLISHED
tcp        0      0 iZ235ux6u63Z:ssh        128.56.16.10:34353     ESTABLISHED

加-a后, State下会显示“LISTEN”状态的套接字

[root ~]# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:tproxy          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:https           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:40400           0.0.0.0:*               LISTEN     
......
tcp        0      0 iZ135ux8u13Z:42584      121.58.13.94:mysql     ESTABLISHED
tcp        0      0 iZ135ux8u13Z:6379       62.48.69.16:54744      ESTABLISHED
tcp        0      0 localhost:40940         localhost:metasys       ESTABLISHED
tcp        0      0 iZ135ux8u13Z:ssh        128.56.16.10:34353     ESTABLISHED

-n,--numeric

以数字形式显示ip地址。默认会显示解析过的host,prot,或用户名。
默认:

[root ~]# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 iZ135ux8u13Z:42584      121.58.13.94:mysql     ESTABLISHED
tcp        0      0 iZ135ux8u13Z:6379       62.48.69.16:54744      ESTABLISHED
tcp        0      0 localhost:40940         localhost:metasys       ESTABLISHED
tcp        0      0 iZ135ux8u13Z:ssh        128.56.16.10:34353     ESTABLISHED

加-n后,mysql,ssh,localhost等都以ip或者端口形式显示

[root ~]# netstat -n
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 123.40.125.228:42584      121.58.13.94:3306     ESTABLISHED
tcp        0      0 123.40.125.228:6379       62.48.69.16:54744      ESTABLISHED
tcp        0      0 127.0.0.1:40940         127.0.0.1:11001         ESTABLISHED
tcp        0      0 123.40.125.228:ssh        128.56.16.10:34353     ESTABLISHED

-l,--listening

只显示LISTEN状态的套接字

[root ~]# netstat -l
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:tproxy          0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:https           0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:40400           0.0.0.0:*               LISTEN   

-t,--tcp 和 -u,--udp

只显示tcp(udp)连接。

-p,--program

显示进程PID和进程名称

[root ~]# netstat -p
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 iZ135ux8u13Z:42584      121.58.13.94:mysql     ESTABLISHED 4815/java           
tcp        0      0 iZ135ux8u13Z:6379       62.48.69.16:54744      ESTABLISHED 840/redis-server *: 
tcp        0      0 localhost:40940         localhost:metasys       ESTABLISHED 5109/java           
tcp        0      0 iZ135ux8u13Z:6379       128.56.16.10:65097    ESTABLISHED 840/redis-server *: 

-i,--interfaces

显示网络接口

[root ~]# netstat -i
Kernel Interface table
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
docker0   1500  2560782      0      0 0       4151415      0      0      0 BMU
eth0      1500 23379381      0      0 0      34455532      0      0      0 BMRU
eth1      1500 217716581      0      0 0      202343360      0      0      0 BMRU
lo       65536 240937752      0      0 0      240937752      0      0      0 LRU

-r,--route

显示路由表

[root ~]# netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
default         gateway         0.0.0.0         UG        0 0          0 eth1
10.0.0.0        10.165.21.247   255.0.0.0       UG        0 0          0 eth0
10.168.64.0     0.0.0.0         255.255.248.0   U         0 0          0 eth0
100.64.0.0      10.165.21.247   255.192.0.0     UG        0 0          0 eth0
121.40.180.0    0.0.0.0         255.255.252.0   U         0 0          0 eth1
link-local      0.0.0.0         255.255.0.0     U         0 0          0 eth0
link-local      0.0.0.0         255.255.0.0     U         0 0          0 eth1
172.16.0.0      10.165.21.247   255.240.0.0     UG        0 0          0 eth0
192.168.0.0     0.0.0.0         255.255.240.0   U         0 0          0 docker0

-e,--extend

显示额外信息
-ie能显示网络接口的详细信息,和ifconfig命令的显示内容一致
-pe会显示进程名和用户名

[root ~]# netstat -pe
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode      PID/Program name    
tcp        0      0 iZ135ux8u13Z:42584      121.58.13.94:mysql     ESTABLISHED root       70731166   4815/java           
tcp        0      0 iZ135ux8u13Z:6379       62.48.69.16:54744      ESTABLISHED redis      35176559   840/redis-server *: 
tcp        0      0 localhost:40940         localhost:metasys       ESTABLISHED root       74749821   5109/java           
tcp        0      0 iZ135ux8u13Z:6379       128.56.16.10:65097    ESTABLISHED redis      25990225   840/redis-server *: 

-ne,User一列会显示id而非用户名

-s,--statistics

显示每个协议的统计信息

[root ~]# netstat -s
Ip:
    484627137 total packets received
    6705287 forwarded
    501 with unknown protocol
    0 incoming packets discarded
    477921341 incoming packets delivered
    481921712 requests sent out
    72 dropped because of missing route
Icmp:
    25322 ICMP messages received
    7175 input ICMP message failed.
    InCsumErrors: 9
    ICMP input histogram:
        destination unreachable: 9616
        timeout in transit: 427
        redirects: 94
        echo requests: 15165
        echo replies: 10
        timestamp request: 1
    190825 ICMP messages sent
    0 ICMP messages failed
    ICMP output histogram:
        destination unreachable: 175649
        echo request: 10
        echo replies: 15165
        timestamp replies: 1
.......

用法示例

打印所有监听端口及对应的进程id和名称

[root ~]# netstat -nlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      840/redis-server *: 
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      5109/java           
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      989/nginx: master p 
tcp        0      0 0.0.0.0:14001           0.0.0.0:*               LISTEN      26902/java          
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN      28705/java          
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      836/sshd            

查看tcp端口

[root ~]# netstat -tnp
tcp        0   4080 182.92.221.114:22           123.122.21.121:17350        ESTABLISHED 18909/sshd
tcp        0      0 10.172.248.114:6379         10.171.86.96:56562          ESTABLISHED 18441/redis-server
tcp        0      0 10.172.248.114:6379         10.171.86.96:56496          ESTABLISHED 18441/redis-server
tcp        0      0 10.172.248.114:27017        10.171.86.96:46927          ESTABLISHED 21380/mongod

查看端口是否正常监听

查看是否处于监听状态

[root ~]# netstat -nlp | grep ":80 "
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      989/nginx: master p

另外可以使用telnet测试远程服务器的端口是否打开:

telnet reomte-ip 80

如果本地正常监听,但telent不通,原因可能是防火墙没有屏蔽的端口,需检查防火墙设置。

各个监听状态的含义

转自:http://www.cnblogs.com/peida/archive/2013/03/08/2949194.html
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:没有任何连接状态

参考: linux man:man netstat

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 1、TCP状态linux查看tcp的状态命令:1)、netstat -nat 查看TCP各个状态的数量2)、lso...
    北辰青阅读 9,397评论 0 11
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,596评论 18 139
  • 18.1 引言 TCP是一个面向连接的协议。无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。本章将...
    张芳涛阅读 3,342评论 0 13
  • 1)OSI与TCP/IP各层的结构与功能,都有哪些协议。 OSI分层 (7层):物理层、数据链路层、网络层、传输层...
    ldlywt阅读 2,304评论 0 26
  • 北国的诗 那片红叶是北国的诗, 没有捣衣砧,没有浣花笺, 没有扬州的灯火辉煌, 也没有江南的绵绵细丝。 但当那片凉...
    燚阳阅读 472评论 2 2