这段时间,有在做网络方面的日志收集工作,所以就再次拿起了http相关的知识,其中就有TCP连接的三次握手和四次挥手,为了加深了解,随记录下来。
HTTP:
要说TCP连接,可能不熟悉,但说起http,应该都有所了解,http是一种建立在TCP连接基础上的通信协议,要做一次http请求,首先就是要建立TCP连接,TCP连接是全双工通道,然后在通道上交互满足http协议的数据,数据交互完成关闭TCP连接,这其中,数据的交互都是建立在TCP通道上的,那么TCP通道是如何建立以及关闭的呢,这就要说到TCP连接的三次握手和四次挥手了。
TCP连接的三次握手:
要建立一条全双工的数据通道,首先确认通道双方的数据收发能力是必须的,而三次握手,做的正是这个校验的操作,这里以一个简单的图文描述下:
第一次握手:由客户端向服务端发起连接请求,服务端收到客户的请求,确认了客户端的消息发送是没有问题的。
第二次握手:由服务端向客户端发送可以建立连接的确认消息,客户端收到后,即可确认服务端的收发都是正常的。
第三次握手:由客户端向服务端发送确认消息,服务端收到后,即确认了客户端的接收能力是正常的,至此可以愉快的开始交流了。
TCP连接的四次挥手:
数据交互完毕,自然是要关闭通道,节省资源的,但关闭通道的前提是双方都要确认对方已经没有数据要发送了,所以就有了四次挥手的操作,同样,以图文描述(由于通道关闭可以是任何一方发起,这里把连接的两端都看成客户端):
第一次挥手:由客户端1通知客户端2,己方已经没有消息要发送给客户端2了;
第二次挥手:由客户端2通知客户端1,已收到通知;
第三次挥手:由客户端2通知客户端1,己方已经没有消息要发送给客户端1了;
第四次挥手:由客户端1通知客户端2,已收到通知;
至此:客户端1、2都已经确认双方不会再发送消息,随关闭通道。
总结:
1、从三次握手和四次挥手来看,他们都是为了保证通道建立和断开的可靠及安全性,缺少任何一次,都会导致双方无法确认对方的状态,无法正确的开启和关闭连接;
2、四次挥手为什么不把第二次和第三次合并成一次,因为第二次是响应第一次挥手,第三次是客户端2通知客户端1,己方已经没有消息发送了,但是在第二次挥手和第三次挥手中间,客户端2还是可以向客户端1发送数据的,所以第二次和第三次无法合并。
如果喜欢我的文章就关注我吧!