2021-08-04 netstat

netstat基本使用

netstat

  netstat十一个功能很强大的网络信息统计工具。它可以打印本地网卡接口上的全部连接、路由表信息、网卡接口信息等。我们主要利用的是上述功能中的第一个,即显示TCP连接及其状态信息。毕竟,要获得路由表信息和网卡接口信息,我们可以使用输出内容更丰富的route和ifconfig命令。

  netstat命令常用的选项包括:

  • -n,使用IP地址表示主机,而不是主机名;使用数字表示端口号,而不是服务名称。
  • -a,显示结果中也包含监听socket(man 手册中指 all)。
  • -t,显示TCP连接。
  • -u,显示UDP连接。
  • -r,显示路由信息。
  • -i,显示网卡接口的数据流量。
  • -c,每隔1s输出一次。
  • -o,显示socket定时器(比如保活定时器)的信息。
  • -p,显示socket所属的进程的PID和名字。

  下面我们裕兴websrv服务器,并执行telnet命令对它发起一个连接请求:

$ ./websrv 127.0.0.1 13579 &
$ telnet 127.0.0.1 13579

  然后执行命令netstat -nat | grep 127.0.0.1:13579查看连接状态,结果如下:

Proto 	Recv-Q 	Send-Q 		Local Address 		Foreign Address 		State
tcp		0			0		127.0.0.1:13579		0.0.0.0:*				LISTEN
tcp		0			0		127.0.0.1:13579		127.0.0.1:48220			ESTABLISHED
tcp		0			0		127.0.0.1:48220		127.0.0.1:13579			ESTABLISHED

  由以上结果可见,netstat的每行输出都包含如下6个字段(默认情况):

  • Proto,协议名。
  • Recv-Q,socket内核接受缓冲区中尚未被应用程序读取的数据量。
  • Send-Q,未被对方确认的数据包。
  • Local Address,本端的IP地址和端口号。
  • Foreign Address,对方的IP地址和端口号。
  • State,socket的状态。对于无状态协议,比如UDP协议,这一字段将显示为空。而对面向连接的协议而言,netstat支持的State包括ESTABLISHED、SYN_SENT、SYN_RCVD、FIN_WEIT1、TIME_WAIT、CLOSE、CLOSE_WAIT、LAST_ACK、LISTEN、CLOSING、UNKNOWN。它们的含义和图 3-8 中的同名状态一致。

在这里插入图片描述

  上面的输出中,第1行表示本地socket地址127.0.0.1:13579处于LISTEN状态,并等待任何远端socket(用0.0.0.0:*表示)对它发起连接。第2行表示服务器和远端地址127.0.0.1:48220建立了一个连接。第3行只是从客户端的角度重复第2行信息表示的这个连接,因为我们是在同一台机器上运行服务器程序(websrv)和客户端程序(telnet)的。

  在服务器程序开发中,我们一定要确保每个连接在任一时刻都处于万门期望的状态。因此我们应该习惯于使用netstat命令。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值