三次握手的目的
建立可靠通信,双方确认自己与对方发送与接收是正常的。
第一次握手
服务端确认自己接收正常,客户端发送正常
第二次握手
客户端确认自己发送接收正常,服务端发送接收正常。
服务端确认自己接收正常,客户端发送正常
第三次握手
客户端确认自己发送接收正常,服务端接收发送正常
服务端确认自己发送接收正常,客户端发送接收正常
三次握手过程
第一次握手
主机A通过向主机B 发送一个含有同步序列号的标志位的数据段给主机B,向主机B 请求建立连接,通过这个数据段, 主机A告诉主机B 两件事:我想要和你通信;你可以用哪个序列号作为起始数据段来回应我。
第二次握手
主机B 收到主机A的请求后,用一个带有确认应答(ACK)和同步序列号(SYN)标志位的数据段响应主机A,也告诉主机A两件事:我已经收到你的请求了,你可以传输数据了;你要用那个序列号作为起始数据段来回应我
第三次握手
主机A收到这个数据段后,再发送一个确认应答,确认已收到主机B 的数据段:"我已收到回复,我现在要开始传输实际数据了,这样3次握手就完成了,主机A和主机B 就可以传输数据了。
为什么要四次挥手
因为是双方彼此都建立了连接,因此双方都要释放自己的连接,A向B发出一个释放连接请求,他要释放链接表明不再向B发送数据了,此时B收到了A发送的释放链接请求之后,给A发送一个确认,A不能再向B发送数据了,它处于FIN-WAIT-2的状态,但是此时B还可以向A进行数据的传送。此时B向A 发送一个断开连接的请求,A收到之后给B发送一个确认。此时B关闭连接。A也关闭连接。
四次挥手过程
第一次挥手
当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求 ;
第二次挥手
主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1;
第三次挥手
由B 端再提出反方向的关闭请求,将FIN置1 ;
第四次挥手
主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束.。