三次握手
来源:互联网 发布:php trim 弱等于 编辑:程序博客网 时间:2024/05/16 10:27
三次握手是TCP建立连接的方式,这种方式有助于建立可靠的连接。第一次握手是由客户端发送握手信号到服务端,第二次握手是服务端接收到客户端发来的握手信号后发送确认应答和握手信号到客户端,第三次握手是客户端接收到服务端发送的确认应答和握手信号发送后发送确认应答到服务端。简单而言,第一次握手后服务端知道客户端能发,第二次握手后客户端知道服务端能发和收,第三次握手后服务端知道客户端能收,即成功的三次握手后双方都知道对方可以发和收。这样可靠的TCP连接就建立起来了,客户端和服务端就可以互相发送数据了。
为什么是三次握手而不是两次握手呢,两次握手不是根据节省建立连接的时间吗?实际上,三次握手是非常有必要的。假设是两次握手,客户端向服务端发送请求报文如果在某结点阻塞了,客户端会再次向服务端发送请求,那么服务端会先后收到两个请求并开启两个连接,但实际上客户端只想有一次请求,而服务端却有两个相应,极端的条件下,客户端发送多次请求,但服务端却建立多个响应,这将大大浪费服务端资源。而如果是三次握手,服务端收到请求后响应客户端,客户端不认为这个请求有必要就不会确认请求,服务端自然也不会建立连接,就不会造成资源浪费了。至于为什么不是四次握手建立连接,三次握手就可以满足需求了,就没必要再多一次了。
阅读全文