1 问题简介
TCP连接数可以反映当前服务器的运行状态,统计出当前服务器各种类型的tcp连接可以用于服务运行监控和压力测试,netstat可以查看当前服务器的所有连接状况,利用netstat和awk工具可以进行tcp连接的统计。下面是普通netstat命令的结果:
图1 netstat运行结果
要充分理解这个结果还得从TCP的原理讲起
2 TCP的介绍
关于TCP部分的知识,仔细来讲,几本大砖头都讲不完,下面通过一张TCP的状态机把最基本的原理讲一讲:
2.1 TPC状态机
图2 TCP状态机
一个完整的TCP连接,有三个阶段:
- TCP三次握手
- 数据传送
- TCP四次挥手
几个关键值:
SYN: (同步序列编号,Synchronize Sequence Numbers)该标志仅在三次握手建立TCP连接时有效,表示一个新的TCP连接请求。
ACK: (确认编号,Acknowledgement Number)是对TCP请求的确认标志,同时提示对端系统已经成功接收所有数据。
FIN: (结束标志,FINish)用来结束一个TCP回话,但对应端口仍处于开放状态,准备接收后续数据。