netstat命令的功能和用法,netstat-s命令的作用

它主要的用法和详解!(netstat -na 命令),本文主要是说Linux下的netstat工具,然后详细说明一下各种网络连接状态。netstat -nat

7c76e0f4-adf1-4bf8-81ac-fa466f90f7f6~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717791100&x-signature=xOBuezkmnQ%2FoKke4JzYfJgkxkTw%3D

主要用法及详细解释!

(netstat -na命令),本文主要介绍Linux上的netstat工具,然后详细介绍各种网络连接状态。

netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -nr

1.netstat命令详细解释

其实我经常用的是netstat -tnl | grep 443(看443端口是否被占用)。如果您当前是root 用户,请使用netstat -pnl | grep 443 (您还可以看到端口443 的PID)。进程占用您计算机上的端口443)。

净统计

功能说明: 显示网络状态。

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

补充说明:可以使用netstat命令来了解整个Linux系统的网络状态。

参数:

-a 或all 显示所有连接的套接字。

-A nettype 或nettype 列出与此网络类型的连接关联的地址。

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

-C 或-cache 显示路由器配置缓存信息。

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

-F 或-fib 显示FIB。

-g 或groups 显示多播功能组的成员列表。

-h 或help 在线帮助。

-i 或interfaces 显示网络接口信息形式。

-l 或listening 显示正在侦听的服务器套接字。

-M 或-masquerade 显示伪装网络连接。

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

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

-o 或timers 显示计时器。

-p 或programs 显示使用Socket 的程序标识符和程序名称。

-r 或route 显示路由表。

-s或–statistic 显示网络运行信息的统计表。

-t 或tcp 显示TCP 传输协议的连接状态。

-u或-udp 显示UDP传输协议的连接状态。

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

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

-w 或-raw 显示RAW 传输协议的连接状态。

-x 或unix 此参数与指定“-A unix”参数具有相同的效果。

-ip 或-inet 该参数与指定“-A inet”参数具有相同的效果。

2.网络连接状态详解

总共有12 种可能的状态,其中前11 种是根据TCP 连接建立的3 路握手和TCP 连接拆除的4 路挥手过程来描述的。

1)、LISTEN: 首先服务器必须打开一个socket来监听,状态为LISTEN。 /* Socket 正在侦听来自远程TCP 端口的连接请求*/

2)、SYN_SENT:客户端通过应用程序调用connect并执行主动打开。然后客户端tcp通过发送SYN请求建立连接。然后状态设置为SYN_SENT。 /* 套接字正在积极尝试建立自身。发送连接请求后,等待匹配的连接请求*/

3) SYN_RECV: 服务器必须在发送SYN 到客户端的同时发送ACK 来确认客户端的SYN。然后状态为SYN_RECV/* 从网络收到连接请求。接收并发送连接请求后,确认连接请求*/

4)ESTABLISHED:代表开放连接,双方可以交换数据或已经交换过数据。 /* 套接字有一个已建立的连接,代表一个打开的连接,可以向用户发送数据。 */

5)、FIN_WAIT1:主动关闭(Active Close)终止由于应用程序调用close,其TCP发送FIN请求主动关闭连接,进入FIN_WAIT1状态。 /* 套接字关闭并关闭连接。等待远程TCP连接中止请求,或确认先前的连接中止请求*/

6) CLOSE_WAIT: 被动关闭端TCP收到FIN后,发送ACK响应FIN请求(该回执也作为文件结束传递给上层应用程序),并进入CLOSE_WAIT。 /* 远程端已关闭。等待套接字关闭。等待来自本地用户的连接中止请求*/。

7)、FIN_WAIT2:收到ACK后主动关闭结束,进入FIN-WAIT-2。 /* 连接已关闭,套接字正在等待来自远程TCP 的连接中止请求。 */

8) LAST_ACK: 被动关闭终端一段时间后,收到文件结束字符的应用程序调用CLOSE 来关闭连接。这导致TCP也发送FIN并等待对方的ACK。 /* 远程端正在关闭并等待第一个发送的连接。远程TCP 中断。确认请求*/

9)、TIME_WAIT: TCP在主动端收到FIN后,发送ACK包,进入TIME-WAIT状态。 /* 即使套接字关闭后,它仍然在等待处理网络中的数据包。等待足够的时间以确保远程TCP 收到连接中止请求的确认。 */

10)、CLOSING: 比较少见。 /* 两个套接字都已关闭,但在远程TCP 发现连接中断之前,所有数据尚未发送。 */

11)、被动关闭端收到CLOSED: ACK包后,进入关闭状态。连接将被终止。 /* 套接字未在使用中。 */

12)、UNKNOWN: 未知套接字状态。 /* 套接字状态未知*/

SYN:(序列号同步) 该标志仅在3 次握手期间建立TCP 连接时有效。代表一个新的TCP连接请求。

ACK:(确认号)是对TCP 请求的确认,表明对等系统已成功接收所有数据。

FIN:(终止标志,FINish)用于终止一个TCP会话,但相应的端口仍然打开并准备接收后续数据。

PS:TCPView是一个Windows程序,它显示系统上所有TCP和UDP端点的详细列表,包括本地和远程地址以及TCP连接状态。请参阅http://technet.microsoft。com/en-us/sysinternals/bb897437;当然,如果你想详细分析数据包,可以使用更强大的工具,例如嗅探器或Wireshark。

