• 四次挥手(客户端和服务端均可以发起):

1、客户端发起、请求断开链接。发送报文FIN=1,当FIN=1的时候,表明此报文的发送方已经完成了数据的发送,没有新

的数据要传送,并要求释放链接。客户端进入FIN-WAIT-1(终止等待1)状态。

2、服务器收到客户端的请求断开链接的报文之后,返回确认信息。ACK=1,服务器进入CLOSE-WAIT(关闭等待)状

态。此时客户端不能给服务器发送信息报文,只能接收。客户端收到来自服务器端的确认后,进入FIN-WAIT-2(终止等

待2)状态,等待服务器发出链接释放报文段。

3、当服务器也没有了可以传的信息之后,给客户端发送请求结束的报文。FIN=1,ACK=1,服务器进入LAST-ACK(最

终确认)状态。

4、客户端接收到FIN=1的报文之后,返回确认报文,ACK=1,发送完毕之后,客户端进入TIME-WAIT(时间等待)状

态,等待两个时间周期。链接关闭。服务器端收到客户端发出的确认就进入CLOSED(关闭)状态。

TCP释放链接过程

注意:为什么要等两个时间周期?

这最主要是因为两个理由:

1、为了保证客户端发送的最后一个ACK报文段能够到达服务器。因为这个ACK有可能丢失,从而导致处在LAST-ACK状

态的服务器收不到对FIN-ACK的确认报文。服务器会超时重传这个FIN-ACK,接着客户端再重传一次确认,重新启动时间

等待计时器。最后客户端和服务器都能正常的关闭。假设客户端不等待2MSL,而是在发送完ACK之后直接释放关闭,一

但这个ACK丢失的话,服务器就无法正常的进入关闭连接状态。

2、还可以防止已失效的报文段。客户端在发送最后一个ACK之后,再经过经过2MSL,就可以使本链接持续时间内所产

生的所有报文段都从网络中消失。从保证在关闭连接后不会有还在网络中滞留的报文段去骚扰服务器。

注意:在服务器发送了FIN-ACK之后,会立即启动超时重传计时器。客户端在发送最后一个ACK之后会立即启动时间等

待计时器。

四次挥手过程以及为什么要等两个时间周期?相关推荐

  1. mysql三次握手_一文彻底搞懂 TCP三次握手、四次挥手过程及原理

    原创文章首发于公众号:「码农富哥」,欢迎收藏和关注,如转载请注明出处! TCP 协议简述 TCP 提供面向有连接的通信传输,面向有连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接. 无论 ...

  2. TCP三次握手、四次挥手过程及原理

    TCP 协议简述 TCP 提供面向有连接的通信传输,面向有连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接. 无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接.在TCP/I ...

  3. TCP三次握手和四次挥手过程

    1.三次握手 (1)三次握手的详述 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源.Client端接收到ACK报文后也向Server段发生ACK报文, ...

  4. 经典面试题之 TCP三次握手 和 TCP四次挥手过程----详解

    TCP三次握手过程: 第一次握手:建立连接时,客户端发送syn包(seq=j)到服务器,并进入SYN_SENT状态,等待服务器确认:SYN:同步序列编号(Synchronize Sequence Nu ...

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

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

  6. 三次握手与四次挥手过程详解

    三次握手与四次挥手过程详解 三次握手建立连接: 传输数据过程: 四次握手断开连接: 常见面试问题: TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道 上图主要包括三部分:建 ...

  7. 深入理解TCP三次握手与四次挥手过程以及抓包实验

    一.前言 最近,我正好在做socket相关的实验,发现现在对计算机网络知识有一点点模糊,借此机会,熟悉一下TCP连接过程并利用WireShark工具进行测试. 二.TCP报文首部 源端口号:占16比特 ...

  8. TCP原理和三次握手和四次挥手过程

    TCP原理和三次握手和四次挥手过程 TCP原理和三次握手和四次挥手过程 TCP是什么?有什么作用? 三次握手 连接建立 详细过程 四次挥手 连接终止 详细过程 参考 TCP原理和三次握手和四次挥手过程 ...

  9. 详解TCP连接释放四次挥手过程

    TCP连接释放的过程叫做挥手,挥手需要在客户和服务器之间交换四个TCP报文段. 下图是四报文挥手释放TCP连接的过程: 数据传输结束后,通信的双方都可释放连接.现在A和B都处于ESTABLISHED状 ...

最新文章

  1. 便利vector_C++面试题之list和vector的区别
  2. GoldenGate的Logdump工具使用简介
  3. JDBC操作之连接和关闭mysql数据库
  4. ProtonMail 开源其所有电子邮件应用程序
  5. 加密解密时遇到的不正确的数据以及要解密的数据长度无效问题解决方案
  6. 无限乱斗机器人ap出装_LOL:无限火力仅剩4天,这5个英雄一定要尝试!
  7. Python os.path路径模块中的操作方法总结
  8. java框架ssm整合_SSM三大框架整合详细教程(Spring+SpringMVC+MyBatis)
  9. MIPS投RISC-V是龙芯新征程的开始
  10. 面试突击第 3 期 | Redis 如何实现查询附近的人?视频实战版
  11. 什么是依赖注入 php,什么是依赖注入?
  12. List中对象model的排序问题
  13. NSCT(Nonsubsampled Contourlet变换)
  14. 分布式文件系统(HDFS)与linux系统文件系统关系
  15. 推荐一位玩自动化、爬虫的 Python 硬核爱好者
  16. Android如何判断两字符串是否相等
  17. Python+Vue计算机毕业设计龙一公益网站的设计与实现ngash(源码+程序+LW+部署)
  18. ESP8266学习进阶实用篇(1)——SmartConfig智能配网(附带完整简配版有害气体检测仪开发)
  19. Keil MDK 和 IAR 两款ARM开发工具区别比较和Keil MDK 的下载,安装及常见问题解决
  20. 点融网上市“求医”行不通,“自愈”才是真出路?

热门文章

  1. zTree 一个依靠 jQuery 实现的多功能 “树插件”
  2. 浅谈javascript注入攻击
  3. 跨境支付反洗钱业务逻辑和相关大数据分析技术实现
  4. 世峰中标华南农业大学无人机虚拟仿真实验室软硬件系统建设项目
  5. Halcon区域几何变换和仿射变换
  6. 【STM32F429】RT-Thread结合TouchGFX实战教程
  7. Ubuntu上安装CERN开发的ROOT软件
  8. 这才是微服务划分的正确姿势,值得学习!
  9. IDLpython学习——实现根据有经纬度坐标的excel/csv表格提取相应影像的像元值
  10. MATLAB 协方差 [cov] 和相关系数 [corrcoef] 说明