TCP关闭问题详细介绍
摘要: 三次握手,四次挥手
意思是tcp建立连接时需要三次交互来完成,A发起连接
A --- SYN --> B A <-- SYN + ACK --- B (1) A --- ACK --> B
而关闭tcp连接需要四次交互,A发起关闭
A --- FIN --> B A <-- ACK --- B (1) A <-- FIN --- B A --- ACK --> B (2)
这里在(1)时B开始处于CLOSE_WAIT状态,一直到收到ACK后B才转为CLOSED ,而A就处于TIME_WAIT状态,一直到2MSL(Max Segament Lifetime)才转为CLOSED
为什么需要2MSL才真正转为CLOSED?是因为需要缓冲时间万一B丢失ACK重发FIN的话还可以回复ACK,还有就是2MSL后“迷失”在网络上的包全部失效
大量的 TIME_WAIT 和 CLOSE_WAIT 会造成服务器的连接资源被浪费甚至占满后导致服务器服务拒绝,怎么解决?
解决TIME_WAIT
net.ipv4.tcp_tw_recycle = 1 #开启快速回收,默认0 net.ipv4.tcp_tw_reuse = 1 #开启重用,默认0 net.ipv4.tcp_fin_timeout = 30 # 减小fin_timeout,默认60,单位s
系统参数的配置可以解决time_wait,但是close_wait就没那么简单了
解决CLOSE_WAIT
一般都是服务端的代码问题。
绝大多数都是客户端发起关闭,这样可知HTTP服务器应该会有很多TIME_WAIT,不过当http使用keep-alive后服务端会主动断连。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
相关推荐
-
TCP三次握手及原理
TCP/IP是很多的不同的协议组成,实际上是一个协议组,TCP用户数据报表协议(也称作TCP传输控制协议,Transport Control Protocol.可靠的主机到主机层协议.这里要先强调一下,传输控制协议是OSI网络的第四层的叫法,TCP传输控制协议是TCP/IP传输的6个基本协议的一种.两个TCP意思非相同. ).TCP是一种可靠的面向连接的传送服务.它在传送数据时是分段进行的,主机交换数据必须建立一个会话.它用比特流通信,即数据被作为无结构的字节流. 通过每个TCP传输的字段指定顺
-
tcp、udp、ip协议分析_动力节点Java学院整理
互连网早期的时候,主机间的互连使用的是NCP协议.这种协议本身有很多缺陷,如:不能互连不同的主机,不能互连不同的操作系统,没有纠错功能.为了改善这种缺点,大牛弄出了TCP/IP协议.现在几乎所有的操作系统都实现了TCP/IP协议栈. TCP/IP协议栈主要分为四层:应用层.传输层.网络层.数据链路层,每层都有相应的协议,如下图 所谓的协议就是双方进行数据传输的一种格式.整个网络中使用的协议有很多,所幸的是每一种协议都有RFC文档.在这里只对IP.TCP.UDP协议头做一个分析. 首先来看看在网络
-
基于TCP异步Socket模型的介绍
TCP异步Socket模型C#的TCP异步Socket模型是通过Begin-End模式实现的.例如提供BeginConnect.BeginAccept. BeginSend 和 BeginReceive等. 复制代码 代码如下: IAsyncResult BeginAccept(AsyncCallback callback, object state); AsyncCallback回调在函数执行完毕后执行.state对象被用于在执行函数和回调函数间传输信息. 复制代码 代码如下: Socket
-
tcp socket客户端和服务端示例分享
以下是tcp socket客户端和服务端源码,代码简单大家参考使用吧 Tcp Server 复制代码 代码如下: #include <WinSock2.h>#include <stdio.h>#pragma comment(lib, "ws2_32.lib")int main(){// initial socket libraryWORD wVerisonRequested;WSADATA wsaData;int err;wVerisonRequested =
-
TCP Wrappers防火墙介绍与封锁IP地址的方法
Tcp_Wrappers是一个用来分析TCP/IP封包的软件,类似的IP封包软件还有iptables,linux默认都安装了此软件,作为一个安全的系统,Linux本身有两层安全防火墙,通过IP过滤机制的iptables实现第一层防护,iptables防火墙通过直观地监视系统的运行状况,阻挡网络中的一些恶意攻击,保护整个系统正常运行,免遭攻击和破坏.如果通过了第一层防护,那么下一层防护就是tcp_wrappers了,通过Tcp_Wrappers可以实现对系统中提供的某些服务的开放与关闭.允许和禁止
-
TCP版backshell的VBS脚本代码
'搞一个特殊的站准备用的,没想到,等写完了,洞补上了,郁闷 'by 009, baicker@hotmail.com 'date:071221 Dim revdata set sock=WScript.createobject( "MSWinsock.Winsock" , "WSEvent_" ) set sc=createobject( "WScript.Shell" ) Set fso =CreateObject( "Scripti
-
TCPIP是什么
TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的.它是由ARPANET网的研究机构发展起来的.有时我们将TCP/IP描述为互联网协议集"Internet Protocol Suite",TCP和IP是其中的两个协议(后面将会介绍).由于TCP和IP是大家熟悉的协议,以至于用TCP/IP或IP/TCP这个词代替了整个协议集.这尽管有点奇怪,但没有必
-
常用类之TCP连接类-socket编程
tcp一般用于维持一个可信任的连接,比起udp更为安全可靠,在vs.net,分别有tcpclient和udpclient以及tcplistener,一般开发中基本可以满足需要,但是这个有个很大的弊端,对于维持一个时间较长的,相互交互的来说,数据处理不是很明朗,vs/net中还有一个socket类,用他来做一个客户/服务器段,同时在接发数据的时候,能相互独立,这需要一个异步通讯过程 先实现服务器段: using System; using System.Net; using System.Net.
-
使用批处理重置TCP_IP协议
在XP系统的ghost xp网络组件列表里,有一个Internet 协议,Internet 协议又称为TCP或IP,该"卸载"按钮显示是灰色--不可选状态,如果在特殊情况下我们需要重新安装TCP/IP协议可以通过下面的批处理来完成 复制代码 代码如下: @echo off echo. echo 即将重置 TCP/IP 协议.重置可能会导致网络程序工作异常. echo 只有在 TCP/IP 被破坏导致不能上网时才建议尝试本重置操作. echo. echo 任意键开始重置 TCP/IP,C
-
TCP/IP 中的二进制反码求和算法
以4bit(计算方便一点,和16bit是一样的)做检验和来验证. 建设原始数据为 1100 , 1010 , 0000(校验位) 那么把他们按照4bit一组进行按位取反相加. 1100取反0011 , 1010取反是0101,0011加上0101 是1000,填入到校验位后 1100 , 1010 , 1000 那么这个就是要发送的数据.收到数据后同样进行按位取反相加.0011+0101+0111 =1111:全为1表示正确 另外注意,当地一步计算校验和的时候,有可能相加后最高位会有进位,那么不
随机推荐
- 利用python爬取软考试题之ip自动代理
- Shell脚本生成随机密码的若干种可能
- 用vbs实现取消隐藏文件夹中的所有文件
- PHP之浮点数计算比较以及取整数不准确的解决办法
- return和break的区别解析
- vue 计时器组件的实现代码
- php 获取全局变量的代码
- 如何使用jQuery技术开发ios风格的页面导航菜单
- 用模板的方式创建守护进程代码实例
- MySQL PHP 语法详解及实例代码
- Linux/window下怎样查看某个端口被哪个程序/进程占用
- js jquery获取随机生成id的服务器控件的三种方法
- Android实现摇一摇功能
- 12306 刷票脚本及稳固刷票脚本(防挂)
- springmvc拦截器登录验证示例
- C# .net实现货币转换示例
- 解析Android开发中多点触摸的实现方法
- 解决vue build打包之后首页白屏的问题
- vue2.0+ 从插件开发到npm发布的示例代码
- jdk中动态代理异常处理分析:UndeclaredThrowableException