TCP四次挥手
关于TCP三次握手以及为什么要握三次的原因可以看我的另外一篇博客《TCP三次握手》
第一次挥手:
在完成数据传输后客户端和服务端都可以发起关闭连接请求,假设是客户端发起到的。客户端给服务端发送了一个FIN包表示要关闭连接,客户端自己进入终止等待1状态。因为客户端就好比谈恋爱要分手总得要告知下对方,看下对方什么反应吧。
第二次挥手
服务端接收到后,给客户端发送一个ACK包,表示我知道了,我这还要进行一些收尾工作,发一些还没发完的数据,你给我等着。于是服务端进入了关闭等待状态,此时它还可以发表临终遗言,还可以发数据,客户端还可以接收数据,听听看服务端还有啥说的没有,就进入终止等待2状态。
第三次挥手,
服务端数据处理完后,就可以给客户端发送一个FIN包,告知客户端我这没啥说的了。
第四次挥手
客户端收到FIN包后,给服务端发送一个ACK包,确认一下我知道这边关好了,服务端收到ACK包后立刻关闭连接,客户端则进入超时等待状态,过了超时时间后客户端就关闭连接。
问题少年:为什么要客户端最后要进行超时等待?
答:因为如果客户端一发送ACK后立马关闭连接,那如果就这么不巧,服务端就是没收到这个ACK包,那么服务端将一直苦苦地等待,一直狂call客服端,你那边关了没有啊?咋不理我啊?而此时客户端早已跑路。如果客户端有等一下,在这超时时间内,服务端如果没收到ACK包,就可以回到第三步重发FIN包,客户端则会响应这个FIN包。
问题少年:简单点说TCP四次挥手
答:
房东:今天退租是吗?
租客:是的,我收拾一下东西。
租客:我收拾好了。
房东:好,那咱们就退租了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
2020-04-06 css全站变灰
2020-04-06 Vue MVVM模型原理