为什么要握手三次?
为了满足"在不可靠信道上可靠地传输信息"这一需求所导致的
为什么要握手第三次?
为了防止无效的连接请求报文到达服务器而引起错误
为什么要挥手第四次?
确保数据能够完整传输。
三次握手,四次挥手?
三次握手:
第一次,客户端向服务器发送连接请求。表示我想传输数据了,行吗?
第二次,服务器收到客户端的连接请求,同意客户端的请求,并发送确认。表示我收到你的要求了,可以传输数据。
第三次,客户端收到服务器的同意确认,与服务器建立连接。表示你同意了,那我们来传数据吧。
SYN=1:请求建立连接
ACK=0:请求状态
ACK=1:响应状态
为什么第三次的SYN=0?因为前两次其实连接已经建立好了,所以当然SYN第三次为0,那么为什么还有第三次,这就是上面的回答了,为了防止无效的连接请求报文到达服务器而引起错误,如果只有两次,就无法确认是否在中间的过程发生了丢包,导致服务器实际上未收到连接请求,这种情况下传输数据就会引起错误。
四次挥手?
第一次,客户端向服务器发送断开连接请求。表示我不想传输数据了,行吗?
第二次,服务器收到客户端的断开连接请求,同意请求,但还有数据没传完,所以只告诉客户端收到了请求。表示你听到了我的请求,但没表示赞同,而是在传数据。
第三次,客户端收到服务端收到消息的通知,等待服务器的同意消息,服务器传完数据,告诉客户端要断开连接了。表示你在等我的同意消息,等我传完数据,我告诉你,我现在要断开了。
第四次,客户端收到服务器的断开连接消息,告诉服务器已收到断开连接请求,服务器收到消息后立刻关闭。表示你听到了我的断开消息,我知道后和你断开。