Linux命令netstat详解

今天来学习一个命令netstat,官方文档 https://linux.die.net/man/8/netstat

简介

netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等。

参数

-r : 显示内核路由表。
-g : 显示IPv4和IPv6的多播组成员信息。
-i : 显示所有网络接口的表。
-M : 显示伪装连接的列表。
-s : 显示每个协议的统计信息。
-v : 详细地告诉用户发生了什么。
-n : 显示数字地址(ip),而不是主机名.
-c : 每个一个指定时间执行以下netstat
-e : 显示扩展信息
-o : 显示与网络相关的时间
-p : 显示每个socket的 PID 和 程序name
-l : 只显示在侦听中的socket
-a : 显示在侦听中和不在侦听中的socket
--numeric-hosts : 输出host
--numeric-ports : 输出端口
--numeric-users : 输出用户id

输出

Proto : socket使用的协议。
Recv-Q : 表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走。
Send-Q :对方没有收到的数据或者说没有Ack的,还是本地缓冲区。

  • Recv-Q Send-Q分别表示网络接收队列,发送队列。Q是Queue的缩写。
  • 这两个值通常应该为0,如果不为0可能是有问题的。packets在两个队列里都不应该有堆积状态。可接受短暂的非0情况。短暂的Send-Q队列发送pakets非0是正常状态。
  • 如果接收队列Recv-Q一直处于阻塞状态,可能是遭受了拒绝服务 denial-of-service 攻击。
  • 如果发送队列Send-Q不能很快的清零,可能是有应用向外发送数据包过快,或者是对方接收数据包不够快。
    Local Address : 本地地址
    Foreign Address : 目标地址
    State :socket的状态。 UDP连接没有状态为空
State 详解(详细解释戳:https://www.jianshu.com/p/a546cd27f96e):
  • ESTABLISHED : socket已建立连接 (三次握手中的第三次)
  • SYN_SENT : TCP主动打开,发送SYN (三次握手中的第一次)
  • SYN_RECV : 接受到SYN,并且发送SYN,ACK(SYN+1)(三次握手中第二次的状态)
  • FIN_WAIT1 : 应用主动关闭连接状态 (四次握手第一次的状态 )
  • FIN_WAIT2 : 对方响应关闭请求后的状态(ACK=FIN+1)四次握手第二次的状态 )
  • TIME_WAIT : 接收到对方已经关闭连接的响应后进入的状态。(四次握手的第三次)
  • CLOSED :连接已经关闭
  • CLOSE_WAIT : 远端接到被动关闭请求,发送ack。
  • LAST_ACK : 远端传输已经关闭,发送已关闭信息。
  • LISTEN : socket正在监听传入的连接。这些socket不包括在输出中,除非 --listening (-l) or --all (-a)
  • CLOSING :连接已经关闭时的状态,但是socket四次握手中的数据还没有发送完。
  • UNKNOWN : 未知状态。
    User : 用户名或者uid
    Pid :进程id

使用方法

netstat -a 显示所有socket

Active Internet connections (including servers)
Proto Recv-Q Send-Q  Local Address          Foreign Address        (state)
tcp4       0      0  10.222.69.194.52290    111.202.100.40.http    ESTABLISHED
tcp4       0      0  10.222.69.194.52289    10.210.97.18.https     ESTABLISHED
tcp4       0      0  10.222.69.194.52281    10.210.97.18.https     ESTABLISHED
tcp4       0      0  10.222.69.194.52278    10.81.254.21.ndl-aas   ESTABLISHED
tcp4      31      0  10.222.69.194.52277    202.108.23.152.https   CLOSE_WAIT
tcp4       0      0  10.222.69.194.52276    124.67.215.8.https     ESTABLISHED
tcp4       0      0  10.222.69.194.52242    10.81.254.21.ndl-aas   ESTABLISHED
tcp4       0      0  10.222.69.194.51973    17.252.156.36.5223     ESTABLISHED
tcp6       0      0  *.51538                *.*                    LISTEN
tcp4       0      0  *.51538                *.*                    LISTEN
tcp4       0      0  10.222.69.194.49809    223.167.84.139.http-al ESTABLISHED
tcp4       0      0  10.222.69.194.49765    172.16.78.199.ssh      ESTABLISHED
tcp4       0      0  10.222.69.194.49738    10.210.97.118.http     CLOSE_WAIT
tcp4       0      0  *.*                    *.*                    CLOSED
tcp4       0      0  localhost.15292        *.*                    LISTEN
tcp46      0      0  *.11300                *.*                    LISTEN
tcp46      0      0  *.49937                *.*                    LISTEN
tcp4       0      0  *.49937                *.*                    LISTEN
tcp4       0      0  10.222.69.194.52291    13.107.5.88.https      TIME_WAIT

netstat -t 显示所有tcp

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost:cslistener    localhost:59022         TIME_WAIT
...

找出运行程序的端口 netstat -ap | grep ssh

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1153/sshd
tcp        0      0 10.13.2.215:22          172.16.78.199:1628      ESTABLISHED 10746/sshd:---
tcp        0      0 10.13.2.215:22          10.55.21.253:27749      ESTABLISHED 6017/sshd:---
tcp        0      0 10.13.2.215:22          172.16.78.199:11353     ESTABLISHED 4387/sshd:---

查找某个端口是否被占用 netstat -ap | grep ':80'

查看连接80端口最多的的IP地址 netstat -tn | grep '127.0.0.1:80' |awk '{print 5}' |awk -F ':' '{print1}'| sort | uniq -c | sort -nr | less

  2796 10.41.1.103
   2746 10.41.1.64
   2712 10.41.1.65
   2684 10.41.1.104

查看TCP连接最多状态 netstat -t |awk '{print $6}' | sort | uniq -c | sort -rn

  64342 TIME_WAIT
    192 FIN_WAIT2
     88 ESTABLISHED
      7 FIN_WAIT1
      3 SYN_RECV
      1 LAST_ACK
      1 Foreign

netstat 命令非常的好用,非常适合查看网络连接的状态。为了更好使用这个命令,最好了解一下TCP的三次握手和四次握手。

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

推荐阅读更多精彩内容

  • 1. 列出所有连接 第一个要介绍的,是最简单的命令:列出所有当前的连接。使用 -a 选项即可。 $ netstat...
    一天的阅读 3,732评论 0 0
  • 为了深入理解TCP协议, 我们需要了解TCP客户端/服务端的状态转移和正确性保持. 建议阅读Unix网络编程卷1第...
    不存在的里皮阅读 852评论 0 0
  • ls命令名称:ls英文原意:list所在路径:/usr/bin/ls执行权限:所有用户功能描述: 显示目录下的内容...
    项目实施整理阅读 271评论 0 0
  • ss 用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息,它可以显示和netstat(参考...
    一天的阅读 3,817评论 1 2
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,044评论 0 4