建立连接后,客户端和服务器都处于ESTABLISED状态。这时,客户端发起断开连接的请求:

step1. 客户端调用 close() 函数后,向服务器发送 FIN 数据包,进入FIN_WAIT_1状态。FIN 是 Finish 的缩写,表示完成任务需要断开连接。

step2. 服务器收到数据包后,检测到设置了 FIN 标志位,知道要断开连接,于是向客户端发送“确认包”,进入CLOSE_WAIT状态。

注意:服务器收到请求后并不是立即断开连接,而是先向客户端发送“确认包”,告诉它我知道了,我需要准备一下才能断开连接。

step3. 客户端收到“确认包”后进入FIN_WAIT_2状态,等待服务器准备完毕后再次发送数据包。

step4. 等待片刻后,服务器准备完毕,可以断开连接,于是再主动向客户端发送 FIN 包,告诉它我准备好了,断开连接吧。然后进入LAST_ACK状态。

step5. 客户端收到服务器的 FIN 包后,再向服务器发送 ACK 包,告诉它你断开连接吧。然后进入TIME_WAIT状态。

step6. 服务器收到客户端的 ACK 包后,就断开连接,关闭套接字,进入CLOSED状态。

问题:客户端最后一次发送 ACK包后进入 TIME_WAIT 状态,而不是直接进入 CLOSED 状态关闭连接

解答:客户端最后一次向服务器回传ACK包时,有可能会因为网络问题导致服务器收不到,服务器会再次发送 FIN 包,所以客户端需要等待片刻、确认对方收到ACK包后才能进入CLOSED状态。

TCP/IP总结(4)TCP之4次挥手相关推荐

  1. TCP/IP学习笔记:TCP/IP协议介绍

    TCP/IP的通讯协议 这部分简要介绍一下TCP/IP的内部结构,为讨论与互联网有关的安全问题打下基础.TCP/IP协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议(例如T1和X.2 ...

  2. Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)...

    Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器 定义:       这里 ...

  3. python网络通信效率_Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手)...

    Python进阶----网络通信基础 ,OSI七层协议() ,UDP和TCP的区别 , TCP/IP协议(三次握手,四次挥手) 一丶CS/BS 架构 C/S: 客户端/服务器 定义: 这里的客户端一般 ...

  4. 【运维面试】面试官问到tcp/ip三次握手,四次挥手,这么回答就对了

    我之前面试过很多运维人员,每次都绕不开tcp/ip三次握手,四次挥手: 面试者的回答也是八仙过海各显神通 有讲故事的,有画图的,有把自己讲晕了的: 那这个该怎么回答呢? 我总结下来可以这么来说: 三次 ...

  5. 【TCP/IP 协议】 TCP/IP 基础

    总结 : 通过学习 TCP/IP 基础, 并总结相关笔记 和 绘制思维导图 到博客上, 对 TCP/IP 框架有了大致了解, 之后开始详细学习数据链路层的各种细节协议, 并作出笔记; 博客地址 : h ...

  6. TCP/IP详解--TCP/IP中三次握手 四次握手状态分析

    TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接: 位码即tcp标志位,有6种标 ...

  7. 计算机英语 TCP IP什意思,TCP/IP常见英文缩写释义

    TCP (传输控制协议) - 应用程序之间通信transmission control protocol UDP (用户数据包协议) - 应用程序之间的简单通信 IP (网际协议) - 计算机之间的通 ...

  8. TCP/IP具体解释--TCP的分段和IP的分片

    写在前面: 分组能够发生在运输层和网络层.运输层中的TCP会分段,网络层中的IP会分片.IP层的分片很多其它的是为运输层的UDP服务的,因为TCP自己会避免IP的分片,所以使用TCP传输在IP层都不会 ...

  9. TCP/IP协议栈:TCP超时重传机制

    目录 基础概念 重传超时时间RTO RTO的设定 连接往返时间RTT RTT的计算 Karn算法 往返时间测量 重传 拥塞避免算法 快速重传和快速恢复算法 重新分组 网络数据包丢失,重传和重复确认 是 ...

  10. go tcp客户端自动重连_阿里面试: HTTP、HTTPS、TCP/IP、三次握手四次挥手过程?(附全网最具深度讲解)

    前言 这段时间面试官都挺忙的,频频出现在博客文章标题,虽然我不是特别想蹭热度,但是实在想不到好的标题了-.-,蹭蹭就蹭蹭 :) 事实上我在阿里面试的时候确实被问到了这个问题,HTTP.HTTPS.TC ...

最新文章

  1. “还完花呗,再也不用吃土!”是真的吗?(附代码)
  2. 科大讯飞陶晓东:人工智能时代的医学影像 | CCF-GAIR 2017
  3. Mysql:增加用户和密码,赋予权限
  4. PyTorch模型读写、参数初始化、Finetune
  5. Dubbo 3.0 前瞻系列 | 2020双11,Dubbo3.0 在考拉的超大规模实践
  6. excel导入到mysql
  7. Java怎么实现大的map_关于Java中的ConcurrentHashMap的实现原理有大神可以详细介绍下吗?...
  8. LeetCode Factorial Trailing Zeroes (阶乘后缀零)
  9. 你是否真的适合搞NDK开发?
  10. 计算机主板日常维护主要做到什么,对计算机硬件日常维护的热点研究
  11. python 生信分析_生信分析之Python学习1
  12. 微信公众号开发之上传临时素材
  13. 北京大学可视化发展前沿研究生暑期学校Day2
  14. Flash Builder 4.6.1的安装与破解
  15. Unity FPS帧数设置
  16. 一个可以在线编写matlab的网站,你了解吗?
  17. 【每日早报】2019/08/13
  18. 完美解决 - 如何将一个项目打包到本地maven库,然后供另一个项目中引用。
  19. 什么是深度链接(deep link)
  20. 工控服务器性能指标,5点弄懂工控机内存条

热门文章

  1. 快速排序算法_常用排序算法之快速排序
  2. easypoi导出excel不设置样式_EasyExcel为单个Cell设置样式
  3. 绿色数据中心保护布线的秘决
  4. 上海市互联网数据中心建设导则(2019版)
  5. Matlab:成功解决Expression or statements is incorrect--possibly unbalanced (,{,[.
  6. 成功解决 keras\callbacks.py:999: UserWarning: `epsilon` argument is deprecated and will be removed, use
  7. pyhanlp 文本分类与情感分析
  8. 风控业务-模型稳定性评价指标PSI
  9. linux shell 学习
  10. Coursera Algorithms week1 算法分析 练习测验: Egg drop 扔鸡蛋问题