参考:

http://linux.sheup.com/linux/4/31225.html

http://hi.baidu.com/mqbest_come_on/blog/item/18526dcef73d791a00e928e5.html

http://www.daxigua.com/archives/1355

系统连接状态:

1.检查TCP连接状态

netstat -nat |awk ‘{print $6}’|sort|uniq -c|sort -rn

netstat -n | awk ‘/^tcp/{++S[$NF]};END {for(a in S) print a, S[a]}’ 或

netstat -n | awk ‘/^tcp/{++state[$NF]} END {for(state 的key) 打印key,”\t”,state[key]}’

netstat -n | awk ‘/^tcp/{++arr[$NF]};END {for(k in arr) print k,”\t”,arr[k]}’

netstat -n |awk ‘/^tcp/{print $NF}’|sort|uniq -c|sort -rn

netstat -ant | ‘{print $NF}’ | grep -v ‘[a-z]’ |

2. 查看对20个IP的请求数量(通常用于查找攻击源)。

netstat -anlp|grep 80|grep tcp|awk ‘{print $5}’|awk -F: ‘{print $1}’|sort|uniq -c|sort -nr|head -n20

netstat -ant |awk ‘/:80/{split($5,ip,”:”);++A[ip[1]]}END{for(i in A) print A[i],i}’ |sort -rn|头-n20

3.使用tcpdump拦截80端口访问,看看谁的最高。

tcpdump -i eth0 -tnn dst 端口80 -c awk -F”.” ‘{print $1.”$2”.”$3.”$4}’ | 排序-nr |

4.查找更多time_wait连接

netstat -n|grep TIME_WAIT|awk ‘{print $5}’|sort|uniq -c|sort -rn|head -n20

5.查找更多SYN连接

| netstat -an | awk ‘{print $5}’ | 排序

6. 按端口列出进程。

netstat -ntlp 80 | awk ‘{print $7}’ |

网站日志分析第1部分(Apache):

1.获取访问次数前10的IP地址

cat access.log|awk ‘{print $1}’|sort|uniq -c|sort -nr|head -10

cat access.log|awk ‘{counts[$(11)]+=1} END {for(URL in counts) print counts[url], url}’

2. 获取访问次数最多的前20 个文件或页面

cat access.log|awk ‘{print $11}’|sort|uniq -c|sort -nr|head -20

3. 列出发送最多的exe文件(分析下载站点时经常使用)。

cat access.log |awk ‘($7~/\.exe/){print $10 ” ” $1 ” ” $4 ” ” ” $7}’|sort -nr|head -20

4、列出输出大于200000字节(约200kb)的exe文件以及相应文件出现的次数。

cat access.log |awk ‘($10 200000 $7~/\.exe/){print $7}’|sort -n|uniq -c|sort -nr|head -100

5. 如果日志中的最后一列记录了页面文件传输时间,则会列出到达客户端所需时间最长的页面。

cat access.log |awk ‘($7~/\.php/){print $NF ” ” $1 ” ” $4 ” ” ” $7}’|sort -nr|head -100

6. 列出耗时最多(超过60秒)的页面以及相应页面出现的次数。

cat access.log |awk ‘($NF 60 $7~/\.php/){print $7}’|sort -n|uniq -c|sort -nr|head -100

7. 列出传输时间超过30 秒的文件。

cat access.log |awk ‘($NF 30){print $7}’|sort -n|uniq -c|sort -nr|head -20

8、网站流量统计(G)

cat access.log |awk ‘{sum+=$10} END {print sum/1024/1024/1024}’

9. 404连接统计

awk ‘($9 ~/404/)’ awk ‘{print $9,$7}’ | 排序

10.统计http状态。

cat access.log |awk ‘{counts[$(9)]+=1} END {for(counts 中的代码) 打印代码, counts[code]}’

cat access.log |awk ‘{print $9}’|sort|uniq -c|sort -rn

10. 蜘蛛分析

查看哪些蜘蛛正在抓取您的内容。

/usr/sbin/tcpdump -i eth0 -l -s 0 -w – dst 端口80 | ‘bot|crawler|slurp|spider’

网站日常分析2(Squid)

2. 按域流量统计

zcat squid_access.log.tar.gz| awk ‘{print $10,$7}’ |awk ‘BEGIN{FS='[ /]’}{trfc[$4]+=$1}END{for(trfc 的域){printf ‘%s\t%d\n’,域,trfc[域]}}’

如需更高效的Perl 版本,请从:http://docs.linuxtone.org/soft/tools/tr.pl 下载。

数据库

1.查看数据库执行的SQL

/usr/sbin/tcpdump -i eth0 -s 0 -l -w – dst 端口3306 |egrep -i ‘选择|更新|删除|插入|设置|提交|回滚|创建|删除|更改|调用’

系统调试分析

1. 调试命令

strace -p pid

2.跟踪指定进程的PID

gdb -p pid

原创文章,作者:小条,如若转载,请注明出处:https://www.sudun.com/ask/84334.html

(0)
小条's avatar小条
上一篇 2024年6月1日 上午4:11
下一篇 2024年6月1日 上午4:11

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注