tcp连接状态以及netstat命令

tcp是可靠的数据传输协议,相对于udp来说,基于udp的通信速度更快,但是没有数据的完整性的保证,更重要的是udp不会保证数据是否到达了目的方。

TCP协议建立的tcp连接是有状态的,称之为tcp的有限状态机

SYN_SENT:主动建立连接的一方发起连接建立请求,也就是SYN=1,当发出同步位,状态转换位SYN_SENT

SYN_RCVD:服务器端收到了客户端发送的同步报文,按照tcp协议的规定,回复ACK报文同时SYN位至1,此时服务器的状态转换为SYN_RCVD

ESTABLISHED:当客户端收到服务器端发来的SYN确认报文,客户端就由此转入连接建立状态(established),并向服务器端回送确认报文

状态为ESTABLISHED,双方就可以发送数据进行通信了,但是TCP又有所谓的长连接和短连接,一般在应用程序没有启用keepalived的情况下,TCP连接建立之后发送一个数据请求得到结果后就断开连接,而长连接就是在一个数据请求之后并不立即断开,而等待应用程序定义的TIMEOUT等条件满足之后断开(或者收到了对方的FIN)

tcp建立连接的时候称w为三次握手,一般都是由客户端先向服务器端发起连接请求

tcp断开连接的时候称为四次挥手,在断开连接的时候有可能是客户端发起的也有可能是服务器端先发起的

在这里选用如图,客户端先发起断开连接请求(但是双方都要发送FIN)

FIN_WAIT1:主动方发起断开连接请求等待对方确认,将自身的状态转入FIN-WAIT1

CLOSE-WAIT:被动方收到FIN报文,回复ACK,将状态转为CLOSE_WAIT

在tcp的连接中,在自己发出FIN位之后就不能再发送数据,但是可以读取,所以在被动方回复了主动放的FIN之后,只要自己还没有发送FIN位,就可以发送还没有发送完的数据

 FIN_WAIT2:主动方接收到对方的ACK,将状态转入FIN_WAIT2

LAST_ACK:被动方发送FIN,将自身tcp连接状态转为LAST_ACK,意思就是等待最后一个确认报文之后就可以关闭连接

TIME_WAIT:主动方收到了被动方的FIN,将tcp连接状态转为TIME_WAIT,在这里主动方会等待2msl的时间之后转入closed

 closed:被动方收到确认报文后,关闭连接

在linxu上,例如web服务的搭建维护调优过程中,我们就经常需要关注服务器的连接状况以最大化的发挥服务器的性能

netstat命令是在linux中最常用的显示网络子系统的命令,可以显示路由表,某个地址上建立的连接,tcp连接的状态等等

netstat

--route ,-r显示路由表

--groups 显示多播组相关信息

-t:显示tcp连接相关

-u:显示udp连接相关

-p:显示进程名称

-n:以数字方式替换显示端口等信息

-l:显示处于监听状态的

-a:显示全部监听和非监听状态的套接字信息

查看服务器上开启的监听服务:

netstat -tunlp(以数字形式显示哪些进程监听在tcp或者udp的某些端口)

统计80端口连接数

netstat -nat | grep -i "80" | wc -l

查看http并发连接请求及tcp状态

netstat -nat | grep -i "80"

查看已经建立的http连接数

netstat -nat | grep ".*80.*ESTABLISHED"

查看httpd的相关进程数

ps aux | grep httpd |wc -l或则是ps -ef | grep httpd | wc -l

时间: 2024-10-22 17:44:21

tcp连接状态以及netstat命令的相关文章

查看 并发请求数及其TCP连接状态

服务器上的一些统计数据: 1)统计80端口连接数netstat -nat|grep -i "80"|wc -l 2)统计httpd协议连接数ps -ef|grep httpd|wc -l 3).统计已连接上的,状态为"establishednetstat -na|grep ESTABLISHED|wc -l 4).查出哪个IP地址连接最多,将其封了.netstat -na|grep ESTABLISHED|awk {print $5}|awk -F: {print $1}|s

