- 浏览: 209334 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (391)
- java (18)
- python (3)
- ruby (4)
- linux (48)
- 网络 (9)
- 前端 (2)
- 社会、文化、哲学、人生、百态 (0)
- 工具 (10)
- 下载 (0)
- 常用地址 (0)
- tracert (0)
- mysql (8)
- 开源相关收藏 (1)
- 模块查看依懒 (1)
- watch使用 (1)
- Tcpdump (2)
- easy_install安装 (1)
- 构造redis批量删除脚本 (1)
- MYSQL 性能测试 (1)
- JAVA code encode utf-8 (1)
- linux nginx awk 实时 每妙 (1)
- mkpasswd (1)
- spring security oauth (1)
- jmap dump java memory Analyzer (1)
- JAVA DUMP (1)
- swap linux 过高 解决 (1)
- SWAP (1)
- jmap jstat jstack dump (1)
- java jconsole 的使用 (1)
- git 常用 (1)
- MYSQL 索引 动态 唯一 (1)
- TCP 三次握手 四次挥手 (1)
- linux date (1)
- 删除 空行 注释行 (1)
- maven3 yum linux install repository (1)
- linux git 搭建 (1)
- linux sar eth1 查看 流量 (1)
- sar (1)
- netstat ip 过滤 常用脚本 (1)
- Tcpdump 包分析网络连接过程 (1)
- net ipv4 tcp time wait tw recycle (0)
- /etc/sysctl.conf linux 网络 配置 (1)
- ss 网络连接查看 (比netstat 快很多,实时性牺牲) (1)
- MYSQL 关键字 (1)
- Linux 下多核CPU知识 (1)
- top (1)
- 令牌 证书 (1)
- mysql unix timestamp (1)
- 端口扫描 nc nmap (1)
- 204 http code 状态码 (1)
- ss -s ss -l (1)
- linux 常用 curl (1)
- linux sed 替换 换行 (1)
- centos yum install rpm install (1)
- spring-mvc源码解读 (1)
- 使用iftop查看实时的网络流量 (0)
- linux 命令 expect (1)
- HTTP (1)
- openssl ddif 加密 (1)
- iptables 详解 (1)
- python 虚拟化 VirtualEnv virtualenvwrapper (1)
- nginx (2)
- more less 实用技巧 (1)
- linux nginx (2)
- linux curl https ssl 证书 ca (1)
- openssl (1)
- php mysql linux (1)
- linux 虚拟机 虚拟 xen (0)
- linux 虚拟机 虚拟 xen kvm (1)
- linux perl 单行执行技巧 (1)
- mysql 查看库占用空间 表查用空间 (1)
- linux tcpdump (1)
- maven (1)
- sun.misc.Unsafe (1)
- OpenSSL生成证书 (1)
- http://blog.csdn.net/zzulp/article/details/8018751 (1)
- maven 本地 jar dependency (1)
- 计算JAVA代码行数最简单命令 sed (1)
- 常用的证书格式转换 rsa eg (1)
- 加密 解密 签名 (1)
- 分析jar包冲突 (1)
- 使用JMockit编写java单元测试 (1)
- Linux 技巧:让进程在后台可靠运行的几种方法 (1)
- 环境变量控制 (1)
- 5+ 个 tar 命令的用法,附示例 (1)
- scp自动输入密码 (1)
- ps axo pid (1)
- ppid (1)
- comm (1)
- pmem (1)
- lstart|grep mysql (0)
- lstart (1)
- etime|grep mysql (1)
- UML类图字少好理解 (1)
- HTTP经典文章 (1)
- git (1)
- Git常用命令 (1)
- LINUX 系统被攻击的分析过程 (1)
- NIO (1)
- LINUX 操作快捷键使用 (1)
- openSSL命令、PKI、CA、SSL证书原理 (1)
- shell (2)
- 转载 (1)
- mysqldump 可以直接dump->xml (1)
- VIM比较全面的文章 (1)
- eclipse regex 正则表达式 (1)
- synchronized (1)
- 锁 (1)
- java 正则表达式 regex (1)
- Reference Queue 引用 源码 (1)
- spring aop 源码 分析 (1)
- java @Cache @Transaction 注解 (1)
- spring aop (1)
- spring jdk proxy cglib 动态代理 性能比较 (1)
- spring proxy private public 代理限制 (1)
- spring transaction aop 事务 (1)
- spring autowire 注解注入 (1)
- 桥接 NAT NAT地址转换 内部网络 虚拟网络 (1)
- spring-web-mvc 源码解读 之 RequestMappingHandlerMapping (1)
- find atime mtime ctime -n n +n (1)
- android studio 快捷键初探 (1)
- android 源码阅读的计划 (1)
- 计算机网络学习-VLAN (1)
- sed 高级 合并行 (1)
- CAP 一致性 可用性 分布式容错性 (1)
- android lib so 库文件 (0)
- android lib so 库文件 移植 (1)
- android 不错的博文 (1)
- sourceinsight 源码 阅读 (1)
- Android Tab UI (1)
- 诗 (1)
- mysql 批处理 (0)
- netty 堆外内存 DirectByteBuffer (1)
- netty 并发 百万 推送 (1)
- Linux操作系统中内存buffer和cache的区别 (1)
- maven intellij target bytecode version (1)
- linux sleep()的实现原理 (1)
- android (2)
- javadoc 代码注释规范 (1)
- spring 自动注入bean auto (1)
- Photoshop CS6常用快捷键 (1)
- 股票 数据 机器 分析 (1)
- 批处理 (1)
- mysql -e (1)
- char (1)
- Unicode (1)
- 编码 (1)
- utf8 (1)
- utf-8 (1)
- utf16 (1)
- utf-16 (1)
- IntelliJ IDEA (1)
- ide (1)
- idea (1)
- intellij (1)
- 文件 (1)
- 目录 (1)
- 源代码 (1)
- CountDownLatch (1)
- CyclicBarrier (1)
- Semaphore (1)
- spring (1)
- linux 查看不同进制文件 (1)
- WebMvcConfigurationSupport (1)
- sdkman工具的使用 (1)
- http header (1)
- LINUX系统优化 (1)
最新评论
-
gelongmei:
威武我大酒神
shell脚本不换行刷新数据
TCP连接的状态与关闭方式,及其对Server与Client的影响
1、TCP连接的状态 首先介绍一下TCP连接建立与关闭过程中的状态。TCP连接过程是状态的转换,促使状态发生转换的因素包括用户调用、特定数据包以及超时等,具体状态如下所示: 1) CLOSED:初始状态,表示没有任何连接。
2) LISTEN:Server端的某个Socket正在监听来自远方的TCP端口的连接请求。
3) SYN_SENT:发送连接请求后等待确认信息。当客户端Socket进行Connect连接时,会首先发送 SYN包,随即进入SYN_SENT状态,然后等待Server端发送三次握手中的第2个包。
4) SYN_RECEIVED:收到一个连接请求后回送确认信息和对等的连接请求,然后等待确认信息。 通常是建立TCP连接的三次握手过程中的一个中间状态,表示Server端的Socket接收到来自Client的SYN包,并作出回应。
5) ESTABLISHED:表示连接已经建立,可以进行数据传输。
6) FIN_WAIT_1:主动关闭连接的一方等待对方返回ACK包。若Socket在ESTABLISHED状态下 主动关闭连接并向对方发送FIN包(表示己方不再有数据需要发送),则进入FIN_WAIT_1状态,等待对方返回ACK包,此后还能读取数据,但不能发送数据。在正常情况下,无论对方处于何种状态,都应该马上返回ACK包,所以FIN_WAIT_1状态一般很难见到。
7) FIN_WAIT_2:主动关闭连接的一方收到对方返回的ACK包后,等待对方发送FIN包。处于 FIN_WAIT_1状态下的Socket收到了对方返回的ACK包后,便进入FIN_WAIT_2状态。由于FIN_WAIT_2状态下的Socket需要等待对方发送的FIN包,所有常常可以看到。若在FIN_WAIT_1状态下收到对方发送的同时带有FIN和ACK的包时,则直接进入TIME_WAIT状态,无须经过FIN_WAIT_2状态。
8) TIME_WAIT:主动关闭连接的一方收到对方发送的FIN包后返回ACK包(表示对方也不再有数 据需要发送,此后不能再读取或发送数据),然后等待足够长的时间(2MSL)以确保对方接收到ACK包(考虑到丢失ACK包的可能和迷路重复数据包的影响),最后回到CLOSED状态,释放网络资源。
9) CLOSE_WAIT:表示被动关闭连接的一方在等待关闭连接。当收到对方发送的FIN包后(表示对 方不再有数据需要发送),相应的返回ACK包,然后进入CLOSE_WAIT状态。在该状态下,若己方还有数据未发送,则可以继续向对方进行发送,但不能再读取数据,直到数据发送完毕。
10) LAST_ACK:被动关闭连接的一方在CLOSE_WAIT状态下完成数据的发送后便可向对方发送FIN 包(表示己方不再有数据需要发送),然后等待对方返回ACK包。收到ACK包后便回到CLOSED状态,释放网络资源。
11) CLOSING:比较罕见的例外状态。正常情况下,发送FIN包后应该先收到(或同时收到)对方的 ACK包,再收到对方的FIN包,而CLOSING状态表示发送FIN包后并没有收到对方的ACK包,却已收到了对方的FIN包。有两种情况可能导致这种状态:其一,如果双方几乎在同时关闭连接,
1、TCP连接的状态 首先介绍一下TCP连接建立与关闭过程中的状态。TCP连接过程是状态的转换,促使状态发生转换的因素包括用户调用、特定数据包以及超时等,具体状态如下所示: 1) CLOSED:初始状态,表示没有任何连接。
2) LISTEN:Server端的某个Socket正在监听来自远方的TCP端口的连接请求。
3) SYN_SENT:发送连接请求后等待确认信息。当客户端Socket进行Connect连接时,会首先发送 SYN包,随即进入SYN_SENT状态,然后等待Server端发送三次握手中的第2个包。
4) SYN_RECEIVED:收到一个连接请求后回送确认信息和对等的连接请求,然后等待确认信息。 通常是建立TCP连接的三次握手过程中的一个中间状态,表示Server端的Socket接收到来自Client的SYN包,并作出回应。
5) ESTABLISHED:表示连接已经建立,可以进行数据传输。
6) FIN_WAIT_1:主动关闭连接的一方等待对方返回ACK包。若Socket在ESTABLISHED状态下 主动关闭连接并向对方发送FIN包(表示己方不再有数据需要发送),则进入FIN_WAIT_1状态,等待对方返回ACK包,此后还能读取数据,但不能发送数据。在正常情况下,无论对方处于何种状态,都应该马上返回ACK包,所以FIN_WAIT_1状态一般很难见到。
7) FIN_WAIT_2:主动关闭连接的一方收到对方返回的ACK包后,等待对方发送FIN包。处于 FIN_WAIT_1状态下的Socket收到了对方返回的ACK包后,便进入FIN_WAIT_2状态。由于FIN_WAIT_2状态下的Socket需要等待对方发送的FIN包,所有常常可以看到。若在FIN_WAIT_1状态下收到对方发送的同时带有FIN和ACK的包时,则直接进入TIME_WAIT状态,无须经过FIN_WAIT_2状态。
8) TIME_WAIT:主动关闭连接的一方收到对方发送的FIN包后返回ACK包(表示对方也不再有数 据需要发送,此后不能再读取或发送数据),然后等待足够长的时间(2MSL)以确保对方接收到ACK包(考虑到丢失ACK包的可能和迷路重复数据包的影响),最后回到CLOSED状态,释放网络资源。
9) CLOSE_WAIT:表示被动关闭连接的一方在等待关闭连接。当收到对方发送的FIN包后(表示对 方不再有数据需要发送),相应的返回ACK包,然后进入CLOSE_WAIT状态。在该状态下,若己方还有数据未发送,则可以继续向对方进行发送,但不能再读取数据,直到数据发送完毕。
10) LAST_ACK:被动关闭连接的一方在CLOSE_WAIT状态下完成数据的发送后便可向对方发送FIN 包(表示己方不再有数据需要发送),然后等待对方返回ACK包。收到ACK包后便回到CLOSED状态,释放网络资源。
11) CLOSING:比较罕见的例外状态。正常情况下,发送FIN包后应该先收到(或同时收到)对方的 ACK包,再收到对方的FIN包,而CLOSING状态表示发送FIN包后并没有收到对方的ACK包,却已收到了对方的FIN包。有两种情况可能导致这种状态:其一,如果双方几乎在同时关闭连接,
发表评论
-
HTTP协议详解
2016-02-29 11:15 353http://www.cnblogs.com/EricaMIN ... -
iptables 从链、表开始理解
2015-06-24 14:26 532iptables 不清楚的同学可以在看这里的比较全面的文章ht ... -
CentOS---网络配置详解
2015-06-24 13:44 531http://blog.chinaunix.net/uid-2 ... -
OpenSSL生成证书
2015-03-09 11:02 637要生成证书的目录下建立几个文件和文件夹,有./demoCA/ ... -
tcpdump使用
2014-02-14 15:07 354tcpdump -i eth1 -t -s 0 host 1 ... -
tcpdump抓取HTTP包
2014-02-14 12:42 7102012-10-11 10:50:35| 分类 ... -
Nginx1.1.4+ 对后端机器的长连接特性
2014-02-12 19:22 596博客分类: web服务器技术 nginx upstream ... -
Linux - ss命令详解
2014-02-12 14:57 509Linux - ss命令详解 2012-09-13 11 ...
相关推荐
TCP 连接状态详解 TCP 连接状态是指在 TCP 协议中,连接的不同阶段所对应的状态。这些状态包括 LISTEN、SYN-SENT、SYN-RECEIVED、ESTABLISHED、FIN-WAIT-1、FIN-WAIT-2、CLOSE-WAIT、CLOSING、LAST-ACK、TIME-WAIT...
2. **命令提示符**:使用`netstat`命令可以查看当前的TCP连接状态。输入`netstat -ano`可以看到所有活动连接,包括PID(进程ID)。找到目标连接,然后使用`taskkill`命令结束对应进程,如`taskkill /F /PID 进程ID`...
6. **TIME_WAIT状态** - 在TCP连接关闭后,发送方会进入TIME_WAIT状态,等待足够的时间以确保最后一个ACK到达接收方,防止旧的数据包在网络中延迟后被错误地解释为新的连接请求。这个状态对于TCP的可靠性和连接终止...
在C#中,实现ModbusTCP连接通常需要借助第三方库,如NModbus。NModbus是一个开源的.NET实现,提供了对Modbus协议的完整支持,包括读取和写入寄存器、线圈等操作。首先,你需要在项目中引入NModbus库,可以通过NuGet...
- **CLOSED**:这是TCP连接的初始状态,也是连接被关闭后的最终状态。 - **LISTEN**:服务器处于此状态时,正在监听来自客户端的连接请求。一旦接收到客户端的SYN请求,服务器将进入SYN收到状态。 - **SYN_SENT**/ *...
在TCP连接中,我们可以定义几个关键的状态,如`CLOSED`(关闭)、`LISTEN`(监听)、`SYN_SENT`(同步发送)、`SYN_RECEIVED`(同步接收)、`ESTABLISHED`(已建立)、`CLOSE_WAIT`(等待关闭)、`LAST_ACK`(最后...
长连接,也称为持久连接,指的是客户端(Client)与服务器端(Server)在完成连接建立后,保持连接状态不立即断开,以便于进行多次的数据交互。TCP的三次握手建立连接后,双方可以在连接保持期间反复发送数据,减少...
1. **TCP连接状态机** TCP连接有多种状态,包括LISTEN、SYN_SENT、SYN_RECEIVED、ESTABLISHED、CLOSE_WAIT、FIN_WAIT_1、FIN_WAIT_2、TIME_WAIT等。每个状态都代表了连接的不同生命周期阶段。Close_Wait是服务器端...
1. **TCP连接状态**:TCP连接有多个状态,包括SYN(同步),ACK(确认),FIN(结束)和RST(复位)。tcp_killer主要利用RST标志来强制断开连接。 2. **套接字API**:Python的socket模块提供了与操作系统底层网络...
TCP连接分为长连接和短连接,这两种连接方式各有其特点和适用场景。本Demo是用C++语言在VS2017环境下编写的,旨在帮助开发者理解TCP长连接和短连接的实现。 首先,我们要理解TCP连接的基本概念。TCP是一种面向连接...
开发者可以通过查看TCP连接状态来定位程序在通信过程中的问题,如连接失败、数据传输错误等。 总的来说,实时查看系统的TCP连接情况是维护网络安全、优化系统性能和解决问题的关键步骤。通过使用像Tcpview这样的...
2. **TCP连接状态**:TCP连接有多种状态,包括LISTEN(监听)、SYN_SENT(同步已发送)、SYN_RECV(同步已接收)、ESTABLISHED(已建立)、FIN_WAIT1/2(等待关闭)、CLOSE_WAIT(等待关闭)、CLOSING(正在关闭)、...
我们可以通过以下步骤获取TCP连接状态: 1. 使用`getsockopt(socket_fd, IPPROTO_TCP, TCP_INFO, &tcp_info, &len)`,其中`socket_fd`是Socket文件描述符,`tcp_info`是`struct tcp_info`结构体的指针,`len`是...
当一个TCP连接被关闭后,连接的两端不会立即释放资源,而是进入TIME_WAIT状态,等待一段时间以确保所有发送的数据都被确认接收。这个时间通常设置为MSL(Maximum Segment Lifetime,报文段最大生存时间)的两倍。 当...
TCPView是一款由微软系统工具开发团队出品的小巧而强大的网络监控工具,主要用于实时监测和管理计算机上的TCP连接状态。这款工具对于系统管理员、开发者以及普通用户来说都非常实用,可以帮助他们了解系统的网络活动...
#### 二、TCP连接建立与关闭 **1. 连接建立** TCP连接建立采用了三次握手的方式: - **第一次握手**:客户端发送一个SYN报文段到服务器,其中SYN字段置1,同时携带了一个初始序列号(Initial Sequence Number, ...
CLOSE_WAIT 状态是 TCP 连接中的一种状态,它表示服务器端已经收到了客户端的关闭请求,但是服务器端还没有关闭连接。这是因为 TCP 连接是全双工的,客户端关闭连接不等于服务器端关闭连接。CLOSE_WAIT 状态的出现是...
TCP连接的状态变迁图是理解TCP工作原理的关键,它清晰地展示了TCP连接从建立到关闭的整个过程,对于排查网络和系统问题具有重要意义。 TCP连接的状态变迁主要包括以下几个阶段: 1. **三次握手建立连接**: - **...