简单的理解,可以把客户机当作A,服务器当作B。
A要给B建立连接的三次握手:
A说:B啊,我想跟你建立连接♂
B说:好嘞,那你发吧
A说:那我开始发了啊
A:哒哒哒开始发数据
为什么是三次?两次可以不?四次可以不?
如果是两次:
A:B啊,我想跟你建立连接~
却因为网络延迟没有及时发送到B那里。
过了一会儿,A又发起连接请求,这次成功建立连接并传输了数据。
随后,A第一次发的请求在延迟了N年之后到达了B那里,B在回复A之后就完成了两次握手开始等A发数据,但A已经拿到了数据所以不会再理B,于是B一直处于等待状态,这样就浪费了主机资源。
如果是四次呢?
三次就够了,再增加握手次数并不能显著提高可靠性,没有必要。
A跟B取消连接的四次挥手:
A说:B啊,我的数据请求发完了
B说:好的,我看看我这里还有没有没发完的,有的话发给你
B说:我这里的数据也发完了,可以关闭连接了
A说:好,我一会就关
B收到回复关闭连接
2*MSL(最长报文段寿命)之后A关闭连接
为什么A要等2MSL再关闭连接?
一:如果第四次请求丢失了,B迟迟没有收到第四次请求,那么B就会再发一次第三次请求,如果刚才A没有等待2MSL而是直接关闭了连接,那么A就收不到再次发送的第三次请求,而B就会一直发请求。
如果A等待了2MSL,就会收到B再次发送的请求从而回复。
二:在2MSL时间内,消除本次连接产生的所有报文段,这样新的连接中就不会出现旧请求,防止了“已失效的连接请求”的出现。
图解:
握手:

本文详细介绍了HTTP连接管理中的三次握手和四次挥手过程,旨在理解为何需要三次握手来建立连接以及四次挥手来断开连接。通过示例解释了握手和挥手过程中可能遇到的问题及解决方案,确保连接的可靠性和资源的有效利用。
最低0.47元/天 解锁文章
1362

被折叠的 条评论
为什么被折叠?



