TCP状态

TCP连接中包含不同的状态,如何通过状态来判断程序问题尤为重要。

三次握手

图中的connection部分为三次握手。

四次握手

图中的close部分为四次握手。

CLOSE_WAIT

服务器接受到FIN关闭请求后为CLOSE_WAIT状态。

默认情况下,CLOSE_WAIT状态会至少维持2小时的状态。

由于CLOSE_WAIT状态后应该发送ACK请求,状态会变为LAST_ACK,但如果由太多的CLOSE_WAIT状态,则服务器出现错误。

TIME_WAIT

客户端在接受到服务器的FIN关闭请求后为TIME_WAIT状态,最后会自动切换到CLOSE状态。

当服务器主动关闭链接时形成TIME_WAIT状态,会持续2个MSL(Max Segment Lifetime),默认为4分钟。

TIME_WAIT状态下的socket不能被回收使用,具体现象是对于一个处理大量短连接的服务器,如果由于服务器主动关闭客户端的连接,将导致服务器产生大量处于TIME_WAIT状态的socket,严重影响服务器的处理能力。

AWK和NETSTAT命令

# -n表示-net
netstat -n # -v用于定义参数
netstat -net | awk -v i=0,j=0 '{if ($6=="ESTABLISHED") {i++}; if ($6 == "CLOSE_WAIT") {j++}; print i, j, prit $6}' # 最佳用法如下:
# 1. 使用正则/xxx/来匹配行
# 2. $NF代表最后一列的数据,命令中定义了一个字典,最后一列数据作为key
# 3. 每次匹配都会让value递增
# 4. END表示结束
# 5. 最后的{}用来打印key,value
netstat -n | awk '/^tcp/ {++S[$NF]} END {for (a in S) print a, S[a]}'

那么,如何对结果进行排序呢?

# 利用管道
netstat -n | awk '/^tcp/ {++S[$NF]} END {for (a in S) print a, S[a] | "sort -r -n -k2"}' # 其中,sort为外部命令,-r代表从大到小(倒序),-n代表按照数字排序,-k2代表按照第2行排序。

此外,也可以使用asort来实现结果排序。

TCP状态的更多相关文章

  1. TCP 状态详解 -转载

    TCP 是一个面向连接的协议,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接.本节将详细讨论一个TCP 连接是如何建立的以及通信结束后是如何终止的. 建立一个 TCP 连接 TCP使用 ...

  2. TCP建立连接和释放的过程,及TCP状态变迁图

    一.TCP报文格式 下面是TCP报文格式图: 重要字段介绍: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记. (2)确认序号:Ack序号,占 ...

  3. TCP状态转换机说明

    建立一个 TCP 连接TCP 是一个面向连接的协议,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接.本节将详细讨论一个TCP 连接是如何建立的以及通信结束后是如何终止的. TCP使用三 ...

  4. 传输控制协议(TCP) -- TCP状态转换图

    TCP状态转换图 在<UNIX网络编程 卷1>一书中,作者给出了TCP状态转换图(如下).本文也将围绕此图进行阐释. 注:上图红框表示比较特殊的地方. TCP状态转换两条主线 图2-4中的 ...

  5. Linux记录-TCP状态以及(TIME_WAIT/CLOSE_WAIT)分析(转载)

    1.TCP握手定理 2.TCP状态 l  CLOSED:初始状态,表示TCP连接是“关闭着的”或“未打开的”. l  LISTEN :表示服务器端的某个SOCKET处于监听状态,可以接受客户端的连接. ...

  6. 读懂TCP状态转移

    读懂TCP状态转移过程,对理解网络编程颇有帮助,本文将对TCP状态转移过程进行介绍,但各状态(总共11个)含义不在本文介绍的范围,请参考文末的书目列表. TCP状态转换图(state transiti ...

  7. Linux:TCP状态/半关闭/2MSL/端口复用

    TCP状态 CLOSED:表示初始状态. LISTEN:该状态表示服务器端的某个SOCKET处于监听状态,可以接受连接. SYN_SENT:这个状态与SYN_RCVD遥相呼应,当客户端SOCKET执行 ...

  8. TCP状态知识总结(图解)

    tcp状态:   LISTEN:侦听来自远方的TCP端口的连接请求 SYN-SENT:再发送连接请求后等待匹配的连接请求 SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认 ...

  9. zabbix监控tcp状态

    Tcp的连接状态对于我们web服务器来说是至关重要的,从TCP的连接状态中可以看出网络的连接情况,服务器的压力情况,对服务器的并发有很好的直观反映:尤其是并发量ESTAB:或者是syn_recv值,假 ...

随机推荐

  1. js倒计时

    /** * 启动,秒杀倒计时 * totalSecond:剩余秒数 * showTime(tm):回调函数,其中tm={day:"",hour:"",min:& ...

  2. Protocol Buffer搭建及示例

    本文来源:http://www.tanhao.me/code/150911.html/ Protocol Buffer(简称Protobuf或PB)是由Google推出的一种数据交换格式,与传统的XM ...

  3. 详解Eclipse断点

    原文链接:http://www.blogjava.net/jiangshachina/archive/2011/11/20/364367.html 大家肯定都用过Eclipse的调试的功能,在调试的过 ...

  4. AndroidAnnotations(Code Diet)android快速开发框架

    最近用了一款很不错的android快速开发框架,1000行的代码瞬间变成几百行,不用你会后悔的 特点: (1) 依赖注入:包括view,extras,系统服务,资源等等(2) 简单的线程模型,通过an ...

  5. ZoomEye 钟馗之眼 搜索工具 基于API

    #!/usr/bin/env python # -*- coding: utf-8 -*- # Author: f0rsaken import getopt import requests impor ...

  6. 【HTTP】模拟form提交表单(转)

    第一种:WebClient string postString = "arg1=a&arg2=b";//这里即为传递的参数,可以用工具抓包分析,也可以自己分析,主要是for ...

  7. bootstrap入门

    Bootstrap提供了如下重要的特性:❑一套完整的基础CSS插件.❑丰富的预定义样式表.❑一组基于jQuery的JS插件集.❑一个非常灵活的响应式(Responsive)栅格系统,并且崇尚移动先行( ...

  8. 1.2.1 OC概述

    本文并非最终版本,如想关注更新或更正的内容,详见文末的联系方式,如有疏忽和遗漏,欢迎指正. 本文相关目录:(链接为简书链接) ====================== 所属文集:1.2 Objec ...

  9. jquery事件核心源码分析

    我们从绑定事件开始,一步步往下看: 以jquery.1.8.3为例,平时通过jquery绑定事件最常用的是on方法,大概分为下面3种类型: $(target).on('click',function( ...

  10. VirtualPathProvider的使用

    解决的问题,加载数据库中的UI public class Global : System.Web.HttpApplication { protected void Application_Start( ...