下面接着《详解TCPIP断开连接后的Time-wait状态》一文的内容,我们讨论下socket在断开连接中的另外三种状态FIN_WAIT1、FIN_WAIT2状态和CLOSE_WAIT状态。

首先启动socket服务端,然后用客户端进行连接,用netstat –ant命令查看目前套接字的状态:

发现客户端和服务器的套接字都进入了established状态,说明客户端和服务端都正常工作,此时我们在服务端输入Ctrl+C终端服务端程序,再次输入netstat–ant命令,这是就看到了服务端进入了FIN_WAIT2状态,而客户端进入了CLOSE_WAIT状态。

关于断开套接字断开连接时的四次握手在这里不再赘述,而这个FIN_WAIT2状态就是服务端在主动发起断开的连接请求时,发送FIN并收到客户端的ACK进入的等待客户端FIN的状态;而与FIN_WAIT2相对的FIN_WAIT1就是服务端发送完成FIN后还未接收到客户端返回的ACK时进入的状态,这个状态时长很短,在我本机上无法捕捉;这个CLOSE_WAIT状态是客户端接受到服务端的FIN并发送ACK后,等待用户手动关闭套接字的状态。

此时如果关闭客户端的套接字,直接在客户端输入Ctrl+C,服务端就会进入我们熟悉的TIME_WAIT状态:

网络编程(26)—— TIME_WAIT、FIN_WAIT1、FIN_WAIT2和CLOSE_WAIT状态的区别相关推荐

  1. 解决Linux服务器中TCP的FIN_WAIT2,CLOSE_WAIT状态连接过多的问题

    问题现象 Linux系统服务器中FIN_WAIT2,CLOSE_WAIT状态的TCP链接过多,服务不能及时响应. 通过命令 netstat –ant|grep FIN_WAIT2|wc –l 查看连接 ...

  2. Java基础学习总结:网络编程之(四)TCP与UDP的区别及常见的网络协议(转)

    TCP和UDP的区别 原文:https://blog.csdn.net/li_ning_/article/details/52117463 1.TCP与UDP基本区别 基于连接与无连接 TCP要求系统 ...

  3. 【网络编程】time_wait状态产生的原因,危害,如何避免

    转自:https://blog.csdn.net/u013616945/article/details/77510925  做略微修改  仅供个人学习 1. time_wait状态如何产生? 在tcp ...

  4. Java学习记录五(多线程、网络编程、Lambda表达式和接口组成更新)

    Java学习记录五(多线程.网络编程.Lambda表达式和接口组成更新) Java 25.多线程 25.1实现多线程 25.1.1进程 25.1.2线程 25.1.3多线程的实现 25.1.4设置和获 ...

  5. Socket网络编程面试题

    Socket网络编程面试题 1.TCP和UDP的区别: 2.流量控制和拥塞控制的实现机制: 3.重传机制: 4.滑动窗口机制: 5.多线程如何同步: 6.进程和线程的区别: 7.进程间通讯的方式有哪些 ...

  6. 网络编程释疑之:TCP的TIME_WAIT状态在服务器开发中的影响?

    在进行TCP高并发服务器开发时,有些规则仿佛是约定俗成的,很多朋友会依据这些规则去做,比如高并发TCP服务器中进行主动关闭的一方最好是客户端.服务器端程序最好启用SO_REUSEADDR选项,但是很多 ...

  7. 网络编程-线程,守护线程,线程互斥锁-26

    网络编程-线程,守护线程,线程互斥锁-26 内容: 进程部分: 进程间通信=>IPC 生产者消费者模型() 线程部分: 1. 线程理论() 2.开启线程的两种方式() 3. 线程对象其他相关的属 ...

  8. close_wait状态和time_wait状态

    不久前,我的Socket Client程序遇到了一个非常尴尬的错误.它本来应该在一个socket长连接上持续不断地向服务器发送数据,如果socket连接断开,那么程序会自动不断地重试建立连接. 有一天 ...

  9. 常见网络编程面试题答案征集与面试题(收集) ZZ 【网络编程】

    http://www.cnblogs.com/wickedboy237/archive/2013/05/12/3074362.html 1:tcp和udp的区别 2:流量控制和拥塞控制的实现机制 3: ...

最新文章

  1. ORA-12919: Can not drop the default permanent tablespace
  2. Javascript对象的查询字符串编码
  3. 操作系统(三十二)内存的基础常识
  4. Android复习15【动画:创建资源文件夹、创建动画资源文件、组合动画、属性动画、材料设计新特性】
  5. oracle join 嵌套,誰能真正理解hash join/nested loop/merge join
  6. 企业级IM应该帮助员工提高绩效,避免无关的信息干扰
  7. 关于tensorflow2.0的弊端
  8. 《南溪的目标检测学习笔记》——后处理方法的学习笔记
  9. 多线程矩阵乘法运算 c++
  10. java中方法的_Java中的常用方法
  11. Mysql中将查询出来的多列的值用逗号拼接
  12. Blender快捷键大全
  13. css代码实现3D动画翻转 - 鱿鱼游戏卡片制作
  14. EXCEL如何实现两个表的相应数据关联
  15. 【免费内网穿透】Windows远程桌面连接树莓派
  16. 低度酒的诸神之战,能分出胜负吗?
  17. 志强处理器结尾的ES、QS、正式版的区别
  18. 长安二中计算机学院,最新!第一波中考录取分数线出炉!长安区12所高中录取分数线正式公布!...
  19. 【Vegas原创】word图片隐藏在文字里了的终极解决办法
  20. 程序员实用工作技能之Docker

热门文章

  1. 08-图7 公路村村通 (30分)
  2. Android Handle的回调handleMessage运行在哪个线程
  3. 什么是spring 框架?
  4. IT行业 缓解工作压力
  5. PostgreSQL的学习心得和知识总结(六十三)|详解PostgreSQL数据库 ANY/SOMEALL 的使用及原理
  6. Mac开启root权限
  7. 微软IE8中文正式版发布!(图)内有下载链接
  8. Weblogic9.2集群配置
  9. Metro UI CSS -- 准备工作
  10. 结合pikachu和DVWA靶场学习文件包含漏洞