查看并发请求数及其TCP连接状态

服务器上的一些统计数据: 1)统计80端口连接数 netstat -nat|grep -i "80"|wc -l 2)统计httpd协议连接数 ps -ef|grep httpd|wc -l 3).统计已连接上的,状态为"established netstat -na|grep ESTABLISHED|wc -l 4).查出哪个IP地址连接最多,将其封了. netstat -na|grep ESTABLISHED|awk {print $5}|awk -F: {print $

zabbix监控硬盘指标,tcp连接状态

zabbix自动发现硬盘脚本disk_discovery.py [[email protected] etc]$ cat disk_discovery.py #/usr/bin/python import subprocess import json args="cat /proc/diskstats |grep -E '\ssd[a-z]\s|\sxvd[a-z]\s|\svd[a-z]\s'|awk '{print $3}'|sort|uniq 2>/dev/null" t=

TCP三次握手及TCP连接状态 TCP报文首部格式

建立TCP连接时的TCP三次握手和断开TCP连接时的4次挥手整体过程如下图: 开个玩笑 ACK: TCP协议规定,只有ACK=1时有效,连接建立后所有发送的报文ACK必须为1 SYN(SYNchronization同步):在连接建立用来同步序号.当SYN=1而ACK=0时,表明这是一个连接请求报文.对方若同意建立连接,则应在响应报文中使用SYN=1 ACK=1因此,SYN置1表示这是一个连接请求或连接接受报文 FIN(FINIS)即完,终结的意思,用来释放一个连接.当FIN=1时,表明此报文段发

TCP连接状态及TIME_WAIT

参考: TCP连接中的TIME_WAIT状态 - sunnydogzhou的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/sunnydogzhou/article/details/6572071 TCP连接状态详解及TIME_WAIT过多的解决方法_小强_新浪博客 http://blog.sina.com.cn/s/blog_8e5d24890102w9yi.html TCP协议三次握手连接四次握手断开和DOS攻击 - NowOrNever - 博客频道 -

TCP连接状态详解及TIME_WAIT过多的解决方法

TCP建立连接的三次握手过程,以及关闭连接的四次握手过程. TCP建立连接的三次握手过程,以及关闭连接的四次握手过程. 1.建立连接协议(三次握手)(1)客户端发送一个带SYN标志的TCP报文到服务器.这是三次握手过程中的报文1. (2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志.因此它表示对刚才客户端SYN报文的回应:同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯. (3) 客户必须再次回应服务段一个ACK报文,这是报文段3. 2.连接

查看http的并发请求数及其TCP连接状态

统计80端口的连接数据 netstat -nat | grep -i "80" | wc -l 统计httpd协议连接数 ps -ef | grep httpd | wc -l 统计已连接的,状态为establish的 netstat -na | greo ESTABLISH | wc -l 查出那个IP连接最多,并将其封掉 netstat -na | grep ESTABLISH | awk {print $5} | awk -F:{print $1}| sort | uniq -c

tcp连接状态查看

linux常用查看tcp状态工具netstat和ss,这两个工具查看时都有1个Recv-Q和Send-Q 解释如下: 对应处于Listen状态的套接字: Recv-Q表示已建立连接队列中连接个数(等待accept), Send-Q标识backlog大小(ubuntu12.04上测试时发现Recv-Q一般最大比Send-Q大1)

ZABBIX监控TCP连接状态

一.获取监控数据 # /bin/netstat -an|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}' LISTEN 6 ESTABLISHED 1 TIME_WAIT 1 TCP各监控状态描述 ESTABLISHED socket已经建立连接 CLOSED socket没有被使用,无连接 CLOSING 服务器端和客户端都同时关闭连接 CLOSE_WAIT 等待关闭连接 TIME_WAIT 表示收到了对方的FIN报文,并发送出了ACK报文