TCP三次握手和四次挥手(一)

(一)什么是三次握手?

①为什么要三次握手?

     建立TCP需要三次握手才能建立

②过程:

    1.Client端发送连接请求报文,Server端接受连接后回复ACK报文并为连接分配资源; 2.Client端收到ACK报文后也向Server端发送ACK报文,并分配资源【这样TCP连接就建立了】

 图解:

通俗描述3次握手就是:

A对B说:我的序号是x,我要向你请求连接;(第一次握手,发送SYN包,然后进入SYN-SEND状态)

B听到之后对A说:我的序号是y,期待你下一句序号是x+1的话(意思就是收到了序号为x的话,即ack=x+1),同意建立连接。(第二次握手,发送ACK-SYN包,然后进入SYN-RCVD状态)

A听到B说同意建立连接之后,对A说:与确认你同意与我连接(ack=y+1,ACK=1,seq=x+1)。(第三次握手,A已进入ESTABLISHED状态)

B听到A的确认之后,也进入ESTABLISHED状态。

(二)什么是四次挥手?

①为什么需要四次挥手?

     断开TCP连接,需要四次挥手

②过程:

   中断连接可以是Client端发起:

   也可以是Server端发起:

   图解:

描述四次挥手就是:

1.A与B交谈结束之后,A要结束此次会话,对B说:我要关闭连接了(seq=u,FIN=1)。(第一次挥手,A进入FIN-WAIT-1)

2.B收到A的消息后说:确认,你要关闭连接了。(seq=v,ack=u+1,ACK=1)(第二次挥手,B进入CLOSE-WAIT)

3.A收到B的确认后,等了一段时间,因为B可能还有话要对他说。(此时A进入FIN-WAIT-2)

4.B说完了他要说的话(只是可能还有话说)之后,对A说,我要关闭连接了。(seq=w, ack=u+1,FIN=1,ACK=1)(第三次挥手)
5.A收到B要结束连接的消息后说:已收到你要关闭连接的消息。(seq=u+1,ack=w+1,ACK=1)(第四次挥手,然后A进入CLOSED)
6.B收到A的确认后,也进入CLOSED。

(三)整个过程:

原文地址:https://www.cnblogs.com/not-alone/p/8476079.html