补充:四次挥手数据传输完了之后 , TCP还需要做一点事情 , 就是通道建立了 , 但是当我不需要的时候 , 我想把通道关闭 , 不然一直监听着有没有消息给我实在是太累了 。
当TCP关闭通道的时候 , 需要通过四次挥手来确认 , 它是这样挥手的:

文章插图
我们解释完这张图 , 本章就完事啦 。
我们简单解释下这张图 , 当客户端发送一个“我不玩了”的消息后 , 就会进入到FIN_WAIT_1的状态 , 等待后续的服务器反馈 , 当服务器收到消息后 , 就会在之前的基础上给包序号加+1返回给客户端 , 那么此时服务器就进入到了CLOSED_WAIT的待关闭状态 。
我们稍微跑题一下 , 在学习了三次握手 , 和上面四次挥手的图示后 , 你发现一个问题没有 , 就是所有的应答都是在请求的基础包序号上+1 。换种理解方式就是+1的序号都是作为应答出现的包 。我们继续上面的话题 , 当客户端收到了服务器的第一次响应应答后 , 会进入到FIN_WAIT_2的状态 , 为啥这里客户端要等服务器再发送一个包呢?假如服务器还有未处理完的数据要给你咋整?你不是还得接收 , 所以要等服务器的数据都处理完毕了 , 告诉客户端 , 我这边也可以不玩了才行 。
于是 , 当服务器也结束了自己的任务的时候 , 就把包发给客户端 , 客户端进入TIME_WAIT的状态 。当服务器收到第二次客户端的应答后 , 就直接关闭了 。
最后 , TCP还要求客户端还是要持续的监听一段时间 , 这个时间就是报文最大生存时间 , 等了一段时间后 , 就进入关闭的状态了 。
我们看哈 , 其实整个四次挥手 , 一次是由客户端发起 , 一次服务器应答 , 一次是由服务器发起 , 客户端应答 , 最后 , 客户端再等待一段时间 。才最终结束整个挥手过程 。
那他为什么不可以像三次握手那样 , 请求 , 响应 , 响应响应 , 三个步骤就可以了呢 。这里有一个核心就是 , 建立连接时 , 双方都处于空闲状态 , 没有正在运行的程序 , 而关闭时 , 需要确定双方的程序都结束才可以 。所以再四次挥手的由服务器发起的请求的过程中 , 就是为了等待服务器的任务跑完 。
小结我们稍微回顾下我们本章都学习了什么 。
- DoD模型与OSI模型的异同 , 你知道4 , 7 , 5都是怎么来的么?
- 一个HTTP包在5层模型中的穿梭过程(特别简易版) , 你知道发送一个HTTP请求要经历哪些过程么?
- 三次握手和四次挥手 , 我想握手三百次 , 挥手四百次 , 是否可以呢?
最后 , 本人能力有限 , 若在阅读过程中发现谬误 , 还望不吝指教 。非常感谢~~
经验总结扩展阅读
- 真正的南方是哪几个省
- 哪些星座累觉不爱
- 哪个星座的暖男会给你幸福?
- 哪些星座男分手时最不淡定
- 哪些星座女对壁咚没免疫力
- 爱情里最死心塌地的星座
- 七海ybb是什么梗
- 口罩的单位
- 如何一步搞定十二星座男
- 星座女搞定暴脾气恋人要用什么招?