它主要的用法和详解!
(netstat -na 命令),本文主要是说Linux下的netstat工具,然后详细说明一下各种网络连接状态。
netstat -nat |awk ‘{print $}’|sort|uniq -c|sort -nr
.netstat命令详解
其实我常用的是 netstat -tnl | grep (查看443端口是否被占用),如果有当前是root用户,我喜欢用netstat -pnl | grep (还可显示出占用本机443端口的进程PID)。
netstat
功能说明:显示网络状态。
语  法:netstat [-acCeFghilMnNoprstuvVwx] [-A<网络类型>][--ip]
补充说明:利用netstat指令可让你得知整个Linux系统的网络情况。
参  数:
-a 或–all 显示所有连线中的Socket。
-A <网络类型>或–<网络类型> 列出该网络类型连线中的相关地址。
-c 或–continuous 持续列出网络状态。
-C 或–cache 显示路由器配置的快取信息。
-e 或–extend 显示网络其他相关信息。
-F 或 –fib 显示FIB。
-g 或–groups 显示多重广播功能群组组员名单。
-h 或–help 在线帮助。
-i 或–interfaces 显示网络界面信息表单。
-l 或–listening 显示监控中的服务器的Socket。
-M 或–masquerade 显示伪装的网络连线。
-n 或–numeric 直接使用IP地址,而不通过域名服务器。
-N 或–netlink或–symbolic 显示网络硬件外围设备的符号连接名称。
-o 或–timers 显示计时器。
-p 或–programs 显示正在使用Socket的程序识别码和程序名称。
-r 或–route 显示 Routing Table。
-s 或–statistice 显示网络工作信息统计表。
-t 或–tcp 显示TCP 传输协议的连线状况。
-u或–udp 显示UDP传输协议的连线状况。
-v或–verbose 显示指令执行过程。
-V 或–version 显示版本信息。
-w或–raw 显示RAW传输协议的连线状况。
-x或–unix 此参数的效果和指定”-A unix”参数相同。
–ip或–inet 此参数的效果和指定”-A inet”参数相同。 .网络连接状态详解
共有12中可能的状态,前面11种是按照TCP连接建立的三次握手和TCP连接断开的四次挥手过程来描述的。
)、LISTEN:首先服务端需要打开一个socket进行监听,状态为LISTEN./* The socket is listening for incoming connections. 侦听来自远方TCP端口的连接请求 */ )、 SYN_SENT:客户端通过应用程序调用connect进行active open.于是客户端tcp发送一个SYN以请求建立一个连接.之后状态置为SYN_SENT./*The socket is actively attempting to establish a connection. 在发送连接请求后等待匹配的连接请求 */ )、 SYN_RECV:服务端应发出ACK确认客户端的 SYN,同时自己向客户端发送一个SYN. 之后状态置为SYN_RECV/* A connection request has been received from the network. 在收到和发送一个连接请求后等待对连接请求的确认 */ )、ESTABLISHED: 代表一个打开的连接,双方可以进行或已经在数据交互了。/* The socket has an established connection. 代表一个打开的连接,数据可以传送给用户 */ )、 FIN_WAIT1:主动关闭(active close)端应用程序调用close,于是其TCP发出FIN请求主动关闭连接,之后进入FIN_WAIT1状态./* The socket is closed, and the connection is shutting down. 等待远程TCP的连接中断请求,或先前的连接中断请求的确认 */ )、CLOSE_WAIT:被动关闭(passive close)端TCP接到FIN后,就发出ACK以回应FIN请求(它的接收也作为文件结束符传递给上层应用程序),并进入CLOSE_WAIT./* The remote end has shut down, waiting for the socket to close. 等待从本地用户发来的连接中断请求 */ )、FIN_WAIT2:主动关闭端接到ACK后,就进入了 FIN-WAIT- ./* Connection is closed, and the socket is waiting for a shutdown from the remote end. 从远程TCP等待连接中断请求 */ )、LAST_ACK:被动关闭端一段时间后,接收到文件结束符的应用程 序将调用CLOSE关闭连接。这导致它的TCP也发送一个 FIN,等待对方的ACK.就进入了LAST-ACK ./* The remote end has shut down, and the socket is closed. Waiting for acknowledgement. 等待原来发向远程TCP的连接中断请求的确认 */ )、TIME_WAIT:在主动关闭端接收到FIN后,TCP 就发送ACK包,并进入TIME-WAIT状态。/* The socket is waiting after close to handle packets still in the network.等待足够的时间以确保远程TCP接收到连接中断请求的确认 */ )、CLOSING: 比较少见./* Both sockets are shut down but we still don’t have all our data sent. 等待远程TCP对连接中断的确认 */ )、CLOSED: 被动关闭端在接受到ACK包后,就进入了closed的状态。连接结束./* The socket is not being used. 没有任何连接状态 */ )、UNKNOWN: 未知的Socket状态。/* The state of the socket is unknown. */ SYN: (同步序列编号,Synchronize Sequence Numbers)该标志仅在三次握手建立TCP连接时有效。表示一个新的TCP连接请求。
ACK: (确认编号,Acknowledgement Number)是对TCP请求的确认标志,同时提示对端系统已经成功接收所有数据。
FIN: (结束标志,FINish)用来结束一个TCP回话.但对应端口仍处于开放状态,准备接收后续数据。 PS: 在windows下有个小工具挺好的,TCPView is a Windows program that will show you detailed listings of all TCP and UDP endpoints on your system, including the local and remote addresses and state of TCP connections.见 http://technet.microsoft.com/en-us/sysinternals/bb897437 ; 当然如果要详细分析数据包,可选用sniffer、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 系统连接状态篇: .查看TCP连接状态
netstat -nat |awk ‘{print $}’|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(key in state) print 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 | awk ‘{print $NF}’ | grep -v ‘[a-z]‘ | sort | uniq -c .查找请求数请20个IP(常用于查找攻来源):
netstat -anlp|grep |grep tcp|awk ‘{print $}’|awk -F: ‘{print $}’|sort|uniq -c|sort -nr|head -n20 netstat -ant |awk ‘/:/{split($,ip,”:”);++A[ip[]]}END{for(i in A) print A[i],i}’ |sort -rn|head -n20 .用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port -c | awk -F”.” ‘{print $″.”$″.”$″.”$}’ | sort | uniq -c | sort -nr |head - .查找较多time_wait连接
netstat -n|grep TIME_WAIT|awk ‘{print $}’|sort|uniq -c|sort -rn|head -n20 .找查较多的SYN连接
netstat -an | grep SYN | awk ‘{print $}’ | awk -F: ‘{print $}’ | sort | uniq -c | sort -nr | more .根据端口列进程
netstat -ntlp | grep | awk ‘{print $}’ | cut -d/ -f1 网站日志分析篇1(Apache): .获得访问前10位的ip地址
cat access.log|awk ‘{print $}’|sort|uniq -c|sort -nr|head -
cat access.log|awk ‘{counts[$()]+=}; END {for(url in counts) print counts[url], url}’ .访问次数最多的文件或页面,取前20
cat access.log|awk ‘{print $}’|sort|uniq -c|sort -nr|head - .列出传输最大的几个exe文件(分析下载站的时候常用)
cat access.log |awk ‘($~/\.exe/){print $ ” ” $ ” ” $ ” ” $}’|sort -nr|head - .列出输出大于200000byte(约200kb)的exe文件以及对应文件发生次数
cat access.log |awk ‘($ > && $~/\.exe/){print $}’|sort -n|uniq -c|sort -nr|head - .如果日志最后一列记录的是页面文件传输时间,则有列出到客户端最耗时的页面
cat access.log |awk ‘($~/\.php/){print $NF ” ” $ ” ” $ ” ” $}’|sort -nr|head - .列出最最耗时的页面(超过60秒的)的以及对应页面发生次数
cat access.log |awk ‘($NF > && $~/\.php/){print $}’|sort -n|uniq -c|sort -nr|head - .列出传输时间超过 秒的文件
cat access.log |awk ‘($NF > ){print $}’|sort -n|uniq -c|sort -nr|head - .统计网站流量(G)
cat access.log |awk ‘{sum+=$} END {print sum///}’ .统计404的连接
awk ‘($ ~//)’ access.log | awk ‘{print $,$}’ | sort . 统计http status.
cat access.log |awk ‘{counts[$()]+=}; END {for(code in counts) print code, counts[code]}'
cat access.log |awk '{print $9}'|sort|uniq -c|sort -rn .蜘蛛分析
查看是哪些蜘蛛在抓取内容。
/usr/sbin/tcpdump -i eth0 -l -s -w - dst port | strings | grep -i user-agent | grep -i -E 'bot|crawler|slurp|spider' 网站日分析2(Squid篇) .按域统计流量
zcat squid_access.log.tar.gz| awk '{print $10,$7}' |awk 'BEGIN{FS="[ /]"}{trfc[$4]+=$1}END{for(domain in trfc){printf "%s\t%d\n",domain,trfc[domain]}}' 效率更高的perl版本请到此下载:http://docs.linuxtone.org/soft/tools/tr.pl 数据库篇
.查看数据库执行的sql
/usr/sbin/tcpdump -i eth0 -s -l -w - dst port | strings | egrep -i 'SELECT|UPDATE|DELETE|INSERT|SET|COMMIT|ROLLBACK|CREATE|DROP|ALTER|CALL' 系统Debug分析篇 .调试命令
strace -p pid .跟踪指定进程的PID
gdb -p pid 详细访问linuxtone.org source url:http://linuxsjun.blog.163.com/blog/static/35771271201141710521644/

netstat命令详解的更多相关文章

  1. Linux netstat命令详解

    Linux netstat命令详解 一  简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多 ...

  2. linux netstat 命令详解

    linux netstat 命令详解 1.功能与说明 netstat 用于显示linux中各种网络相关信息.如网络链接 路由表  接口状态链接 多播成员等等. 2.参数含义介绍 -a (all)显示所 ...

  3. (转)netstat 命令详解

    netstat 命令详解  原文:https://www.cnblogs.com/xieshengsen/p/6618993.html netstat命令是一个监控TCP/IP网络的非常有用的工具,它 ...

  4. Linux之netstat命令详解

    简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Member ...

  5. netstat 命令详解

    netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表.实际的网络连接以及每一个网络接口设备的状态信息,在我的计算机上执行netstat后,其输出结果为:netstat命令是一 ...

  6. linux下netstat命令详解

    简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Member ...

  7. [转]Linux netstat命令详解

    简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Member ...

  8. 基本DOS命令之 netstat 命令详解

     netstat 命令(查看端口) netstat 命令用于显示与 IP .TCP .UDP 和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络连接情况,可以使用 netstat 命令查看 ...

  9. 【转】Linux netstat命令详解,高级面试必备

    简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Member ...

随机推荐

  1. form表单提交controller层接收到的值为乱码的问题

    今天遇到个中文乱码问题,大体情况是这样的:前台有一个form表单,其中有几个input的控件,值是带中文的,form表单只设置了id='form1' method='post'  action='xx ...

  2. java 与c#比较

    1.开发周期方面:c#比java开发周期更快2.java出现的时间更长.开源性广.跨平台性好3.c#较为封闭.后出于java4.c#有无符号类型.java没有5.java与c#都有值类型.但是java ...

  3. 20145337 《Java程序设计》第五周学习总结

    20145337 <Java程序设计>第五周学习总结 教材学习内容总结 第八章 JAVA中的所有错误都会被包装成对象,如果你愿意,可以尝试执行并捕捉代表错误的对象后做一些处理.使用了try ...

  4. ServletContext读取Web应用中的资源文件

    package cn.itcast; import java.io.FileInputStream; import java.io.IOException; import java.io.InputS ...

  5. 点击某个按钮弹出 photoswip

    var openPhotoSwipe = function() { var pswpElement = document.querySelectorAll('.pswp')[0]; // build ...

  6. ExtJS4笔记 Data

    The data package is what loads and saves all of the data in your application and consists of 41 clas ...

  7. Ubuntu 安装java环境搭建

    1.下载JDK 8从http://www.oracle.com/technetwork/java/javasebusiness/downloads/选择下载JDK的最新版本 JDK 8. 2.解压文件 ...

  8. Gradle--ubuntu

    在Ubuntu安装Gradle也是很简单.切记请勿使用apt-get安装Gradle.因为Ubuntu源的Gradle实在太旧.我用的搜狐的源,竟然是2011年. 下面是安装步骤: 1.在官网下载最新 ...

  9. SqlServer判断表是否存在

    .判断数据表是否存在 方法一: use yourdb; go if object_id(N'tablename',N'U') is not null print '存在' else print '不存 ...

  10. 【五子棋AI循序渐进】——多线程搜索

    关于多线程搜索,有很多方法来实现,很多文章推荐基于MTD(F)的方式.好处不言而喻,不过我的程序中采用的是基于PVS的多线程搜索.实现起来主要是这几个方面问题需要解决: 1.置换表的互斥访问. 2.局 ...