三次握手与四次挥手

       建立TCP连接需要三次握手,断开需要四次挥手。

       (一)建立TCP/IP连接的三次握手

1、客户主机向服务器发送连接请求报文:SYN=1,seq=x;

2、服务器端接收连接请求后回复ACK报文,并为这次连接分配资源:SYN=1,seq=y,ack = x+1;

3、客户端接收到 ACK报文后也向服务器发送ACK报文,并分配资源:SYN=0,seq=x+1,ack = y+1;

这样一个TCP/IP连接就建立了;

        (二)断开连接的四次挥手(中断连接 端可能是client端,也可能是 server端):

         假设client端发起中断连接请求:

1、client 端向server端发送中断请求:发送FIN 报文

2、server端接收到FIN报文后,如果你还有数据没有发送完成,就不用急着 关闭 Socket,可以继续发送数据,所以你先发送ACK,告诉client端你的FIN请求我收到了,但是我还没有准备好,请你继续等我的消息;

这时client就进入FIN_WAIT状态,继续等待Server 端的FIN 报文;

3、当Server确认数据已经发送完成,则向client端发送FIN 报文,client端接收到FIN报文后,就知道可以关闭了,但是为了安全性,怕Server端不知道要关闭,所以 发送ACK进入TIME_WAIT状态,如果Server端没有收到则进行重传

4、Server端接收到 ACK后就知道可以断开连接了,如果client端等待了2MSL后依然没有收到回复,则证明Server端已经 正常关闭,这时候 client端 也会关闭,所有的资源(包括端口号)都被释放;

这样一个TCP/IP连接就关闭了

猜你喜欢

转载自taoyongpan.iteye.com/blog/2395735