linux的netstat命令详解

netstat : Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships

 

netstat:输出网络链接状态,路由表,接口统计信息,伪装连接和多播成员资格

 

[root@xxx ~]# netstat |more

Active Internet connections (w/o servers)

Proto  Recv-Q Send-Q     Local Address           Foreign Address                        State

tcp         0             0          10.3.41.11:ssh        static-10-12-9-120.n:54146       ESTABLISHED

udp        0             0          10.3.41.11:55321    192.168.128.111:domain           ESTABLISHED

Active UNIX domain sockets (w/o servers)

Proto RefCnt      Flags       Type              State                 I-Node              Path

unix         2           [ ]          DGRAM                                   11790            @/org/freedesktop/hal/udev_event

unix         2           [ ]          DGRAM                                    8904             @/org/kernel/udev/udevd

unix        10          [ ]          DGRAM                                    11501             /dev/log

unix         3           [ ]          STREAM   CONNECTED        13038             /var/run/dbus/system_bus_socket

unix         3           [ ]          STREAM   CONNECTED        13037

 

输出含义:

Active Internet connections:有源TCP链接

Proto:显示链接的类型,一般分三种:TCP,UDP,UNIX

Recv-Q:接收队列

Send-Q:发送队列

local address:显示在本地哪个IP,哪个端口进行侦听

foreign address:接收哪个外部链接地址,哪个链接端口

state:显示socket状态(端口侦听状态)

Active UNIX domain socket:有源UNIX域套接口(用于主机内部通讯,速度达一倍之多)

RefCnt:显示连接到本套接口上的进程号

type:套接口类型

state:连接状态

Path:表示连接到套接口的其它进程使用的路径名

 

state各个状态详解

listen:侦听状态,说明端口已开启

SYN_SENT:客户端想链接服务端,通过tcp发送SYN后,等待收到自身SYN的ACK

SYN_RECV:服务端收到客户端发送的链接请求,通过tcp发送自身的SYN和对方SYN的ACK,等待

                       接收自身的ACK

ESTABLISHED:当双方确认连接后,显示连接成功

FIN_WAIT1:某方主动关闭链接之后,向对方发送一个FIN并等待接受ACK

CLOSE_WAIT:被动关闭端收到FIN之后,向对方发送ACK已确认FIN请求,然后等待本地响应关闭

FIN_WAIT2:主动关闭端收到ACK后,进入该状态,等待被动关闭端发送FIN请求

LAST_ACK:被动关闭段一段时间后,接收到本地文件结束符的应用程序调用close而关闭链接,然后

                      通过自身TCP向对方发送FIN,等待对方的ACK

TIME_WAIT:主动关闭段接收到FIN后,通过自身TCP发送一个ACK,进入该状态,等待一段足够长

                       的时候以确保对方TCP接收到ACK,然后确认关闭链接

 

三次握手

第一次:客户端向服务端发送SYN,服务端收到后达成第一次握手

(client:SYN_SENT,server:LISTEN)

第二次:服务端向客户端发送SYN和ACK应答,客户端收到后达成第二次握手

(client:SYN_SENT,server:SYN_RECV)

第三次:客户端向服务断发送ACK应答,服务端收到后达成第三次握手

(client:ESTABLISHED,server:SYN_RECV)

 

四次挥手:

第一次:主动关闭端向被动关闭端发送FIN,被动关闭端收到后达成第一次挥手

(initiative:FIN_WAIT1,passive:ESTABLISHED)

第二次:被动关闭段向主动关闭端发送ACK,主动关闭端收到后达成第二次挥手

(initiative:FIN_WAIT1,passive:CLOSE_WAIT)

第三次:被动关闭端向主动关闭段发送FIN,主动关闭端收到后达成第三次挥手

(initiative:FIN_WAIT2,passive:LAST_ACK)

第四次:主动关闭端向被动关闭端发送ACK,被动关闭端收到后达成第四次挥手

(initiative:TIME_WAIT,passive:LAST_ACK)

 

握手流程:

客户端:listen > SYN_SENT > ESTABLISH

服务端:listen > SYN_RECV > ESTABLSH

 

挥手流程:

主动关闭端:ESTABLISH > FIN_WAIT1 > FIN_WAIT2 > TIME_WAIT > closed > listen

被动关闭端:ESTABLISH > CLOSE_WAIT > LAST_ACK > closed > listen

 

流程图:

 

 

local address的内容详解:

0.0.0.0:22表示侦听本地服务器(自身虚拟机)的所有IPv4地址

::::22表示侦听本地服务器所有ipv6的地址

 

 

netstat 命令参数

-a 列出所有状态的链接,包括侦听和链接

-n 禁止使用别名,以数字形式输出ip和端口

-t 只显示tcp的相关信息

-u 只显示udp的相关信息

-p 显示对应端口的相关程序的绝对路径

-l 只显示listen状态的链接信息

-c 每隔一段时间查询一次状态信息

-s 统计链接信息

-r 输出路由信息

-i 输出多播成员资格名单

-e 输出对应的user和inode

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值