TCP关闭问题详细介绍
作者:lqh 发布时间:2022-07-26 16:58:02
标签: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后服务端会主动断连。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
来源:https://my.oschina.net/alexqdjay/blog/803993


猜你喜欢
- 说明本文根据https://github.com/liuchengxu/blockchain-tutorial的内容,用python实现的,
- N久没有开始写博客了,总觉得要随便记点东西,岁月蹉跎,曾经搞得一些东西、技术、工具,说丢也就丢了,点点滴滴还是要记录一下吧。。。在windo
- ID3决策树是以信息增益作为决策标准的一种贪心决策树算法# -*- coding: utf-8 -*-from numpy import *
- 1.Cuda的下载安装及配置 首先我们要确定本机是否有独立显卡。在计算机-管理-设备管
- 如果直接对大文件对象调用 read() 方法,会导致不可预测的内存占用。好的方法是利用固定长度的缓冲区来不断读取文件内容。即通过yield。
- 第五个页面name="changenick.php" <? include &q
- Css tranistions允许元素的属性在单位时间内发生平滑的过渡,在阅读完《CSS Transitions Module Level
- 概述Golang 是一个跨平台的新生编程语言. 今天小白就带大家一起携手走进 Golang 的世界. (第 1 课)Go 语言结构在我们开始
- 每次使用python获取查询结果的时候,都会纠结一段时间到底用fetchone和fetchall,用不好容易报错,关键在于没有搞清楚它们之间
- 这些日子,几乎每个人都在谈论XML (Extensible Markup Language),但是很少有人真正理解其含义。XML的推崇者认为
- 本文实例讲述了mysql设置指定ip远程访问连接的方法,分享给大家供大家参考。具体实现方法如下:1. 授权用户root使用密码jb51从任意
- python代码包的用途当你想打包一个目录时,需要现在目录中放一个_init_.py,该文件叫包初始化文件,文件可以为空,也可以放一些代码。
- Python中list的用法:如何创建list,如何表达list中的元素,如何修改和删除list运行环境:Python 3.6.20.空li
- Python2中编码相关的问题很是让人蛋疼,特别是中文字符。比如本文所述的中文网页GBK编码的诡异问题。现象例如:盲录職氓聭聵,其实网页里面
- 分页应该是在我们开发web应用时经常要做的工作,能够比较简洁的实现数据库和视图层的分页十分重要。在数据库层利用hibernate进行数据库的
- 最简单的CGO程序//cgo.gopackage mainimport "C"func main(){ &nb
- 反射的优点它的核心本质其实就是基于字符串的事件驱动,通过字符串的形式去操作对象的属性或者方法一个概念被提出来,就是要明白它的优点有哪些,这样
- 目录概述语法定义接口实现接口空接口接口的组合总结概述Go 语言中的接口就是方法签名的集合,接口只有声明,没有实现,不包含变量。语法定义接口t
- 数据库是什么 在学习ACCESS之前,我们先了解一下什么是“数据库”。我们举个例子来说明这个问题:每个人都有很多亲戚和朋友,为了保持与他们的
- 本文实例讲述了python实现中文输出的两种方法。分享给大家供大家参考。具体如下:方法一:用encode和decode如:import os