索引
下面例子都是A请求B。
为什么三次握手?
如果只有两次,则很可能第二次回应A根本没有收到。
![【每日阅读】2020年12月02日-TCP三次握手四次挥手-插图 【每日阅读】2020年12月02日-TCP三次握手四次挥手](https://www.geekgao.cn/wp-content/themes/justnews/themer/assets/images/lazy.png)
为什么四次挥手?
因为A请求了结束,必须得到一次回应才能认为真的挥手成功了。B请求结束,也必须得到一次A的回应。
而且最后等待2MSL(报文最大生存时间),是为了确保收到B收到了最后一个回应。因为如果B没有收到最后一个回应,会再次发送结束请求,此时还有机会弥补。
![【每日阅读】2020年12月02日-TCP三次握手四次挥手-插图 20201203005517](https://www.geekgao.cn/wp-content/themes/justnews/themer/assets/images/lazy.png)
TCP状态机
![【每日阅读】2020年12月02日-TCP三次握手四次挥手-插图 20201203005454](https://www.geekgao.cn/wp-content/themes/justnews/themer/assets/images/lazy.png)
在这个图中,加黑加粗的部分,是上面说到的主要流程,其中阿拉伯数字的序号,是连接过程中的顺序,而大写中文数字的序号,是连接断开过程中的顺序。加粗的实线是客户端 A 的状态变迁,加粗的虚线是服务端 B 的状态变迁。
原创文章,作者:geekgao,如若转载,请注明出处:https://www.geekgao.cn/archives/2728